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

    +146

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    case '16':
                dm("sixteenth");
                *b_=FULL_NOTE_DURATION_TCK/16 & 0x0F;
                *c_=(FULL_NOTE_DURATION_TCK/16 & 0xF0) >> 8;
            break;

    Человек парсил хексы из строки и задумался немного при копировании блоков в свитче.

    m08pvv, 05 Сентября 2011

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

    +107

    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
    char *getcwd(char *buf, size_t size)
    {
    	if (!buf)
    	{
    		errno = EFAULT;
    		return NULL;
    	}
    	if (size < 2)
    	{
    		errno = ERANGE;
    		return NULL;
    	}
    	buf[0] = '.';
    	buf[1] = '\0';
    	return buf;
    }

    -- Где мы находимся, Сэр?
    -- В корзине воздушного шара.

    P.S. Ссылка на коммит - http://git.altlinux.org/people/ldv/packages/?p=girar.git;a=commit;h=3ff0ce7b00907ba1 dce6406f6

    raorn, 05 Сентября 2011

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

    +147

    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
    789 static LPWSTR concatenate_string_list( LPCWSTR *list, int len )
     790 {
     791     LPCWSTR *t;
     792     LPWSTR str;
     793 
     794     for( t = list; *t ; t++  )
     795         len += strlenW( *t );
     796     len++;
     797 
     798     str = heap_alloc( len * sizeof(WCHAR) );
     799     if (!str) return NULL;
     800     *str = 0;
     801 
     802     for( t = list; *t ; t++ )
     803         strcatW( str, *t );
     804 
     805     return str;
     806 }

    говно от разработчиков wine "http://source.winehq.org/git/wine.git/blob/f4c2317adc44626cefab8d97ba4cc955f29a42a1 :/dlls/winhttp/request.c"
    ребята не знают о существовании StrCatChain или StringCchCatEx
    и никогда не читали Джоэл Сполски про маляра Шлемеля
    "http://www.gnuman.ru/joel/Nazad_k_osnovam/"

    80ab88005a044331, 04 Сентября 2011

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

    +136

    1. 1
    2. 2
    3. 3
    4. 4
    /* My favorite names for boolean values */
    #define  No	0
    #define  Yes	1
    #define  Maybe	2		/* tri-state boolean, actually */

    Исходный код юниксовой утилиты top. Файл boolean.h.

    danilissimus, 29 Августа 2011

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

    +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
    97. 97
    98. 98
    const int volume=100;
    int index=0;
    struct memo
    {   int nach;
    	int size;
    	char name[1];
    }raboch[volume];
    void main()
    {	setlocale(LC_ALL, "rus");
    	int switc=0;
    	int i,r;
    	int p=1;
    	int tekadr=0;
    	int ID=0;
    	int razmer;
    	int zap;
    	int paz;
    	int realproc=0;
    	int vhod=0;
    	int tekad;
    	char c[1024];
    	for(i=1023;i>=0;i--) { c[i]='0';}
    	for(i=99;i>=0;i--) { raboch[i].name[0]=' ';}
    		while(p>0) {
    					cout<<"Выберите действие: 1-Выделить память 2-Очистить 3-Дефрагментировать 4-состояние памяти 5-содежимое памяти 6-выход \n";
    					cin>>r;
    					int k=1;
    					switch(r)
    						{
                            case 1:
    							cout<<"Введите имя процесса:";
    							cin>>raboch[ID].name;
    							cout<<"Введите размер выделяемой памяти в байтах:";
    							cin>>raboch[ID].size;
    							razmer=raboch[ID].size;
    							raboch[ID].nach=tekadr;
    							for(i=tekadr; razmer>0;razmer--) {c[i]=raboch[ID].name[0]; i++; }
    							tekadr+=raboch[ID].size;
    							ID++;
    							realproc=ID;
    							break;;
    						case 2:
                                cout<<"Введите ID убиваемого процесса:";
    							cin>>zap;
    							razmer=raboch[zap].size;
    							for(i=raboch[zap].nach;razmer>0;razmer--) { c[i]='0'; i++;}
    							raboch[zap].name[0]='0';
    							raboch[zap].size=0;
    							tekadr=raboch[zap].nach;
    							realproc--;
    							ID--;
    							index=realproc;
    							break;;
    						case 3:
    					        zap=1;
    							paz=0;
    							   for(i=0;i<=102;i++)
    							     {
    									 if(c[i]!='0')
    									  {  
    									  }
    									 else
    								      {   tekad=i;
    											while(k>0)
    											{
    												  zap++;
    												  if(c[raboch[zap].nach]!='0')
    												   {  paz=raboch[zap].size;
    														for(vhod=raboch[zap].nach;paz>0;paz--) {c[tekad]=c[vhod]; c[vhod]='0'; tekad++; vhod++; }
    														int num;
    														for(num=0;num<100;num++) { if(raboch[num].name[0]=='0') { paz=num; num=100;} else{} }
    															if (raboch[zap].name[0]!=' ') { realproc--;
    																							tekadr=tekad;
    																							raboch[paz].size=raboch[zap].size;
    																							raboch[zap].size=0;
    																							raboch[zap].nach=0;
    																							raboch[paz].name[0]=raboch[zap].name[0];
    																							raboch[zap].name[0]=' ';}
    														else {}	 }
    												  if (raboch[zap].name[0]==' ') { if (realproc>=0) {k=1;} else { k=0;} }
    												  else  { }  }}}   
    							break;;
    						case 4:
    					      for(zap=ID-1;zap>=0;zap--)
    								{cout<<"Имя блока:";cout<<raboch[zap].name;cout<<"\n";
    									cout<<"Размер блока:";cout<<raboch[zap].size;cout<<"\n";
    									cout<<"Начальный адресс:";cout<<raboch[zap].nach;cout<<"\n";}
    							break;;
    						case 5:
    					        cout<<"Введите начальный адресс памяти:";
    							cin>>zap;
    							cout<<"Введите конечный адресс памяти:";
    							cin>>paz;
    							for(i=zap;paz!=i;i++) {cout<<c[i];}
    							cout<<"\n";
    							break;;
    						case 6: p=0;
    								continue;}}}

    Лаба по моделированию работы с памятью. Растягиваем буфер в голове))))

    Horror89, 26 Августа 2011

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

    +134

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    void cmps_genslave(prog src[progs], char slave, char look){	// заполнение списков нелокальных имен
    	int s=0,m=0,l=0;
    	while( src[s].name[0]!=0 && src[s].name[0]!=slave && s<progs)s++;
    	if(!src[s].master) return;
    	if(look==slave){ if(src[s].nonlnum) return; l=s; }else
    		while( src[l].name[0]!=0 && src[l].name[0]!=look && l<progs)l++;
    	if(!src[l].master) return;
    	while(src[m+1].name[0]!=0 && src[l].master==src[m+1].name[0] && m+1<progs)m++;
    	strcpy(src[s].nonlocals+strlen(src[s].nonlocals),src[m].locals);
    	src[s].nonlnum+=src[m].lnum;
    	if(src[m].master) cmps_genslave(src,slave,src[m].name[0]);
    }

    курсовик по проге на втором курсе, изобретаем области видимости

    Venomous, 26 Августа 2011

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

    +146

    1. 1
    2. 2
    3. 3
    4. 4
    #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27)
     kill_proc(1,SIGTERM,1);
     #else
    ...

    Оригинальный способ проверить версию ядра линукса...
    Где-то в сырцах реалтековского драйвера для GPIO...

    Necromant, 25 Августа 2011

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

    +139

    1. 1
    2. 2
    3. 3
    4. 4
    char *reg = data;
    char *temp = "blahblah is ";
    
    strcat(temp,(const char*)"reg[4]");

    Как оказывается на Си можно конкатенировать строки

    Kortez, 15 Августа 2011

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

    +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
    /* gcc -static -Os -W -nostartfiles -fno-stack-protector -U_FORTIFY_SOURCE glibc_preinstall.c */
    
    #include <unistd.h>
    #include <signal.h>
    #include <sys/utsname.h>
    
    #ifndef MIN_KERNEL_VERSION
    # error "MIN_KERNEL_VERSION not defined"
    #endif
    #define PRINT_MSG(msg) write(2, (msg), sizeof(msg) - 1)
    #define FATAL(msg) do {PRINT_MSG(msg); kill_parent(); _exit(1);} while(0)
    
    static void kill_parent(void)
    {
    	pid_t pid = getppid();
    	if (pid < 100)
    		return;
    
    	PRINT_MSG("Sending SIGSTOP signal to parent process.\n");
    	(void) kill(pid, SIGSTOP);
    }
    
    static int is_digit(char c)
    {
    	return c >= '0' && c <= '9';
    }
    
    static int
    parse_release(const char *p)
    {
    	unsigned int i, osversion = 0;
    
    	for (i = 0; i < 3 && *p; i++, ++p)
    	{
    		unsigned int d = 0;
    
    		for (; is_digit(*p); ++p)
    			d = d * 10 + (*p - '0');
    
    		if (d == 0 || d >= 255 || (i < 2 && *p && *p != '.'))
    		{
    			osversion = 0;
    			break;
    		}
    		osversion |= d << (16 - 8 * i);
    	}
    	return osversion;
    }
    
    static void
    check_kernel_version(void)
    {
    	struct utsname name;
    
    	if (uname(&name) < 0)
    		FATAL("kernel version check failed: uname syscall failed.\n");
    
    	if (parse_release(name.release) < parse_release(MIN_KERNEL_VERSION))
    		FATAL("kernel version check failed: KERNEL TOO OLD, "
    		      "minimal version supported by glibc is " MIN_KERNEL_VERSION
    		      ".\n");
    }
    
    void
    _start(void)
    {
    	check_kernel_version();
    	_exit(0);
    }

    Скрипт на языке Си, проверяющий, что загружено ядро версии не меньшей чем MIN_KERNEL_VERSION (2.6.18 на момент написания). Очень красиво взрывается на ядре 3.0.

    raorn, 11 Августа 2011

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

    +106

    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
    if (fFisWaitAccept)
        {
            if (++countB > 2)
            {
                countB = 0;
                TRACE("ERROR TIMER B\n");
                Reinit_ATS_Connection();
                fFisWaitAccept = false;
                set_timer_b(tmB);
                return;
            }
        }
        else
            countB = 0;
        SendFrameToATS(buf, 4);        //visilaem neskolko raz
        SendFrameToATS(buf, 4);        //FW dlia bolshej uverennosti
        SendFrameToATS(buf, 4);        //ibo esli etot paket nedojdiot sviazi pizdec
        fFisWaitAccept = true;
        set_timer_b(tmB);

    Фрагмент кода управляющей программы для некоей АТС.

    b10876198, 09 Августа 2011

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