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

    +138

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    /usr/include/sys/seg.h:
    #define shm_ptr u_ptrs.shmptr
    
    myfile.c:
    static SHRMEM_INFO_PTR shm_ptr = NULL;

    Сегодня для разнообразия системный хедер от AIX.

    Повбывав бы производителей, которые ограничивают полет моей фантазии (и так весьма приземленный) в именованиях моих личных переменных!

    nil, 09 Июля 2010

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

    +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
    int Xor4Bit_2 (unsigned char data)
    {
         unsigned char result = data;
          while (data != 0)
         {
             result ^= data & 1;
             data >>= 1;
         }
          result &= 1;
         return result;
    }
    
    вот как студенты получают xor битов числа
    это же нужно так извратить простой рабочий алгоритм
         
    int Xor4Bit_2 (unsigned char data)
    {
         int result = 0       
         while (data != 0)
         {
             result ^= data & 1;
             data >>= 1;
         }
         return result;
    }

    получил данный код после измышлизмов знакомого студента, перед этим дав ему рабочий вариант, мдя...

    ageron, 04 Июля 2010

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

    +111

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    double f_x (double x, double y, int nom)
    {
      double f_x[]={x+y, x*y, x*y, sqrt(x*x + y*y), cos(x)/sin(y)};
      return f_x[nom];
    }

    Нужна одна из функций :-)

    Goga, 01 Июля 2010

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

    +142

    1. 1
    enum {size = 10, timeout = 50};

    vovochka, 30 Июня 2010

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

    +140

    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
    int 
    grub_auth_strcmp (const char *user_input, const char *template) 
    { 
      int ok = 1; 
      const char *ptr1, *ptr2; 
      for (ptr1 = user_input, ptr2 = template; *ptr1; ptr1++) 
        if (*ptr1 == (ptr2 ? *ptr2 : ptr1[1]) && ok && ptr2 != NULL) 
          ptr2++; 
        else 
          ok = 0; 
     
      return !ok; 
    }

    Несвежий говнокод (давно пропатчено) и, возможно, кто-то скажет "баян", однако оставлю это здесь.
    Код из загрузчика grub 1.97, проверка пароля. Принимает за верный пароль любую подстроку пароля.

    cfdev, 27 Июня 2010

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

    −157

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    uint16_t (*tArray16[20])[16]; 
    uint16_t (*tArray64[5])[64]; 
    //////
    где-то в начале это malocaется
    //////
    for( i = 0; i < 25; i++ )
    { ....
        free( h->tArray16[i] );
    }

    это работает. т.к. структуры идут в памяти последовательно

    3.14159265, 18 Июня 2010

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

    +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
    #if 0
    
    // memory allocator
    // Type: Best Fit with block sorting
    
    #else
    
    static char* last = (char*)KERNEL_HEAP_BEGIN;
    
    void* alloc( size_t size )
    {
    	void * mem = last;
    	last += size;
    	return mem;
    }
    
    void free( void* mem )
    {
    	(void)mem;
    }
    
    #endif

    Менеджер памяти.
    такую заглушку пришлось делать за пару ночей до сдачи диплома, так как не хватало времени на написание записки.
    зато самый быстрый алокатор. сложность О(1)...
    нужен был для выделения памяти для данных 2 потоков и 1 процесса... функция free нигде не использовалась...

    pushkoff, 17 Июня 2010

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

    +137

    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
    /*
    sub iterm(i,ne(2),na(2),x(2),xx(2),d(2),p(2),mp,np,ii,im)
    shared nkp
    fl = 0
    FOR k = 1 TO na(0, i): ma = na(k, i): me = ne(k, i)
    FOR j = 1 TO mp
    x=x(j,ma): d=x(j,me)-x: x=x+p(1,i)*d: x(j,ma)=x: ad=ABS(d)
    IF ad > ABS(p(2, i) * x) AND it<im THEN fl = 1
    NEXT j, k: it=it+1: IF fl = 1 THEN ii = p(nkp, i) - 1 else it=0
     end sub: REM ИТЕР-БЛОК (мод.)
    */
    
     void iterm(int i, int ne[4][7],int na[3][7], float x[3][6],
    float d, float p[3][7], int mp, int np, int ii, int im)
    {extern int nkp; float xx,ad; static int it=0;
    int fl = 0, k, j, ma, me;
    for (k = 1; k<=na[0][ i];++k)
    { ma = na[k][ i]; me = ne[k][ i];
    for( j = 1;j<= mp;++j)
    {xx=x[j][ma]; d=x[j][me]-xx; xx=xx+p[1][i]*d; x[j][ma]=xx; ad=fabs(d);
    if( ad > fabs(p[2][ i] * xx) && it<im) fl = 1;
    }} it=it+1; if( fl == 1)  ii = p[nkp][ i] - 1; else it=0;
    } // ИТЕР-БЛОК (мод.)
    
    /*
    cls
    ? fnpr$;  REM ПОДГОТОВКА ДАННЫХ
    REM ОРГАНИЗУЮЩАЯ ПОДПРОГРАММА
    call op(ne(),na(),x(),s(),pr(),md(),n,mp,np,p(),mk,ki,im)
    ?: ?"Общее число итераций ="ki". Жми пробел.": S$=input$(1)
    */

    как обычно вместо того чтобы написать программу с нуля,был найден код на бейсике и начал безжалостно копипаститься в С
    ну и сам код на бэйсике естественно тоже говно

    tz-lom, 14 Июня 2010

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

    +131

    1. 1
    2. 2
    3. 3
    int newclient(var v, newconn oldconn) {
            [...]
    }

    Ничего особенного, конечно. Просто порадовало "newconn oldconn".

    xaionaro, 14 Июня 2010

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

    +144

    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
    typedef signed int s32;
    
    //...
    
    void SomeStruct::SomeFunc(const char* ipImageName /*, ... */ )
    {
    	// ...
    
    	s32 imageNameSize = strlen(ipImageName) * sizeof(char) + 1;
    	this->mpImageName = new char[imageNameSize];
    	strcpy(this->mpImageName, ipImageName);
    	
    	// ...
    }

    А теперь представим, что вместо char будет wchar_t... ...автор - лид-программист...

    Kirinyale, 13 Июня 2010

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