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

    +144

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    if (nidx == -1) {
      networkIdx = -1;
    } else {
      networkIdx = nidx;
    }

    raorn, 01 Июня 2010

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

    +138

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    -(void)terminateSearchThreadInBackground:(NSNumber*)threadPtr
    {
        NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
        SearchThread* thread = (SearchThread*)[threadPtr unsignedLongValue];
    
        delete thread;
        [pool release];
    }

    И вновь я в шоке от нашего проекта. По какой-то неведомой причине передать в качестве параметра указатель на поток - это очень не трушно. Зато значительно более трушно - создать из него NSNumber, предварительно преобразовав к unsigned long...

    Highlander, 31 Мая 2010

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

    +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
    switch(pin){
    		case 0:
    		break;
    		case 1:
    		ADMUX = 1;
    		case 2:
    		ADMUX = 1 << 1;
    		case 3:
    		ADMUX = 1 | 1 << 1;
    		case 4:
    		ADMUX = 1 << 2;
    		case 5:
    		ADMUX = 1 | 1 << 2;
    		case 6:
    		ADMUX = 1 << 1 | 1 << 2;	
    	}

    Микроконтроллерный говнокод. Этот кусочек указывает, с какого вывода считывать показания АЦП. Эквивалент:
    ADMUX |= pin;

    age, 29 Мая 2010

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

    +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
    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
    /* Putarc1 печатает точки, определяющие дугу от 0 до 45.*/
    void Putarc1(HIMAGE *Im,short x, short y, short x_center, short y_center, unsigned char color){
    	 int  starty, endy, y1;
    	 starty=y; endy=(y+1);
    	 for (y1=starty;y1<endy;++y1) PutPoint(Im,y1+x_center,y_center-x,color);
    }
    /* Putarc2 печатает точки, определяющие дугу от 45 до 90.*/
    void Putarc2(HIMAGE *Im,short x, short y, short x_center, short y_center, unsigned char color){
    	 int startx, endx, x1;
    	 startx=x; endx=(x+1);
    	 for (x1=startx;x1<endx;++x1) PutPoint(Im,x1+x_center,y_center-y,color);
    }
    /* Putarc3 печатает точки, определяющие дугу от 90 до 135.*/
    void Putarc3(HIMAGE *Im,short x, short y, short x_center, short y_center, unsigned char color){
    	 int startx,endx,x1;
    	 startx=x; endx=(x+1);
    	 for (x1=startx;x1<endx;++x1) PutPoint(Im,x_center-x1,y_center-y,color);
    }
    /* Putarc4 печатает точки, определяющие дугу от 135 до 180.*/
    void Putarc4(HIMAGE *Im,short x, short y, short x_center, short y_center,unsigned char color){
    	 int starty,endy,y1;
    	 starty=y; endy=(y+1);
    	 for (y1=starty;y1<endy;++y1) PutPoint(Im,x_center-y1,y_center-x,color);
    }
    /* Putarc5 печатает точки, определяющие дугу от 180 до 225.*/
    void Putarc5(HIMAGE *Im,short x, short y, short x_center, short y_center,unsigned char color){
    	 int starty,endy,y1;
    	 starty=y; endy=(y+1);
    	 for (y1=starty;y1<endy;++y1) PutPoint(Im,x_center-y1,x+y_center,color);
    }
    /* Putarc6 печатает точки, определяющие дугу от 225 до 270.*/
    void Putarc6(HIMAGE *Im,short x, short y, short x_center, short y_center,unsigned char color){
    	 int startx,endx,x1;
    	 startx=x*1.0; endx=(x+1)*1.0;
    	 for (x1=startx;x1<endx;++x1) PutPoint(Im,x_center-x1,y+y_center,color);
    }
    /* Putarc7 печатает точки, определяющие дугу от 270 до 315.*/
    void Putarc7(HIMAGE *Im,short x, short y, short x_center, short y_center, unsigned char color){
    	 int startx, endx, x1;
    	 startx=x; endx=(x+1);
    	 for (x1=startx;x1<endx;++x1) PutPoint(Im,x1+x_center,y+y_center, color);
    }
    /* Putarc8 печатает точки, определяющие дугу от 315 до 360.*/
    void Putarc8(HIMAGE *Im,short x, short y, short x_center, short y_center, unsigned char color) {
    	 int  starty,endy,y1;
    	 starty=y; endy=(y+1);
    	 for (y1=starty;y1<endy;++y1) PutPoint(Im,y1+x_center,x+y_center,color);
    }

    Рисуем дуги кусками по 45 градусов

    absolut, 24 Мая 2010

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

    +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
    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
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    int param_check(char *func, ...) {
      int fail;
      va_list al;
    
      if (!func) {
        return(1);
      }
      
      va_start(al, func);
      fail=0;
      if (!strcmp(func, "vnetGenerateDHCP") || !strcmp(func, "vnetKickDHCP")) {
        vnetConfig *a = va_arg(al, vnetConfig *);
        if (!a) {
          fail=1;
        }
      } else if (!strcmp(func, "vnetAddPublicIP") || !strcmp(func, "vnetAddDev")) {
        vnetConfig *a = va_arg(al, vnetConfig *);
        char *b = va_arg(al, char *);
        if (!a || !b) {
          fail=1;
        }
      } else if (!strcmp(func, "vnetAddHost")) {
        vnetConfig *a = va_arg(al, vnetConfig *);
        char *b = va_arg(al, char *);
        char *c = va_arg(al, char *);
        int d = va_arg(al, int);
        if (!a || !b || (d < 0) || (d > NUMBER_OF_VLANS-1)) {
          fail=1;
        }
      } else if (!strcmp(func, "vnetGetNextHost")) {
        vnetConfig *a = va_arg(al, vnetConfig *);
        char *b = va_arg(al, char *);
        char *c = va_arg(al, char *);
        int d = va_arg(al, int);
        if (!a || !b || !c || d < 0 || d > NUMBER_OF_VLANS-1) {
          fail=1;
        }
      } else if (!strcmp(func, "vnetDelHost") || !strcmp(func, "vnetEnableHost") || !strcmp(func, "vnetDisableHost")) {
        vnetConfig *a = va_arg(al, vnetConfig *);
        char *b = va_arg(al, char *);
        char *c = va_arg(al, char *);
        int d = va_arg(al, int);
        if (!a || (!b && !c) || d < 0 || d > NUMBER_OF_VLANS-1) {
          fail=1;
        }
      } else if (!strcmp(func, "vnetDeleteChain") || !strcmp(func, "vnetCreateChain")) { 
        vnetConfig *a = va_arg(al, vnetConfig *);
        char *b = va_arg(al, char *);
        char *c = va_arg(al, char *);
        if (!a || !b || !c) {
          fail=1;
        }
      } else if (!strcmp(func, "vnetTableRule")) {
        vnetConfig *a = va_arg(al, vnetConfig *);
        char *b = va_arg(al, char *);
        char *c = va_arg(al, char *);
        char *d = va_arg(al, char *);
        char *e = va_arg(al, char *);
        char *f = va_arg(al, char *);
        char *g = va_arg(al, char *);
        if (!a || !b || !c || !d || (!e && !f && !g)) {
          fail=1;
        }
      } else if (!strcmp(func, "vnetSetVlan")) {
        vnetConfig *a = va_arg(al, vnetConfig *);
        int b = va_arg(al, int);
        char *c = va_arg(al, char *);
        char *d = va_arg(al, char *);
        if (!a || b < 0 || b >= NUMBER_OF_VLANS || !c || !d) {
          fail=1;
        }
      } else if (!strcmp(func, "vnetDelVlan")) {
        vnetConfig *a = va_arg(al, vnetConfig *);
        int b = va_arg(al, int);
        if (!a || b < 0 || b >= NUMBER_OF_VLANS) {
          fail=1;
        }
      } else if (!strcmp(func, "vnetInit")) {
        vnetConfig *a = va_arg(al, vnetConfig *);
        char *b = va_arg(al, char *);
        char *c = va_arg(al, char *);
        char *d = va_arg(al, char *);
        int e = va_arg(al, int);
        if (!a || !b || !c || d<0) {
          fail=1;
        }
      }
    
      va_end(al);
    
      if (fail) {
        logprintfl (EUCAERROR, "INTERNAL ERROR: incorrect input parameters to function %s\n", func);
        return(1);
      }
      return(0);
    }

    raorn, 21 Мая 2010

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

    +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
    bool flag = getFlag();
    switch (flag)
    {
    case true:
        // do something
        break;
    case false:
        // do something else
        break;
    default:
       // do something more (??!)
    }

    бывает же...

    glook, 21 Мая 2010

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

    +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
    DWORD WINAPI readPort( LPVOID lpParam )
    {
            while (1)
            {
                    if (brkListen)
                            break;
    
            if (((Param*)(void*)lpParam)->port)
                    if (fgetc(((Param*)(void*)lpParam)->port)!=EOF);
                            ((Param*)(void*)lpParam)->count++;
            }
    
            return 0;
    }

    Кусок программы подсчёта импульсов с оптопорта. Мало того что так делать плохо, так ещё один косяк есть. RS232 ниже 64 бод в винде не держит. так и не выяснил в физике это дело или в оси. Под RTEMS 6.04 64 бод на ура считалось.

    ursus, 19 Мая 2010

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

    +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
    /* TODO: make this into something smarter than a linked list */
    typedef struct bunchOfInstances_t {
        ncInstance * instance;
        int count; /* only valid on first node */
        struct bunchOfInstances_t * next;
    } bunchOfInstances;
    
    ncInstance * get_instance (bunchOfInstances **headp)
    {
        static bunchOfInstances * current = NULL;
        
        /* advance static variable, wrapping to head if at the end */
        if ( current == NULL ) current = * headp;
        else current = current->next;
        
        /* return the new value, if any */
        if ( current == NULL ) return NULL;
        else return current->instance;
    }

    raorn, 18 Мая 2010

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

    +105

    1. 1
    int ccInstance_to_ncInstance(ccInstance *dst, ncInstance *src);

    raorn, 18 Мая 2010

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

    +114

    1. 1
    #define boool long bool

    glook, 18 Мая 2010

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