1. Лучший говнокод

    В номинации:
    За время:
  2. C# / Говнокод #7507

    +143

    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
    public string IsLarge
            {
                get
                {
                    return (txtValue.Style["width"] == "150px").ToString();
                }
                set
                {
                    if (value == true.ToString())
                    {
                        txtValue.Style["width"] = "150px";
                    }
                    else
                    {
                        txtValue.Style["width"] = "65px";
                    }
                }
            }

    Свойство из одного эпического веб-проекта

    daymansiege, 10 Августа 2011

    Комментарии (11)
  3. Assembler / Говнокод #7126

    +143

    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
    cmp bl,1
    	je France_jmp
    	cmp ax,380
    	je Bulgaria_jmp
    	cmp ax,383
    	je Slavonia_jmp
    	cmp ax,385
    	je Croatia_jmp
    	mov bx,400
    	mov dx,440
    	call IfAnd
    	cmp bl,1
    	je Germany_jmp
    	jmp next_s
    USA_jmp: jmp USA
    Grinford_jmp: jmp Grinford
    France_jmp: jmp France
    Bulgaria_jmp: jmp Bulgaria
    Slavonia_jmp: jmp Slavonia
    Croatia_jmp: jmp Croatia
    Germany_jmp: jmp Germany
    
    	next_s:
    	mov bx,450
    	mov dx,459
    	call IfAnd
    	cmp bl,1
    	je Japan_jmp
    	mov bx,460
    	mov dx,469
    	call IfAnd
    	cmp bl,1
    	je Russia_jmp
    	cmp ax,471
    	je Taiwan_jmp
    	cmp ax,474
    	je Estonia_jmp
    	cmp ax,475
    	je Litvia_jmp
    	cmp ax,477
    	jmp next_ss
    
    Japan_jmp: jmp Japan
    Russia_jmp: jmp Russia
    Taiwan_jmp: jmp Taiwan
    Estonia_jmp: jmp Estonia
    Litvia_jmp: jmp Latvia
    Lithuania_jmp: jmp Lithuania
    Philippines_jmp: jmp Philippines
    Ukraine_jmp: jmp Ukraine
    Moldova_jmp: jmp Moldova
    Hongkong_jmp: jmp Hongkong
    Britain_jmp: jmp Britain
    Greece_jmp: jmp Greece
    Cyprus_jmp: jmp Cyprus
    Macedonia_jmp: jmp Macedonia
    Malta_jmp: jmp Malta
    Ireland_jmp: jmp Ireland
    Belgium_jmp: jmp Belgium
    Portugal_jmp: jmp Portugal
    Iceland_jmp: jmp Iceland
    Denmark_jmp: jmp Denmark
    next_ss:
    	je Lithuania_jmp
    	cmp ax,480
    	je Philippines_jmp
    	cmp ax,482
    	je Ukraine_jmp
    	cmp ax,484
    	je Moldova_jmp
    	cmp ax,489
    	je Hongkong_jmp

    Прога для проверки правильности штрих-кодов по контрольной сумме и определение страны-производителя. Про таблицы перехода и near-адресацию конечно в те времена еще не догадывался, только начинал учить асм.
    PS: А интерфейс у нее ничего такой был для ассемблера, правда слизал с NU: http://habrastorage.org/storage1/e4efe022/903c7848/d99f7f4f/33d1ed16.png

    Tronix, 01 Июля 2011

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

    +143

    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
    // find the start and end of the upload file.
    static FILE * _uploadGet(request *wp, unsigned int *startPos, unsigned *endPos) {
       
       FILE *fp=NULL;	
    	struct stat statbuf;	
    	unsigned char c, *buf; 
    	   
    	
    	if (wp->method == M_POST)
    	{
    	   fstat(wp->post_data_fd, &statbuf);
    		lseek(wp->post_data_fd, SEEK_SET, 0);
          
    		printf("file size=%d\n",statbuf.st_size);
    		fp=fopen(wp->post_file_name,"rb");
    		if(fp==NULL) goto error;
    	}
    	else goto error;
    
       
       //printf("_uploadGet\n");
       do
    	{
    		if(feof(fp))
    		{
    			printf("Cannot find start of file\n");
    			goto error;
    		}
    		c= fgetc(fp);
    		if (c!=0xd)
    			continue;
    		c= fgetc(fp);
    		if (c!=0xa)
    			continue;
    		c= fgetc(fp);
    		if (c!=0xd)
    			continue;
    		c= fgetc(fp);
    		if (c!=0xa)
    			continue;
    		break;
    	}while(1);
    	(*startPos)=ftell(fp);
    
       if(fseek(fp,statbuf.st_size-0x200,SEEK_SET)<0) 
          goto error;
    	do
    	{
    		if(feof(fp))
    		{
    			printf("fmmgmt: Cannot find end of file\n");
    			goto error;
    		}
    		c= fgetc(fp);
    		if (c!=0xd)
    			continue;
    		c= fgetc(fp);
    		if (c!=0xa)
    			continue;
    		c= fgetc(fp);
    		if (c!='-')
    			continue;
    		c= fgetc(fp);
    		if (c!='-')
    			continue;
    		break;
    	}while(1);
    	(*endPos)=ftell(fp);
    
       return fp;
    error:
       return NULL;
    }

    Вот так вот китайцы парсят MIME при загрузке прошивки в роутер.

    SadKo, 12 Июня 2011

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

    +143

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    switch (options & (PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE))
      {
      case 0:
      case PCRE_BSR_ANYCRLF:
      case PCRE_BSR_UNICODE:
      break;
      default: errorcode = ERR56; goto PCRE_EARLY_ERROR_RETURN;
      }

    Выкидываем три варианта, обрабатываем один.

    blueboar2, 06 Июня 2011

    Комментарии (21)
  6. JavaScript / Говнокод #6643

    +143

    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
    function postUrl(path, params, method) {
    	if ($('#service-form').length > 0) {
    		return false;
    	}
        var formHtml = '<form action="' + path + '" method="' + method + '" style="display:none;" id="service-form">';
        for(var key in params) {
            formHtml += '<input type="hidden" name="' + key + '" value="' + params[key] + '" />';
        }
        formHtml += '</form>';
    
        $("#main").append(formHtml);
        $("#service-form").submit();
    }

    Игра МосВар

    Vasiliy, 12 Мая 2011

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

    +143

    1. 1
    2. 2
    3. 3
    4. 4
    for (int i = 0; i < ptr->len; i++)
    {
    	*(((unsigned char *) ptr->payload) + i) = (unsigned char) toupper(*(((unsigned char *) ptr->payload) + i));
    }

    Перевод символов, находящихся в строке по адресу ptr->payload (типа void *) в верхний регистр.

    Fellrond, 21 Апреля 2011

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

    +143

    1. 1
    2. 2
    3. 3
    <div class="menu_bit" onclick="location.href="index.php?page=teachers"">
    	Преподаватели
    </div>

    Сайт университетской кафедры. Ну и ладно! я сделаю свой <a> с джаваскриптом и дивами.

    SevInf, 11 Апреля 2011

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

    +143

    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
    void foo()
    {
        #define A_LEN 32
        #define B_LEN 40
    
        void* tmp_a = malloc(A_LEN);
        memset(tmp, 0, A_LEN);
    
        void* tmp_b = malloc(B_LEN);
        memset(tmp, 0, B_LEN);
    
        /* ... тело функции ...*/
    
        free(tmp_a);
        free(tmp_b);
    }

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

    Imperfectum, 07 Апреля 2011

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

    +143

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    char str[256];
            char ** pstr =  (char **) &str;
            char *p = str;
    
            spprintf( &p, 0, "Ack errror; code=%d", res); 
            cnn->is_connected = 0;
            zend_throw_exception(amqp_queue_exception_class_entry, *pstr  ,0 TSRMLS_CC);

    Так похапешники пишут на C.

    symbix, 02 Марта 2011

    Комментарии (14)
  11. PHP / Говнокод #5327

    +143

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    //Serialize
    if(is_numeric($value) || is_string($value))
    return $value;
    else
    return serialize($value);
    
    //Unserialize
    if(is_numeric($value))
    return $value;
    if(preg_match('/(a|O|s|b)\x3a[0-9]*?((\x3a((\x7b?(.+)\x7d)|(\x22(.+)\x22\x3b)))|(\x3b))/', $value)
    return unserialize($value);

    http://forum.dklab.ru/viewtopic.php?t=38585

    > Использовал я такой способ на проекте, потом перестал поддерживать проект, и ко мне время от времени обращается нынешний программист и говорит, что
    > плохо работает и не все данные возвращает.

    > Правильная ли регулярка?

    Lure Of Chaos, 18 Января 2011

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