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

    +136

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    if(TouchRegist && !gIsCleanView && !gChangeZoom &&!gChangeBrightness)
    			if( TouchRegist && gChangeZoom)
    			{
    				...
    			}	
    			break;

    aljosha, 03 Июня 2010

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

    +103

    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
    /*    Copyright 2009 10gen Inc.
     *
     *    Licensed under the Apache License, Version 2.0 (the "License");
     *    you may not use this file except in compliance with the License.
     *    You may obtain a copy of the License at
     *
     *    http://www.apache.org/licenses/LICENSE-2.0
     *
     *    Unless required by applicable law or agreed to in writing, software
     *    distributed under the License is distributed on an "AS IS" BASIS,
     *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     *    See the License for the specific language governing permissions and
     *    limitations under the License.
     */
    
    /* all the numbers that fit in a 4 byte string */
    const char bson_numstrs[1000][4] = {
        "0",  "1",  "2",  "3",  "4",  "5",  "6",  "7",  "8",  "9",
        "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",
    	/* 105 строк поскипано */
        "980", "981", "982", "983", "984", "985", "986", "987", "988", "989",
        "990", "991", "992", "993", "994", "995", "996", "997", "998", "999",
    };

    Взято отсюда - http://github.com/mongodb/mongo-c-driver/blob/master/src/numbers.c . А это коммит - http://github.com/mongodb/mongo-c-driver/commit/0198225180a51e0b0b8a84f25b34b3047d3b9c80

    raorn, 02 Июня 2010

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

    +144

    1. 1
    2. 2
    3. 3
    bool somevar;
    //... ... ...
    if(somevar==true)doSomething();

    И это в книге, по которой учат детей.

    frp, 01 Июня 2010

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

    +144

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

    raorn, 01 Июня 2010

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