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

    +136.8

    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
    ...
    
    // TODO: remove this godless "switch()"!
                    switch(tuntype) { // TODO: Important: do as in documentation instead of reverse-ingeniering!
    #define PACKET_TRY {\
                    if(packet->ip_v == 4) {\
                            hl=packet->ip_hl<<2;\
                            if(hl>=sizeof(*packet))\
                                    break;\
                            /* TODO: Check in RFC something about of ICMP send-back in this case */\
                            fprintf(stderr, "Got too short IP-header (%i)...\n",hl);\
                    }\
                    if((packet->ip_v&IPV6_VERSION_MASK) == IPV6_VERSION) {\
                            break;\
                    }\
    }
    #define NEXT(a) tuntype=a;\
                    if(tuntry>=2)\
                            goto tun_process_switch_end;\
                    tuntry++;
    #define CASE(a) NEXT(a);\
            case a
    tun_process_switch:
    //              switch(tuntype) {
                            case TUNTYPE_NORM:              // NetBSD-like?
                                    packet=(typeof(packet))ptr;
                                    PACKET_TRY;
                            CASE(TUNTYPE_EXT):              // FreeBSD-like?
                                    packet=(typeof(packet))((char *)ptr + 4);
                                    if(s>4)
                                            if(*ptr==0x02)
                                                    PACKET_TRY;
                            CASE(TUNTYPE_ETH):              // Ethernet? TODO: Implement VLAN-tagging
                                    packet=(typeof(packet))((char *)ptr + sizeof(*eth));
                                    eth=(typeof(eth))ptr;
                                    if(!teth) {
                                            teth=alloca(sizeof(*teth));
                                            memcpy(&teth->ether_shost, &eth->ether_dhost, sizeof(teth->ether_shost));
                                            memcpy(&teth->ether_dhost, &eth->ether_shost, sizeof(teth->ether_dhost));
                                            teth->ether_type=ETHERTYPE_IP;
                                    }
                                    if(s>sizeof(*eth))
    //                                      if((*(char *)&eth->ether_type==0x08/* not IPv4? */)||(*(char *)&eth->ether_type==0x86/* not IPv6? */))  // TODO: Implement compatibility with all protocols over ethernet
                                                    PACKET_TRY;
                                    NEXT(TUNTYPE_NORM);
                                    goto tun_process_switch;
                            
                            default:                        
                                    tuntype=TUNTYPE_NORM;
                                    goto tun_process_switch;
    //              }
    tun_process_switch_end:
    #undef CASE
    #undef NEXT
    #undef PACKET_TRY
                                    if(tuntry<~0)
                                            tuntry=0;
                                    tuntype=oldtuntype;
                                    fprintf(stderr, "Got unknown packet. Flushing...\n");
                                    FLUSH;  // Flush all. We don't know the length of packet with unknown type.. So, we have to flush the buffer, to probably get new packets from the start.
                                    goto tun_process_while;
                    }
    
    ...

    "Ляпотааааа"... Очень "структурный" switch...

    xaionaro, 11 Ноября 2009

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

    +139.3

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    if (errno==EINTR) while (errno==EINTR)
         {
                fseek(fr,loffset,SEEK_SET);
                fgets(line_buffer,len,fr);
    }

    sacc - система биллинга для squid

    Одной проверки на ошибку - видимо, недостаточно

    fiss, 11 Ноября 2009

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

    +136.2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    switch( 1 ) 
    {
      default :
        TO_STR( 2, "10" );
    }

    Интересно, откуда и зачем такая конструкция. Может, кто-то что-то подобное встречал?

    nil, 06 Ноября 2009

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

    +151.8

    1. 1
    2. 2
    return DSQR(a.r) + DSQR(a.i);
    return fabs(a.r) + fabs(a.i);

    Пример говроретурна одной из моих функций в дипломном проекте на Си. Я собрал несколько вариантов программы, комментируя в различных местах различные return такого вида, как сейчас представлено выше.

    DSQR() -- это макрос возведения в квадрат из numericalrecepies. Там вся программа на основе "рецептного" кода.

    interested, 01 Ноября 2009

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

    +123.5

    1. 1
    printf(" %f %f %f %f %f %f %f %f\n",Xk[0],Xk[1],Xk[2],Xk[3],Xk[4],Xk[5],Xk[6], Xk[7]);

    Рад бы был, если б это написали китайцы. К сожалению, дело рук наших соотечественников.

    mkaz, 25 Октября 2009

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

    +132.3

    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
    char *uart_readln_timeout(UART_HANDLE h, char *buf, uint16_t len, clock_tick_t to)
    {
        clock_tick_t finish_time;
     
        char *datap = buf;
        char *datae = buf + len - 1;
    
        if( len == 0 ) return buf;
        if( len == 1 ) {
            buf[0] = 0;
            return buf;
        }
    
        finish_time = clock_get_millis() + to;
    
        // FIXME!!!
        while( datap < datae && ( to == 0 || clock_get_millis() < finish_time ) ) {
            if( uart_read_char(h, datap) ) {
                if( *datap++ == '\n' ) break;
            }
        }
        *datap = 0;
    	return buf;
    }

    читает строку из UART. есть подозрение, что это говнокод.

    dmzlj.livejournal.com, 24 Октября 2009

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

    +108.6

    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
    /**
     * Копирует первое большое число во второе.
     *
     * @param a большое число приемник
     * @param b большое число источник
     * @param n длинна больших чисел в словах
     *
     * @return FALSE - четное, TRUE - нечетное
     */
    void int_copy(uword_t *a, const uword_t *b, const int n)
    {
        memcpy(a, b, sizeof(a[0]) * n);
    }

    Вот такую милую функцию я нашел в проекте над которым работаю.

    pvkr2, 12 Октября 2009

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

    +98.4

    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
    /*                                     ,*/
                #include                              <time.h>
                 #include/*                     _  ,o*/  <stdlib.h>
                 #define  c(C)/*     -      . */return      ( C); /*    2004*/
                  #include   <stdio.h>/*.   Moekan           "'   `\b-'     */
                    typedef/*  */char   p;p* u                     ,w       [9
                      ][128] ,*v;typedef  int _;_   R,i,N,I,A               ,m,o,e
                 [9],  a[256],k    [9], n[               256];FILE*f       ;_ x   (_ K,_ r
            ,_ q){;   for(;                                         r<     q    ; K       =((
         0xffffff)   &(K>>8))^                                        n[255     &        ( K
       ^u[0        +                                     r  ++      ]     )]);c          (K
      )}        _ E                           (p*r,    p*q  ){     c(          f         =
              fopen                     (r  ,q))}_   B(_ q){c(    fseek        (f,      0
            ,q))}_ D(){c(  fclose(f ))}_  C(  p    *q){c(  0-    puts(q    )   )}_/*   /
          */main(_ t,p**z){if(t<4)c(   C("<in"       "file>"    "\40<l"   "a"  "yout> "
         /*b9213272*/"<outfile>"   ) )u=0;i=I=(E(z[1],"rb")) ?B(2)?0 :   (((o   =ftell
        (f))>=8)?(u     =(p*)malloc(o))?B(0)?0:!fread(u,o,1,f):0:0)?0:  D():0      ;if(
       !u)c(C("      bad\40input  "));if(E(z[2],"rb" )){for(N=-1;256> i;n[i++] =-1   )a[
       i]=0;       for(i=I=0;   i<o&&(R  =fgetc(   f))>-1;i++)++a[R] ?(R==N)?( ++I>7)?(n[
      N]+1       )?0:(n [N   ]=i-7):0:   (N=R)    |(I=1):0;A =-1;N=o+1;for(i=33;i<127;i++
      )(        n[i   ]+  1&&N>a[i])?    N= a     [A=i]     :0;B(i=I=0);if(A+1)for(N=n[A];
     I<       8&&   (R  =fgetc(f ))>    -1&& i   <o        ;i++)(i<N||i>N+7)?(R==A)?((*w[I
     ]             =u [i])?1:(*w[I]=   46))?(a             [I++]=i):0:0:0;D();}if(I<1)c(C(
                  "  bad\40la" "yout  "))for(i            =0;256>(R=  i);n[i++]=R)for(A=8;
                 A  >0;A --)   R  = ( (R&1)==0)          ?(unsigned int)R>>(01):((unsigned
                /*kero  Q'        ,KSS  */)R>>         1)^        0xedb88320;m=a[I-1];a[I
                ]=(m           <N)?(m=   N+8):        ++        m;for(i=00;i<I;e[i++]=0){
               v=w         [i]+1;for(R                      =33;127  >R;R++)if(R-47&&R-92
               &&       R-(_)* w[i])*(                   v++)=    (p)R;*v=0;}for(sprintf
                      /*'_  G*/  (*w+1,              "%0"     "8x",x(R=time(i=0),m,o)^~
                    0)   ;i<       8;++           i)u      [N+ i]=*(*w+i+1);for(*k=x(~
                      0,i=0     ,*a);i>-        1;      ){for (A=i;A<I;A++){u[+a [ A]
                    ]=w[A       ][e[A]]  ;     k     [A+1]=x (k[A],a[A],a[A+1]
                  );}if     (R==k[I])      c(      (E(z[3  ],"wb+"))?fwrite(
                 /* */   u,o,1,f)?D          ()|C("  \n    OK."):0    :C(
                "  \n  WriteError"            ))  for  (i  =+I-
               1  ;i >-1?!w[i][++                 e[+ i]]:0;
                 ) for( A=+i--;                 A<I;e[A++]
                 =0); (i <I-4                 )?putchar
                 ((_   )  46)                  | fflush
                /*'      ,*/                  ( stdout
                ):       0&                    0;}c(C
               ("       \n                   fail")
               )      /*                    dP' /
                     dP                    pd  '
                    '                      zc
                                          */
                                         }

    psina-from-ua, 06 Октября 2009

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

    +98

    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
    BOOL NewStartUsed()
    {
      if ((BOOL) -1 == bNewStartUsed) {
        bNewStartUsed = FALSE;
        bNewStartUsed = TRUE;
        int iVal = bNewStartUsed;
    
        if (GetConfigInt(&iVal, "NewStart", "Common", ConfigFile)) {
          bNewStartUsed = (0 != iVal);
        }
      }
      return bNewStartUsed;
    }

    просто но комментс...

    kubrinsky, 18 Сентября 2009

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

    +141.8

    1. 1
    #define TRUE FALSE //счастливой отладки

    Классика жанра.

    iley, 11 Сентября 2009

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