1. Си / Говнокод #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)
  2. Си / Говнокод #8803

    +139

    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
    /*
     * HttpReceiveRequestEntityBody
     */
    static ULONG __cdecl
    HttpReceiveRequestEntityBody_called(BOOL carry_on,
                                        DWORD ret_addr,
                                        HANDLE ReqQueueHandle,
                                        HTTP_REQUEST_ID RequestId,
                                        ULONG Flags,
                                        PVOID pBuffer,
                                        ULONG BufferLength,
                                        PULONG pBytesReceived,
                                        LPOVERLAPPED pOverlapped)
    {
        if (GetCurrentThreadId() != cur_thread_id && ReqQueueHandle == cur_req_queue)
        {
            carry_on = FALSE;
            return ERROR_IO_PENDING; /* evil evil */
        }
    
        return 0;
    }

    нет что бы что то путнее в комментарии написать :)

    63F45EF45RB65R6VR, 12 Декабря 2011

    Комментарии (6)
  3. Си / Говнокод #8802

    +137

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    #define MAKEPTR(p,o) (LPVOID) ( (DWORD)p + (DWORD)o )
    #define WRITE_OPCODE(pCode, x) \
       res = WriteProcessMemory( hProcess, pCode, &x, sizeof(x), &nWritten ); \
       if( !res ) return FALSE; \
       pCode = MAKEPTR(pCode,sizeof(x))
    #define WRITE_DWORD(pCode, x) \
       res = WriteProcessMemory( hProcess, pCode, &x, sizeof(x), &nWritten ); \
       if( !res ) return FALSE; \
       pCode = MAKEPTR(pCode,sizeof(x))

    макрос "сюрприз" хоть бы назвал яснее типа
    WRITE_OPCODE_AND_RETURN_VAL_IF_FAIL
    но чем так писать лучше уж условие не прятать

    http://ospy.googlecode.com/svn/!svn/bc/2/trunk/Agent/hooking.cpp

    63F45EF45RB65R6VR, 12 Декабря 2011

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

    +138

    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
    int my_number = count-1;
    	int addition_size =18;
    	if(sock >= 0)
    	{
    		while(1)
    		{
    			bytes_read = recv(sock, buf, 1024, 0);
    			if(bytes_read <= 0) break;
    			send_buf[0]='r';
    			send_buf[1]='e';
    			send_buf[2]='c';
    			send_buf[3]='e';
    			send_buf[4]='i';
    			send_buf[5]='v';
    			send_buf[6]='e';
    			send_buf[7]='d';
    			send_buf[8]=' ';
    			send_buf[9]='m';
    			send_buf[10]='e';
    			send_buf[11]='s';
    			send_buf[12]='s';
    			send_buf[13]='a';
    			send_buf[14]='g';
    			send_buf[15]='e';
    			send_buf[16]=':';
    			send_buf[17]=' ';
    			
    			for(i=addition_size;i<addition_size+bytes_read;i++)
    				send_buf[i]=buf[i-addition_size];
    			for(i=0;i<count;i++)
    				if(i != my_number)
    					send(active_sockets[i], send_buf, bytes_read+addition_size, 0);
    		}
    		close(sock);
    		for(i=my_number;i<count-1;i++)
    			active_sockets[i]=active_sockets[i+1];
    		count--;
    	}

    наша студентота 3курса :(

    null, 10 Декабря 2011

    Комментарии (19)
  5. Си / Говнокод #8700

    +113

    1. 1
    if (args.first ? 1 : 0 + args.second ? 1 : 0 + args.third ? 1 : 0 > 1)

    vayerx, 01 Декабря 2011

    Комментарии (12)
  6. Си / Говнокод #8696

    +138

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    вот так выглядит загрузка DLL у людей, которые не знают про tchar
    
    const char string [] = "right_dll.dll";
    LPCWSTR put = (LPCWSTR) string;
    HINSTANCE my_dll = LoadLibraryEx (put, 0, DONT_RESOLVE_DLL_REFERENCES);

    Kortez, 01 Декабря 2011

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

    +106

    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
    #include "stdafx.h"
    #include "math.h"
    #include "stdio.h"
    #include "conio.h"
     
    int main()
    { 
    int p;
    if (p==1 || p==21 || p==31 || p==41 || p==51 || p==61 || p==71 
    || p==81 || p==91   || p==101 || p==121 || p==131 || p==141 || p==151 
    || p==161 || p==171 || p==181 || p==191 || p==201 || p==221 || p==231 
    || p==241 || p==251 || p==261 || p==271 || p==281 || p==291 || p==301
    || p==321 || p==331 || p==341 || p==351 || p==361 || p==371 || p==381
    || p==391 || p==401 || p==421 || p==431 || p==451 || p==461 || p==471 
    || p==481 || p==491 || p==501 || p==521 || p==531 || p==541 || p==551 
    || p==561 || p==571 || p==581 || p==591 || p==601 || p==621 || p==631
    || p==641 || p==651 || p==661 || p==671 || p==681 || p==691 || p==701 
    || p==721 || p==731 || p==741 || p==751 || p==761 || p==771 || p==781 
    || p==791 || p==801 || p==821 || p==831 || p==841 || p==851 || p==861
    || p==871 || p==881 || p==891 || p==901 || p==921 || p==931 || p==941
    || p==951 || p==961 || p==971 || p==981 || p==991 )
    printf("Hruvna\n");
    else 
    {
    if (p>1 && p<5 || p>21 && p<25 || p>31 && p<35 
    || p>41 && p<45 || p>51 && p<55 || p>61 && p<65
    || p>71 && p<75 || p>81 && p<85 || p>91 && p<95
    ||p>101 && p<105 || p>121 && p<125 || p>131 && p<135
    ||p>141 && p<145 || p>151 && p<155 || p>161 && p<165
    ||p>171 && p<175 || p>181 && p<185 || p>191 && p<195
    ||p>201 && p<205 || p>211 && p<215 || p>221 && p<225
    ||p>231 && p<235 || p>241 && p<245 || p>251 && p<255
    ||p>261 && p<265 || p>271 && p<275 || p>281 && p<285
    ||p>291 && p<295 || p>301 && p<305 || p>311 && p<315
    ||p>321 && p<325 || p>331 && p<335 || p>341 && p<345
    ||p>351 && p<355 || p>361 && p<365 || p>371 && p<375
    ||p>381 && p<385 || p>391 && p<395 || p>401 && p<405
    ||p>411 && p<415 || p>421 && p<425 || p>431 && p<435
    ||p>441 && p<445 || p>451 && p<455 || p>461 && p<465
    ||p>471 && p<475 || p>481 && p<485 || p>491 && p<495
    ||p>501 && p<505 || p>511 && p<515 || p>521 && p<525
    ||p>531 && p<535 || p>541 && p<545 || p>551 && p<555
    ||p>561 && p<565 || p>571 && p<575 || p>581 && p<585
    ||p>591 && p<595 || p>601 && p<605 || p>611 && p<615
    ||p>621 && p<625 || p>631 && p<635 || p>641 && p<645
    ||p>651 && p<655 || p>661 && p<665 || p>671 && p<675
    ||p>681 && p<685 || p>691 && p<695 || p>701 && p<705
    ||p>711 && p<715 || p>721 && p<725 || p>731 && p<735
    ||p>741 && p<745 || p>741 && p<745 || p>751 && p<755
    ||p>761 && p<765 || p>771 && p<775 || p>781 && p<785
    ||p>791 && p<795 || p>801 && p<805 || p>811 && p<815
    ||p>821 && p<825 || p>831 && p<835 || p>841 && p<845
    ||p>851 && p<855 || p>861 && p<865 || p>871 && p<875
    ||p>881 && p<885 || p>891 && p<895 || p>901 && p<905
    ||p>911 && p<915 || p>921 && p<925 || p>931 && p<935
    ||p>941 && p<945 || p>951 && p<955 || p>961 && p<965
    ||p>971 && p<975 || p>981 && p<985 || p>991 && p<995)
    printf("Hryvni\n");
    }
     
    if (p>1000)
    printf("Error\n");
    else 
    printf("Hryven\n");
    getch();
    return 0;
    }

    Цитата автора: "Дано натуральное число s (s <= 1000), определяющий денежную сумму (в гривнах). Дать для этого числа название «гривна», «гривны» или «гривен». Составил программу а она не работает" Оригинал здесь: http://www.cyberforum.ru/cpp-beginners/thread258801.html?uri=/cpp-beginners/thread258801.html

    Fenom, 30 Ноября 2011

    Комментарии (33)
  8. Си / Говнокод #8689

    +111

    1. 1
    2. 2
    3. 3
    for(x = 1; x; x += x)
      if(!(((e*x)%m)/t))
      { x = d; break; }

    Недавно прислали с вопросом: "Тут что-то поломалось, надо исправить... Поможешь?"

    TarTar, 30 Ноября 2011

    Комментарии (45)
  9. Си / Говнокод #8650

    +102

    1. 1
    #define HESHELME_BESHELME(x, y) (((x)>0)<<2 | ((y)>0)<<1 | ((x) > ((x)*(y) > 0 ? (y) : -(y))))

    двумерное "квантование" точки

    orion, 26 Ноября 2011

    Комментарии (35)
  10. Си / Говнокод #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)