1. Си / Говнокод #18028

    +105

    1. 1
    x = x + exp(ln(2)*i);

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

    Vindicar, 20 Апреля 2015

    Комментарии (43)
  2. Си / Говнокод #17991

    +132

    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
    struct ass {
            void (*func)(const char *, void *);
            void *data;
        } asses[] = {
            { NULL, NULL },
            /* Тут типа scanf */
            { NULL, NULL },
        };
    
        while (getopt_long_only(argc, argv, "", long_options, &option_index) != -1) {
            if (option_index < 0)
                return 1;
            struct ass *derp = &asses[option_index];
            if (derp->func != NULL)
                derp->func(optarg, derp->data);
        }

    Правим код начальника.

    codemonkey, 13 Апреля 2015

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

    +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
    if(argc > 6){
    	for(arg = argv[6]; strlen((char *)arg) >= 17 &&
    					isdigit(arg[0]) &&
    					isdigit(arg[1]) &&
    					isdigit(arg[3]) &&
    					isdigit(arg[4]) &&
    					isdigit(arg[6]) &&
    					isdigit(arg[7]) &&
    					isdigit(arg[9]) &&
    					isdigit(arg[10]) &&
    					isdigit(arg[12]) &&
    					isdigit(arg[13]) &&
    					isdigit(arg[15]) &&
    					isdigit(arg[16])
    					; arg+=18){
    
    		int t1, t2;
    		struct period *sp;
    
    		t1 = (arg[0] - '0') * 10 + (arg[1] - '0');
    		t1 = (t1 * 60) + (arg[3] - '0') * 10 + (arg[4] - '0');
    		t1 = (t1 * 60) + (arg[6] - '0') * 10 + (arg[7] - '0');
    		t2 = (arg[9] - '0') * 10 + (arg[10] - '0');
    		t2 = (t2 * 60) + (arg[12] - '0') * 10 + (arg[13] - '0');
    		t2 = (t2 * 60) + (arg[15] - '0') * 10 + (arg[16] - '0');
    		if(t2 < t1) break;
    		sp = myalloc(sizeof(struct period));
    		if(sp){
    			sp->fromtime = t1;
    			sp->totime = t2;
    			sp->next = acl->periods;
    			acl->periods = sp;
    		}
    		if(arg[17]!=',') break;
    	}
    }

    Получение временных диапазонов, из https://github.com/z3APA3A/3proxy/blob/devel/src/3proxy.c#L1470
    Основное говно в том, что нифига не проверяются входные данные т.е. секунд и минут может быть больше 59, а часов может быть больше 23. И проверку if(t2 < t1) лучше заменить на if(t2 <= t1)
    А еще там в том исходнике в качестве отступов используются и пробелы и табы. Вообще там очень много говнокода

    j123123, 12 Апреля 2015

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

    +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
    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
    ...
    // GRAY SCALE:
    
    #define ER_COLOR_BLACK_DEEP3        ccc3(0, 0, 0)
    #define ER_COLOR_BLACK_DEEP4        ccc4(0, 0, 0, 255)
    
    #define ER_COLOR_BLACK3             ccc3(38, 38, 38)
    #define ER_COLOR_BLACK4             ccc4(38, 38, 38, 255)
    
    #define ER_COLOR_SIDEMENU_SELECTED3 ccc3(47, 47, 47)
    
    #define ER_COLOR_LETTER_VIEW3       ccc3(51, 51, 51)
    
    #define ER_COLOR_SIDEBAR_BG3        ccc3(58, 58, 58)
    #define ER_COLOR_SIDEBAR_BG4        ccc4(58, 58, 58, 255)
    
    #define ER_COLOR_BAR_BG_GRAY3       ccc3(82, 82, 82)
    
    #define ER_COLOR_AUTHOR_NAME3       ccc3(103, 103, 103)
    
    #define ER_COLOR_SIDE_WIDGET3       ccc3(255, 255, 255)
    #define ER_COLOR_SIDE_WIDGET4       ccc4(255, 255, 255, 255)
    
    #define ER_COLOR_GRAY_TUT3          ccc3(115, 115, 115)
    
    #define ER_COLOR_GRAY3              ccc3(130, 130, 130)
    
    #define ER_COLOR_PULL_LABEL3        ccc3(142, 142, 142)
    
    #define ER_COLOR_SEND_BG4           ccc4(158, 158, 158, 255)
    #define ER_COLOR_SEND_BG3           ccc3(158, 158, 158)
    
    #define ER_COLOR_BADGE_GRAY3        ccc3(149, 149, 149)
    #define ER_COLOR_BADGE_GRAY4        ccc4(149, 149, 149, 255)
    
    #define ER_COLOR_SEPARATOR3         ccc3(195, 195, 195)
    
    #define ER_COLOR_LABELS_GRAY3       ccc3(170, 170, 170)
    
    #define ER_COLOR_AUTHOR_CAPTION3    ccc3(173, 173, 173)
    
    #define ER_COLOR_SAFE_EXIT_BG4      ccc4(189, 189, 189, 255)
    #define ER_COLOR_SAFE_EXIT_BG3      ccc3(189, 189, 189)
    
    #define ER_COLOR_MENU_GRAY_ONE3     ccc3(204, 204, 204)
    
    #define ER_COLOR_PUSHED_ELEMENT3    ccc3(205, 205, 205)
    
    #define ER_COLOR_GRAY_208_3         ccc3(208, 208, 208)
    #define ER_COLOR_GRAY_208_4         ccc4(208, 208, 208, 255)
    
    #define ER_COLOR_MENU_GRAY_TWO3     ccc3(216, 216, 216)
    
    #define ER_COLOR_NEW_GAME_BACK3     ccc3(216, 216, 216)
    #define ER_COLOR_NEW_GAME_BACK4     ccc4(216, 216, 216, 255)
    
    #define ER_COLOR_WHITE_222_3        ccc3(222, 222, 222)
    
    #define ER_COLOR_WHITE_232_3        ccc3(232, 232, 232)
    
    #define ER_COLOR_WHITE_MY_PLATE3        ccc3(243, 243, 243)
    
    #define ER_COLOR_WHITE_INTRO4       ccc4(232, 232, 232, 255)
    
    #define ER_COLOR_WHITE3             ccc3(255, 255, 255)
    #define ER_COLOR_WHITE4             ccc4(255, 255, 255, 255)

    50 оттенков серого в нашем приложении.

    tirinox, 01 Апреля 2015

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

    +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
    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
    for (i = 1; i < argc; i++) {
    		p = argv[i];
    		if ((*p != '-') && (*p != '/'))
    		{
    			printf("Unknown option %s\n", p);
    			return 1;
    		}
    		p++;
    		if (strncmp(p, "pcir=", 5) == 0)	
    		{
    			sscanf(p+5, "%lli", &pci_raddr);
    			opt |= 1;
    		}
    		if (strncmp(p, "pciw=", 5) == 0)
    		{
    			sscanf(p+5, "%lli", &pci_waddr);
    			opt |= 2;
    		}
    		if (strncmp(p, "rwlen=", 6) == 0)
    			sscanf(p+6, "%i", &rwlen);
    		if (strncmp(p, "count=", 6) == 0)
    			sscanf(p+6, "%i", &count);
    		if (strncmp(p, "ch=", 3) == 0)
    			channel = p+3;
    		if (strncmp(p, "poll", 4) == 0)
    			poll = 1;
    		if (strncmp(p, "fpga_read=", 10) == 0)
    		{
    			sscanf(p+10, "%i", &offset);
    			fpga_read_flag = 1;
    		}
    		if (strncmp(p, "fpga_write=", 11) == 0)
    		{
    			sscanf(p+11, "%i", &offset);
    			fpga_write_flag = 1;
    		}
    		if (strncmp(p, "data=", 5) == 0)
    		{
    			sscanf(p+5, "%i", &data);
    			data_valid = 1;
    		}
    
    		if (strncmp(p, "dump_to_file=", 13) == 0)
    		{
    			filename = p+13;
    			dump_to_file = 1;
    		}
    		if (strncmp(p, "loadnios", 8) == 0)
    		{
    			filename = p+8;
    			load_nios = 1;
    		}
    		if (strncmp(p, "DUMP", 4) == 0) // -DUMP
    			dump = 1;
    		if (strncmp(p, "flash_read", 10) == 0) // -flash_read
    		{
    			flash_read_flag = 1;
    		}
    
    		if (strncmp(p, "file_to_flash", 13) == 0) // -file_to_flash
    			file_to_flash = 1;
    		if (strncmp(p, "file=", 5) == 0) // -file
    		{
    			fname = p+5;
    		}
    
    		if (strncmp(p, "base=", 5) == 0) // -base
    		{
    			sscanf(p+5, "%i", &base);
    			basevalid = 1;
    		}
    		if (strncmp(p, "card=", 5) == 0) // -crd
    			sscanf(p+5, "%i", &card);
    		if (strncmp(p, "ver", 3) == 0)
    			ver = 1;
    		if (strncmp(p, "dev=", 4) == 0) // -deм
    			dev = p+4;
    	}

    "А я напишу свой собственный комманд лайн парсер, с хуитой и говном"

    codemonkey, 31 Марта 2015

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

    +141

    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
    int fpga_read(char *dev, unsigned int base_addr, unsigned int offset, int len, unsigned char *buf)
    {
        unsigned long long pci_raddr;
        int actual;
        FILE    *fi;
    
        fi = fopen(dev, "r");
        if (fi == NULL) {
            printf("Failed to read from FPGA - Error opening device\n");
            return 1;
        }
    
        pci_raddr = (unsigned long long) 2 << 32 | (base_addr + offset);
        setvbuf(fi, NULL, _IONBF, 0);       // disable file buffering
        fseeko(fi, pci_raddr, SEEK_SET);        // go to the address
        actual = fread(buf, 1, len, fi);        // read the data
        fclose(fi);
        if (actual <= 0) {
            printf("Error  %d reading from device (dev %s, base addr 0x%x, offset 0x%x, len %i)\n", errno, dev, base_addr, offset, len);
            return 2;
        }
        return 0;
    }

    По многочисленным просьбам говнокодеров, выделил в отдельный пост.

    codemonkey, 30 Марта 2015

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

    +131

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    fi = fopen("kokoko.tmp", "rb");
    
            fseek(fi, 0, SEEK_END);
            file_size = ftell(fi);
            fseek(fi, 0, SEEK_SET);

    rewind? system call? Не, не слышали.

    codemonkey, 30 Марта 2015

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

    +139

    1. 1
    #define LIFMT(X) (long int) (X)

    Всё тот же квантовохимический пакет. Что характерно, от обычных кастов дальше никто не отказывается.

    dxd, 20 Марта 2015

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

    +135

    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
    #include "mono-math.h"
    
    #ifndef HAVE_SIGNBIT
    
    int
    mono_signbit_float (float x)
    {
    	union { float f; int i; } u;
    
    	u.f = x;
    
    	return u.i < 0;
    }
    
    int
    mono_signbit_double (double x)
    {
    	union { double d; int i[2]; } u;
    
    	u.d = x;
    
    #if G_BYTE_ORDER == G_LITTLE_ENDIAN
    	return u.i [1] < 0;
    #else
    	return u.i [0] < 0;
    #endif
    }
    
    #endif

    Говно тут в том, что int далеко не везде будет 32 бит.
    https://github.com/mono/mono/blob/master/mono/utils/mono-math.c оттуда

    j123123, 19 Марта 2015

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

    +143

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    /*
     * BIG UGLY WARNING! This is so damn ugly I wanna puke.  Unfortunately, some
     * macros that use ASN1_const_CTX still insist on writing in the input
     * stream.  ARGH! ARGH! ARGH! Let's get rid of this macro package. Please? --
     * Richard Levitte      
     */

    OpenSSL...

    bormand, 17 Марта 2015

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