1. Список говнокодов пользователя Dummy00001

    Всего: 94

  2. Си / Говнокод #8827

    +104

    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
    // старый "медленый" код, проверяем размеры по именам файлов (последний параметр):
    
      if((checkFileLimits(_logTimeLimit,_logSizeLimit,_logStartTime,_traceFile1)>0) ||
         (checkFileLimits(_logTimeLimit,_logSizeLimit,_logStartTime,_traceFile2)>0) ||
         (checkFileLimits(_logTimeLimit,_logSizeLimit,_logStartTime,_traceFile3)>0) ||
         (checkFileLimits(_logTimeLimit,_logSizeLimit,_logStartTime,_traceFile) >0) )
    
    // новый "быстрый" код, проверяем размеры по файл хэндлам:
    
      FILE* fp1 = fopen(_traceFile1, "r");
      FILE* fp2 = fopen(_traceFile2, "r");
      FILE* fp3 = fopen(_traceFile3, "r");
      FILE* fp4 = fopen(_traceFile, "r");
      
      if((checkFileLimitsHandle(_logTimeLimit,_logSizeLimit,_logStartTime,fp1)>0) ||
         (checkFileLimitsHandle(_logTimeLimit,_logSizeLimit,_logStartTime,fp2)>0) ||
         (checkFileLimitsHandle(_logTimeLimit,_logSizeLimit,_logStartTime,fp3)>0) ||
         (checkFileLimitsHandle(_logTimeLimit,_logSizeLimit,_logStartTime,fp4) >0) )
             setTraceFile(NULL);
    
      fclose(fp1);
      fclose(fp2);
      fclose(fp3);
      fclose(fp4);

    наши бенчмаркеры чего-то там тестировали (на NFS!!!) и нашли что некоторые модули/библиотеки используют stat() вместо fstat()/ftell() для определения размера лог/трейс файлов (для ротации этих файлов). stat() берет как параметр не хэндл, а имя файла и поэтому дороже с точки зрения производительности. в особенности на NFS. ну начальник R&D и постановил: все stat()ы заменить на fstat()/ftell(). сказано - сделано. кусок сверху из модуля который пользуется внешней либой для логов и трейсов и у которого доступа к хэндлам нету. но герои не ищут легких путей: открываем файлы, получаем хэндлы, проверяем оптимальным образом размер файлов по хэндлам, закрываем файлы, гатова!

    Dummy00001, 14 Декабря 2011

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

    +997

    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
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    class fileOutBuf : public streambuf
    {
    public:
        // ...
        typedef char        char_type;
        typedef int         int_type;
        typedef int         streamsize;
        // ...
        int printf( const char * fpFormat, ... );
    
        inline int vprintf( const char * fpFormat, va_list fvaList )
        {
            if ( NULL != dpFileDescriptor )
            {
                if ( true == sdVerboseFlag  && false == dSkipVerboseOutput)
                    vfprintf( dpVerboseFileDescriptor, fpFormat, fvaList );
    
                return vfprintf( dpFileDescriptor, fpFormat, fvaList );
            }
            else
            {
                if ( NULL != dpOutputFuncPtr )
                    return (*dpOutputFuncPtr)( fpFormat, fvaList );
            }
            return 0;
        }
        // ....
        virtual int_type overflow( int_type c = EOF );
        virtual streamsize xsputn( const char_type *s, streamsize n );
        // ....
    };
    
    int fileOutBuf::printf( const char * fpFormat, ... )
    {
        va_list lvaList;
        int lRet;
    
        va_start( lvaList, fpFormat );
    
        if ( NULL != dpFileDescriptor )
        {
            if ( true == sdVerboseFlag  && false == dSkipVerboseOutput)
                vfprintf( dpVerboseFileDescriptor, fpFormat, lvaList );
    
            lRet = vfprintf( dpFileDescriptor, fpFormat, lvaList );
        }
        else
        {
            if ( NULL != dpOutputFuncPtr )
                lRet = (*dpOutputFuncPtr)( fpFormat, lvaList );
        }
    
        va_end( lvaList );
    
        return lRet;
    }
    
    fileOutBuf::int_type fileOutBuf::overflow( int_type c )
    {
        if ( NULL != dpFileDescriptor )
        {
            if ( true == sdVerboseFlag  && false == dSkipVerboseOutput)
                fputc( c, dpVerboseFileDescriptor );
    
            return fputc( c, dpFileDescriptor );
        }
        else
            return fileOutBuf::printf( "%c", c );
    }
    
    fileOutBuf::streamsize fileOutBuf::xsputn( const fileOutBuf::char_type *s, fileOutBuf::streamsize n )
    {
        if ( NULL != dpFileDescriptor )
        {
            if ( true == sdVerboseFlag  && false == dSkipVerboseOutput)
                fwrite( s, sizeof( char_type ), n, dpVerboseFileDescriptor );
    
            return fwrite( s, sizeof( char_type ), n, dpFileDescriptor );
        }
        else
            return fileOutBuf::printf( "%*s", n, s );
    }

    нетривиальная капипаста или делаем из мухи слона.

    ЗЫ после удаления всей капипасты, от класа в целом осталось что-то около 50 строк.

    Dummy00001, 06 Декабря 2011

    Комментарии (51)
  4. Си / Говнокод #8645

    +106

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    if ( 0 == strcmp( executable, "" ) ||
         0 == strcmp( executable, "NONE" ) ||
         0 == strcmp( executable, "none" ) ||
         0 == strcmp( executable, "None" )  )
    {
    /* ... */

    ... ровно так документация и описывает данный параметр: либо пустая строка, либо case-insensitive строка NONE.

    Dummy00001, 25 Ноября 2011

    Комментарии (29)
  5. C++ / Говнокод #8253

    +1005

    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
    memsize =
      strlen("cpy_dta.sh ");
    
    if ( memsize >= 4096 ) {
      sprintf( errMsg, "[%s] - ExecScript string too long", func);
      return -7;
    }
    
    sprintf( args, "cpy_dta.sh " );
    
    if ( 0 != ( rc = ::system ( args ) ) )
    {
      // ...
    }

    просто фейспалм.

    Dummy00001, 20 Октября 2011

    Комментарии (17)
  6. Куча / Говнокод #8240

    +121

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    $ df -k /
    /                      (/dev/vgroot/lvol3     ) :  2083856 total allocated Kb
                                                       1701112 free allocated Kb
                                                        382744 used allocated Kb
                                                            18 % allocation used

    HP-UX. вывод df (disk free) тулзы. почти все тратят минут пять на чтение вывода, пытаясь понять смысл "free allocated" и ту тонкую разницу которая отличает это выражение от "used allocated".

    Dummy00001, 19 Октября 2011

    Комментарии (15)
  7. Си / Говнокод #8202

    +147

    1. 1
    write_ext = ".pgm\0.ppm\0.ppm\0.pam" + colors*5-5;

    из dcraw.c - кладезь вот таких перлов. то ли говнокодер писал - то ли гений. настолько лаконичного кода давно уже не видел.

    http://www.cybercom.net/~dcoffin/dcraw/

    Dummy00001, 15 Октября 2011

    Комментарии (23)
  8. Куча / Говнокод #7799

    +137

    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
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    <table border="0" cellpadding="0" cellspacing="0" width="1000">
                    <tr>
                        <td width="1000" height="160" background="images/up.gif" align="center" valign="middle">
    <ul>
    
                                <ul>
                                    <ul>
                                        <ul>
                                            <ul>
                                                <ul>
                                                    <ul>
                                                        <ul>
                                                            <ul>
                                                                <ul>
    
                                                                    <ul>
                                                                        <ul>
                                                                            <ul>
                                                                                <p align="center">
                                                                                <form action="http://www.google.com/cse" id="cse-search-box" target="_blank">
      <div>
                                                                                            <ul>
                                                                                            <ul>
                                                                                                <ul>
    
                                                                                                    <ul>
                                                                                                        <ul>
                                                                                                            <p><input type="hidden" name="cx" value="partner-pub-6721689618919481:ttrzumsg220" />
        <input type="hidden" name="ie" value="windows-1252" />
        <input type="text" name="q" size="25" />
        <input type="submit" name="sa" value="Search" />
    </p>
                                                                                                        </ul>
                                                                                                    </ul>
    
                                                                                                </ul>
                                                                                            </ul>
                                                                                        </ul>
      </div>
                                                                                </form>
                                                                                <script type="text/javascript" src="http://www.google.com/cse/brand?form=cse-search-box&amp;lang=en">
                                                                                </script>
                                                                                </p>
    
                                                                                <p align="center">
    
                                                                                
    </p>
                                                                            </ul>
                                                                        </ul>
                                                                    </ul>
                                                                </ul>
                                                            </ul>
                                                        </ul>
                                                    </ul>
    
                                                </ul>
                                            </ul>
                                        </ul>
                                    </ul>
                                </ul>
    </ul>
                        </td>                </tr>
                </table>

    из хтмла http://www.izarc.org/

    слегка охренел когда случайно это увидел. параграф (пустой) в середине по центру выравненый улыбнул: т.е. в зачатке кто-то там понимает что есть такая фича как выравнивание. но вот пользоватся ею еще не научился.

    Dummy00001, 07 Сентября 2011

    Комментарии (19)
  9. C++ / Говнокод #7666

    +163

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    /* allocate memory for the extended format buffer */
      extFormat = new char [ strlen( format ) +
                             strlen( "\n" )   +
                             1 ];
    
      if ( (char*)0 != extFormat )
      {
        /* extend format info */
        sprintf ( extFormat, "%s", format );
        strcat  ( extFormat, "\n" );
      }

    из реализации логгера. просто нет слов.

    Dummy00001, 26 Августа 2011

    Комментарии (4)
  10. Си / Говнокод #7241

    +147

    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
    // на сервере:
    typedef struct SRV_time_tag
    {
       int secs;
       int msecs;
    } SRV_time_t;
    
    
    // в клиенте (который издревле использует хидеры сервака):
    typedef struct CLI_time_tag
    {
        int secs;
        int msecs;
    } CLI_time_t;
    
    
    // ... в сервере, посылается клиенту:
    
       gettimeofday( &tv, NULL );
    
       now->secs  = tv.tv_sec;
       now->msecs = tv.tv_usec / 1000;

    велосипеды разные нужны, велосипеды всякие важны. теперь с капипастой!

    Dummy00001, 13 Июля 2011

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

    +159

    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
    void AClass::registerApplication( int pCaller )
    {
      if ( mRegistry == NULL )
      {
        // we will be the first application in registry
        mRegistry = createRegistryElement( pCaller );
      }
      else
      {
        // there are other applications already registered
        // first create registry entry
        Application *lApplication = NULL;
        lApplication = createRegistryElement( pCaller );
    
        // put entry in front
        lApplication->mNext = mRegistry;
        mRegistry = lApplication;
      }
    }

    добавляем новый элемент в односвязный список. mRegister голова списка. кто не видит говна - идти читать матчасть.

    Dummy00001, 22 Июня 2011

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