1. Список говнокодов пользователя angry C nerd

    Всего: 5

  2. Си / Говнокод #8911

    +142

    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
    static inline gboolean is_alt(const gchar* string)
    {
    	return ((string[0] == '<') &&
    		(string[1] == 'a' || string[1] == 'A') &&
    		(string[2] == 'l' || string[2] == 'L') &&
    		(string[3] == 't' || string[3] == 'T') &&
    		(string[4] == '>'));
    }
    
    static inline gboolean is_ctl (const gchar* string)
    {
    	return ((string[0] == '<') &&
    		(string[1] == 'c' || string[1] == 'C') &&
    		(string[2] == 't' || string[2] == 'T') &&
    		(string[3] == 'l' || string[3] == 'L') &&
    		(string[4] == '>'));
    }
    
    static inline gboolean is_modx(const gchar* string)
    {
    	return ((string[0] == '<') &&
    		(string[1] == 'm' || string[1] == 'M') &&
    		(string[2] == 'o' || string[2] == 'O') &&
    		(string[3] == 'd' || string[3] == 'D') &&
    		(string[4] >= '1' && string[4] <= '5') &&
    		(string[5] == '>'));
    }
    
    static inline gboolean is_ctrl(const gchar* string)
    {
    	return ((string[0] == '<') &&
    		(string[1] == 'c' || string[1] == 'C') &&
    		(string[2] == 't' || string[2] == 'T') &&
    		(string[3] == 'r' || string[3] == 'R') &&
    		(string[4] == 'l' || string[4] == 'L') &&
    		(string[5] == '>'));
    }
    
    static inline gboolean is_shft (const gchar* string)
    {
    	return ((string[0] == '<') &&
    		(string[1] == 's' || string[1] == 'S') &&
    		(string[2] == 'h' || string[2] == 'H') &&
    		(string[3] == 'f' || string[3] == 'F') &&
    		(string[4] == 't' || string[4] == 'T') &&
    		(string[5] == '>'));
    }
    
    // ... (ещё 100500 подобных функций)
    // ... а тем временем где-то ниже:
    
    	  if (len >= 9 && is_release (accelerator))
    	    {
    	      accelerator += 9;
    	      len -= 9;
    	      mods |= EGG_VIRTUAL_RELEASE_MASK;
    	    }
    	  else if (len >= 9 && is_control (accelerator))
    	    {
    	      accelerator += 9;
    	      len -= 9;
    	      mods |= EGG_VIRTUAL_CONTROL_MASK;
    	    }
    	  else if (len >= 9 && is_primary (accelerator))
    	    {
    	      accelerator += 9;
    	      len -= 9;
    	      mods |= EGG_VIRTUAL_CONTROL_MASK;
    	    }
    	  else if (len >= 7 && is_shift (accelerator))
    	    {
    	      accelerator += 7;
    	      len -= 7;
    	      mods |= EGG_VIRTUAL_SHIFT_MASK;
    	    }
    	  else if (len >= 6 && is_shft (accelerator))
    	    {
    	      accelerator += 6;
    	      len -= 6;
    	      mods |= EGG_VIRTUAL_SHIFT_MASK;
    	    }
    	  else if (len >= 6 && is_ctrl (accelerator))
    	    {
    	      accelerator += 6;
    	      len -= 6;
    	      mods |= EGG_VIRTUAL_CONTROL_MASK;
    	    }
    
    // ... и так далее. код целиком сюда просто не влезет.

    шедевр. что сравнение строк, что цепочка if-else. все хороши.

    полной версией можно насладиться тут:
    https://github.com/mate-desktop/mate-control-center/blob/master/capplets/keybindings/eggaccelerators.c

    angry C nerd, 06 Января 2012

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

    +144

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    /* возвращает в buf последние 4 символа имени файла filename */
    void getfileext(unsigned char *buf, unsigned char *filename)
    {
        int i, j;
    
        for (i = strlen((char *) filename) - 4, j = 0; i < strlen((char *) filename); i++, j++)
            buf[j] = filename[i];
    
        return;
    }

    angry C nerd, 06 Апреля 2011

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

    +106.7

    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
    //Разбор принятых данных
    
      //===========================================================================
      //IP-адрес сервера
      //===========================================================================
       for(i=0;i<16;i++)
    	 {
    	  if(CtrlData[i] == ',')
    		break;
    	  else
    		buf[i] = CtrlData[i];
    	 }
    
       //разбираем первый байт адреса
       if(buf[1]=='.')      //вариант 1.
    	 {
    	  ip_buf[0] = ' ';
    	  ip_buf[1] = ' ';
    	  ip_buf[2] = buf[0];
    	  ip_buf[3] = buf[1];
    	  ip_ptr = 2;
    	 }
       else if(buf[2]=='.') //вариант 11.
    	 {
    	  ip_buf[0] = ' ';
    	  ip_buf[1] = buf[0];
    	  ip_buf[2] = buf[1];
    	  ip_buf[3] = buf[2];
    	  ip_ptr = 3;
    	 }
       else if(buf[3]=='.') //вариант 111.
    	 {
    	  for(i=0;i<4;i++)
    		ip_buf[i] = buf[i];
    	  ip_ptr = 4;
    	 }
       else
    	 {
    	  MessageBox(0, "Память устройства или файл содержит неверные данные","Ошибка", MB_ICONERROR|MB_TOPMOST|MB_OK|MB_TASKMODAL);
    	  return 1;
    	 }
    
       //разбираем второй байт адреса
       if(buf[ip_ptr+1]=='.')      //вариант 1.
    	 {
    	  ip_buf[4] = ' ';
    	  ip_buf[5] = ' ';
    	  ip_buf[6] = buf[ip_ptr];
    	  ip_buf[7] = buf[ip_ptr+1];
    	  ip_ptr += 2;
    	 }
       else if(buf[ip_ptr+2]=='.') //вариант 11.
    	 {
    	  ip_buf[4] = ' ';
    	  ip_buf[5] = buf[ip_ptr];
    	  ip_buf[6] = buf[ip_ptr+1];
    	  ip_buf[7] = buf[ip_ptr+2];
    	  ip_ptr += 3;
    	 }
       else if(buf[ip_ptr+3]=='.') //вариант 111.
    	 {
    	  ip_buf[4] = buf[ip_ptr];
    	  ip_buf[5] = buf[ip_ptr+1];
    	  ip_buf[6] = buf[ip_ptr+2];
    	  ip_buf[7] = buf[ip_ptr+3];
    	  ip_ptr += 4;
    	 }
       else
    	 {
    	  MessageBox(0, "Память устройства или файл содержит неверные данные","Ошибка", MB_ICONERROR|MB_TOPMOST|MB_OK|MB_TASKMODAL);
    	  return 1;
    	 }

    парсинг второй половины адреса сюда полностью не влез, но там ничего нового, я вас уверяю =)

    angry C nerd, 11 Марта 2010

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

    +104.7

    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
    /*==================================================================================*/
    /* Преобразование целого числа в ASCII												*/
    /*==================================================================================*/
    unsigned char IntToStr (unsigned long Value,unsigned char *pBuf,unsigned char n,unsigned char Zeros)
    {
    // Локальные переменные
    	unsigned char 	j = 0;
    	unsigned long 	dec;
    	uldiv_t			Tmp;
    // Программа
    // Перевод ASCII в значение
    	while (n--)
    	{
    		switch(n)
    		{
    			case 0:
    				dec = 1;
    			break;
    			case 1:
    				dec = 10;
    			break;
    			case 2:
    				dec = 100;
    			break;
    			case 3:
    				dec = 1000;
    			break;
    			case 4:
    				dec = 10000;
    			break;
    			case 5:
    				dec = 100000;
    			break;
    			case 6:
    				dec = 1000000;
    			break;
    			case 7:
    				dec = 10000000;
    			break;
    			case 8:
    				dec = 100000000;
    			break;
    			case 9:
    				dec = 1000000000;
    		}
    		Tmp = uldiv(Value,dec);
    	// Остаток
    		Value = Tmp.rem;
    	// Ограничение
    		if (Tmp.quot > 9)
    			Tmp.quot = 9;
    	// Проверка целой части
    		if (Zeros || j || Tmp.quot || (dec == 1))
    			*(pBuf + j++) = Hex_Table[Tmp.quot];
    	}
    	*(pBuf + j) = '\0';
    	return j;
    }

    без комментариев.

    angry C nerd, 10 Марта 2010

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

    +138.1

    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
    unsigned char SIM300_Reboot(void)
    {
        // проверим статус модема
        if (!pinSTATUS)             // если STATUS = 0 (модем выключен)
        {
            while (1)               //если не включается-включаем до посинения
            {
                if (!(Modem_ON()))
                    return 0;
            }
    
        } else                      // если STATUS = 1 (модем включен)
        {
            while (1)               //если не выключается - выключаем до посинения
            {
                if ((!Modem_OFF()) && (!Modem_ON()))
                    return 0;
            }
    
        }
    }

    тяжёлые будни программиста embedded-систем.
    дополнительный аромат: упомянутые функции возвращают 0 в случае успешного выполнения, а не наоборот, как можно было бы подумать при виде if (!some_func(...))

    angry C nerd, 09 Марта 2010

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