1. bash / Говнокод #5674

    −135

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    parsemask() {
            echo -n "$@" | tr -d "\n" | sed -e "s#%%#\n#g" | sed -e "s#%C#$CLUSTER#g" | sed -e "s#%R#$XENXROOT#g" | tr "\n" "%";
            return;
    }
    
    for pvar in STATUSPATH LOGPATH DRBDLOGPATH XENXPREFIX CLUSTERSPATH; do
            eval R${pvar}="`parsemask "$(eval echo \\\$${pvar})"`"
    done

    Реализация разыменовки и замены в цикле, для того, чтобы для каждой переменной (например LOGPATH="%R/var/log/xenx/%C.log") определилась соответствующая переменная с произведёнными подстановками (например RLOGPATH="/usr/local/xenx/var/log/xenx/stormrage.log").

    xaionaro, 14 Февраля 2011

    Комментарии (3)
  2. C++ / Говнокод #5673

    +169

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    if (s<10)
            {
            s++;
            }
            if (s==10)
            {
            ss++; s=0;
            }
            if (ss==6 && s==0)
            {
            m++; ss=0; s=0;
            }
            if (m==10)
            {
            mm++; m=0; ss=0; s=0;
            }
            if (mm==6 && m==0)
            {
            h++; mm=0; m=0; ss=0; s=0;
            }
            if (h==10)
            {
            hh++; h=0; mm=0; m=0; ss=0; s=0;
            }
            if (hh==2 && s==0)
            {

    qbasic, 14 Февраля 2011

    Комментарии (13)
  3. C++ / Говнокод #5672

    +146

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    void CDAMN::ControlDAMNAmount(DWORD newValue)
    {
    	if(newValue != 0)
    		controlDAMNAmount = newValue;
    }
    
    DWORD CDAMN::ControlDAMNAmount()
    {
    	return controlDAMNAmount;
    }

    Автор тот же
    Две функции с одним именем. Одна изменяет внутреннее поле (член класса)- другая возвращает его значение. Использовать приставки get_ и set_ недосуг как-то. Да и называть внутренние переменные класса так, чтобы было понятно, что они не глобальные (с приставкой “m_”) тоже облом. Хайтек-шмайтек…

    ShuraKotov, 14 Февраля 2011

    Комментарии (30)
  4. PHP / Говнокод #5671

    +162

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    public static function create_folder ( $path, $rights = self::default_rights )
    	{
    		$result = true;
    		// Получаем список папок
    		$folders = explode( DIRECTORY_SEPARATOR, trim( self::get_absolute_path( $path ), DIRECTORY_SEPARATOR ) );
    		$exists = true;
    		// Ищем существующую папку
    		while ( $exists && sizeof( $folders ) )
    		{
    			$exists_folder[] = array_shift( $folders );
    			$exists = realpath( implode( DIRECTORY_SEPARATOR, $exists_folder ) );
    		}
    		if ( !file_exists( implode( DIRECTORY_SEPARATOR, $exists_folder ) ) )
    		{
    			array_unshift( $folders, array_pop( $exists_folder ) );
    		}
    		$parent = implode( DIRECTORY_SEPARATOR, $exists_folder );
    		unset( $exists_folder );
    		// поочередно создаем папки
    		foreach ( $folders as & $folder )
    		{
    			$parent .= DIRECTORY_SEPARATOR . $folder;
    			$result = mkdir( $parent, $rights );
    		}
    		clearstatcache( );
    		return $result;
    	}

    Вот что значит не знать про необязательный аргумент recursive у mkdir...

    GhOsTMZ, 14 Февраля 2011

    Комментарии (41)
  5. bash / Говнокод #5670

    −142

    1. 1
    rm -r * .tmp

    Вот что бывает, когда ранним солнечным весенним днем вошел в систему под рутом и в консольную команду затесался один лишний пробел...

    Говногость, 14 Февраля 2011

    Комментарии (15)
  6. Pascal / Говнокод #5668

    +107

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    procedure proc(a, b: integer);
    begin
    end;
    
    proc(1, 2,); // лишняя запятая после 2  !!!!11

    на Delphi7 компилится и работает!!! Я в шокенах, 8 лет на Делфи и не знал...

    StriderMan, 14 Февраля 2011

    Комментарии (47)
  7. Java / Говнокод #5667

    +146

    1. 1
    2. 2
    this.dbX[i] = (rnd.nextInt() & 1) == 0 ? 1 : -1;
    this.dbY[i] = (rnd.nextInt() & 1) == 0 ? 1 : -1;

    оригинальный способ получить случайно 1 или -1.

    Кстати, а как делаете вы?

    Lure Of Chaos, 14 Февраля 2011

    Комментарии (40)
  8. C++ / Говнокод #5666

    +165

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    class cSG5DataException ... {
        cSG5DataException(CTstatus Status, CTsymbol Error,
                          CTsymbol SubError, std::string Description, ...)
       {
         /* форматирование сообщения */
       }
       /* виртуальный деструктор наличиствует */
    };
    
    class cExcKVSDuplicateKey : public cSG5DataException  {
     /* пусто */
    };
    
    /* код */
    
        throw (cExcKVSDuplicateKey*) new cSG5DataException( CT_statusFail,
                                                            CT_errorObjectExists,
                                                            CT_errorObjectExists,
         "cKVSet_STL_map::insert( CTint k, Value& v ), %d is already in the map",k);

    вот так хитро народ обходит проблему писания конструкторов. темплейт фактори функцию сделать не догадались. но С-style конверсию типов - пожалуйста. мне честно говоря и сложно то себе представить что это как-то работать может. смена типа поинтера то на тип объекта не влияет.

    Dummy00001, 14 Февраля 2011

    Комментарии (2)
  9. Pascal / Говнокод #5665

    +103

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    glpushmatrix;
    if ((commandflat=2)and((commandaxis=2) or(commandaxis=3)))or((commandflat=1)and(commandaxis=1)) then
     glrotatef(faza,rotation[0],rotation[1],rotation[2]);
    
      glcolor3f(kubcol[Y[2,1,1]].R,kubcol[Y[2,1,1]].G,kubcol[Y[2,1,1]].B);
     glbegin(gl_quads);
      glvertex3f(-1.5,1.5,1.5);
      glvertex3f(-1.5,1.5,0.5);
      glvertex3f(-0.5,1.5,0.5);
      glvertex3f(-0.5,1.5,1.5);
     glend;
     glcolor3f(kubcol[X[1,1,1]].R,kubcol[X[1,1,1]].G,kubcol[X[1,1,1]].B);
     glbegin(gl_quads);
      glvertex3f(-1.5,1.5,1.5);
      glvertex3f(-1.5,1.5,0.5);
      glvertex3f(-1.5,0.5,0.5);
      glvertex3f(-1.5,0.5,1.5);
     glend;
     glcolor3f(kubcol[Z[2,1,1]].R,kubcol[Z[2,1,1]].G,kubcol[Z[2,1,1]].B);
     glbegin(gl_quads);
      glvertex3f(-1.5,1.5,1.5);
      glvertex3f(-0.5,1.5,1.5);
      glvertex3f(-0.5,0.5,1.5);
      glvertex3f(-1.5,0.5,1.5);
     glend;
     glcolor3f(0.5,0.5,0.5);
     glbegin(gl_quads);
      glvertex3f(-1.5,0.5,1.5);
      glvertex3f(-1.5,0.5,0.5);
      glvertex3f(-0.5,0.5,0.5);
      glvertex3f(-0.5,0.5,1.5);
     glend;
     glcolor3f(0.5,0.5,0.5);
     glbegin(gl_quads);
      glvertex3f(-0.5,1.5,1.5);
      glvertex3f(-0.5,1.5,0.5);
      glvertex3f(-0.5,0.5,0.5);
      glvertex3f(-0.5,0.5,1.5);
     glend;
     glcolor3f(0.5,0.5,0.5);
     glbegin(gl_quads);
      glvertex3f(-1.5,1.5,0.5);
      glvertex3f(-0.5,1.5,0.5);
      glvertex3f(-0.5,0.5,0.5);
      glvertex3f(-1.5,0.5,0.5);
     glend;
    glpopmatrix;
    ///////112

    Захотел как то кубик рубика накодить, это фрагмент модуля из 1214 строк который выводит 26 кубиков. Цвет лицевых граней берется из массива, остальные - серые.

    Dent, 14 Февраля 2011

    Комментарии (11)
  10. Perl / Говнокод #5664

    −119

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    sub dopprobelz # функция дополнения строки нулями вначале
            {
                my($str)=@_[0];
                my($len)=@_[1]; my $delta=$len-length($str);
                my $hwost='';
                for (my($a)=0; $a<$delta; $a++) {$hwost=$hwost.'0';};
                $str=$hwost.$str; return $str;
            };
     
    ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time());
    $RequestN=(1900+$year).dopprobelz($mon, 2);
    $RequestN=$RequestN.dopprobelz($mday, 2).dopprobelz($hour, 2);
    $RequestN=$RequestN.dopprobelz($min, 2).dopprobelz($sec, 2).dopprobelz($sec, 2);

    Дополняем время и дату ведущими нулями, где это требуется

    Мистер Хэнки, 13 Февраля 2011

    Комментарии (6)