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

    +105

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

    raorn, 18 Мая 2010

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

    +114

    1. 1
    #define boool long bool

    glook, 18 Мая 2010

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

    +136

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    // Делаем из префикса количество хостов (без .0 и броадкаста)
    numips = pow(2.0, (double)(32 - slashnet)) - 2;
    
    // Делаем префикс из маски сети
    slashnet = 32 - ((int)log2((double)(0xFFFFFFFF - vnetconfig->nm)) + 1);

    Всё те же, всё оттуда же...

    raorn, 12 Мая 2010

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

    +136

    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
    int check_process(pid_t pid, char *search) {
      char file[1024], buf[1024];
      FILE *FH=NULL;
      int rc, ret=0;
    
      snprintf(file, 1024, "/proc/%d/cmdline", pid);
      rc = check_file(file);
      if (!rc) {
        // cmdline exists
        ret = 1;
        if (search) {
          // check if cmdline contains 'search'
          FH = fopen(file, "r");
          if (FH) {
    	bzero(buf, 1024);
    	while(fgets(buf, 1024, FH)) {
    	  char *p;
    	  while((p = memchr(buf, '\0', 1024))) {
    	    *p = 'X';
    	  }
    	  buf[1023] = '\0';
    	  if (strstr(buf, search)) {
    	    ret = 0;
    	  }
    	}
    	fclose(FH);
          }
        } else {
          ret = 0;
        }
      } else {
        ret = 1;
      }
      return(ret);
    }

    Суровые калифорнийские студенты суровы.

    raorn, 11 Мая 2010

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

    +136

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    if (init) {
    } else {
      // thread is not initialized, run first time local state setup
      ...
    }

    raorn, 11 Мая 2010

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

    +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
    #define atfl_calc_opcode_(op) \
    ((op) == (ATFL_OP_PAGE_STORE|ATFL_BUF1|ATFL_PAGE_ERASE) ? 0x83 : (\
    	(op) == (ATFL_OP_PAGE_STORE|ATFL_BUF2|ATFL_PAGE_ERASE) ? 0x86 : (\
    	(op) == (ATFL_OP_PAGE_STORE|ATFL_BUF1|ATFL_PAGE_NO_ERASE) ? 0x88 : (\
    	(op) == (ATFL_OP_PAGE_STORE|ATFL_BUF2|ATFL_PAGE_NO_ERASE) ? 0x89 : (\
    	(op) == (ATFL_OP_PAGE_LOAD|ATFL_BUF1) ? 0x53 : (\
    	(op) == (ATFL_OP_PAGE_LOAD|ATFL_BUF2) ? 0x55 : (\
    	(op) == (ATFL_OP_BUF_READ|ATFL_BUF1) ? 0xD4 : (\
    	(op) == (ATFL_OP_BUF_READ|ATFL_BUF2) ? 0xD6 : (\
    	(op) == (ATFL_OP_BUF_WRITE|ATFL_BUF1) ? 0x84 : (\
    	(op) == (ATFL_OP_BUF_WRITE|ATFL_BUF2) ? 0x87 : (\
    	(op) == (ATFL_OP_PAGE_ERASE) ? 0x81 : (\
    	(op) == (ATFL_OP_PAGE_ERASE|ATFL_PAGE_ERASE) ? 0x81 : (\
    	0)))))))))))))

    Угадайте зачем.

    dmzlj.livejournal.com, 07 Мая 2010

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

    +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
    // народ на протяжении 5+ лет жаловался что постоянно что-то в этой библиотеке Х
    // криво потому что часто (с их слов) попытки вызова ее функций просто обламываются:
    
    int module_main_function()
    {
      int rc = 0;
      // ...
    
      rc = libX_do_work( ... )
      if (rc != OK) {
        // error!!!
      }
    
      // ...
    }
    
    // теперь заглянем в инициализацию этого модуля:
    
    int module_init()
    {
       int rc; 
       // ... кучи дежурного копи-паста для инициализации скипнуты ...
       rc = libZ_init();
       if (rc != OK)
       {
         /* error handling */
       }
    
       rc = libY_init();
       if (rc != OK)
       {
         /* error handling */
       }
    
       libX_init();   /* лопата */
       if (rc != OK)
       {
         /* error handling */
       }
    
       rc = libA_init();
       if (rc != OK)
       {
         /* error handling */
       }
    
       // ... и т.д. и т.п.
    }

    меня жалобы одного отдела начали потиху доставать что наша библиотека (назовем ее libX) у них в модуле постоянно не работает и шо ваабще за херня. как встроили ее - так и не работает. иногда. в 80+ модулях работает как часы - ни один другой отдел не жалуется - а вот в ихнем очень специальном модуле нет.

    ну я к ним подвалил. они меня сразу в рабочую функцию тыкать стали - вот тут дескать не работает. я им методично: покаж где инициализация. я когда в инициализацию заглянул, почти сразу начал роготять (давно так не смеялся, наболело за годы).
    им минут пять понадобилось что бы в своем копи-паст параде рассмотреть эту глюку.

    ЗЫ ответ: на строке с лопатой, не хватает "rc = ". у библиотеки есть внешняя конфигурация на отсутствии коей она у них обламывалась постоянно. и исправить скрипты свои что бы чужая конфигурация не убивалясь им похоже религия не позволяет.

    Dummy00001, 04 Мая 2010

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