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

    Всего: 168

  2. C++ / Говнокод #17592

    +57

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    template <class T>
    T checked_signed_add(T a, T b) {
        if (a >= 0) {
            if (b >= 0 && std::numeric_limits<T>::max() - a < b)
                throw std::runtime_error("Integer overflow");
        } else {
            if (b < 0 && std::numeric_limits<T>::min() - a > b)
                throw std::runtime_error("Integer overflow");
        }
        return a + b;
    }

    Кресты. Знаковые числа. Сложение.

    http://ideone.com/qxyAoG

    bormand, 06 Февраля 2015

    Комментарии (33)
  3. C++ / Говнокод #17558

    +53

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    for (int i = 1; i <= s.Length; ++i) {
        if (s[i] == '/') {
            s = s.SubString(1, i) + s.SubString(i, MaxInt);
            ++i;
        }
    }

    Кручу-верчу запутать хочу. Кто с первого раза догадается, в чём задача кода - получит пирожок с полочки.

    P.S. Строки билдеровские, нумерация с 1. SubString принимает индекс начала и количество символов.

    bormand, 02 Февраля 2015

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

    +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
    // For a portable version of timegm(), set the TZ environment variable  to
    // UTC, call mktime(3) and restore the value of TZ.  Something like
    
    #include <time.h>
    #include <stdlib.h>
    
    time_t
    my_timegm(struct tm *tm)
    {
        time_t ret;
        char *tz;
    
        tz = getenv("TZ");
        if (tz)
            tz = strdup(tz);
        setenv("TZ", "", 1);
        tzset();
        ret = mktime(tm);
        if (tz) {
            setenv("TZ", tz, 1);
            free(tz);
        } else
            unsetenv("TZ");
        tzset();
        return ret;
    }

    Цитата из man timegm. Сборка unix timestamp из компонент (год, месяц и т.п.).

    Удобно, наглядно, потокобезопасно.

    bormand, 23 Января 2015

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

    +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
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    struct hostent *rc_gethostbyname(const char *hostname)
    {
    	struct 	hostent *hp;
    #ifdef GETHOSTBYNAME_R
    #if defined (GETHOSTBYNAMERSTYLE_SYSV) || defined (GETHOSTBYNAMERSTYLE_GNU)
    	struct 	hostent hostbuf;
    	size_t	hostbuflen;
    	char	*tmphostbuf;
    	int	res;
    	int	herr;
    	
    	hostbuflen = 1024;
    	tmphostbuf = malloc(hostbuflen);
    #endif
    #endif
    
    #ifdef GETHOSTBYNAME_R
    #if defined (GETHOSTBYNAMERSTYLE_GNU)
    	while ((res = gethostbyname_r(hostname, &hostbuf, tmphostbuf, hostbuflen, &hp, &herr)) == ERANGE)
    	{
    		/* Enlarge the buffer */
    		hostbuflen *= 2;
    		tmphostbuf = realloc(tmphostbuf, hostbuflen);
    	}
    	free(tmphostbuf);
    #elif defined (GETHOSTBYNAMERSTYLE_SYSV)
    	hp = gethostbyname_r(hostname, &hostbuf, tmphostbuf, hostbuflen, &herr);
    	free(tmphostbuf);
    #else
    	hp = gethostbyname(hostname);
    #endif
    #else
    	hp = gethostbyname(hostname);
    #endif
    
    	if (hp == NULL) {
    		return NULL;
    	}
    	return hp;
    }

    freeradius-client 1.1.6, казалось бы серьезная либа... Говно мамонта, конечно, но оно валяется в репе бубунты 14.10... Неужели никто еще не заметил? :)

    bormand, 15 Января 2015

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

    +141

    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
    date = j / 86400l;
    t = j - (date * 86400l);
    date += 731000ul;
    y = (4 * date - 1) / 146097;
    d = (4 * date - 1 - 146097 * y) / 4;
    date = (4 * d + 3) / 1461;
    d = (4 * d + 7 - 1461 * date) / 4;
    m = (5 * d - 3) / 153;
    d = (5 * d + 2 - 153 * m) / 5;
    y = 100 * y + date;
    if (m < 10) {
        m += 3;
    } else {
        m -= 9;
        y++;
    }

    Voodoo magic...

    bormand, 26 Декабря 2014

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

    +162

    1. 1
    € = $.noConflict();

    SyntaxError: illegal character. Обидно ;(

    bormand, 26 Декабря 2014

    Комментарии (7)
  8. C++ / Говнокод #17350

    +58

    1. 1
    int (o)(0);

    http://ideone.com/9JL6K4

    bormand, 22 Декабря 2014

    Комментарии (11)
  9. bash / Говнокод #17185

    −103

    1. 1
    2. 2
    3. 3
    if [ "valid" == "$x" ]; then
       echo "x has the value 'valid'"
    fi

    One last point (of style): <...> is better because it avoids the possibility of accidentally assigning the string "valid" to x.

    Йода-стайл теперь и в вашем баше.

    bormand, 26 Ноября 2014

    Комментарии (7)
  10. Python / Говнокод #17108

    −106

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    >>> quit()
    Traceback (most recent call last):
      File "<stdin>", line 1, in ?
    TypeError: 'str' object is not callable
    >>> quit  
    'Use Ctrl-D (i.e. EOF) to exit.'
    >>> type(quit)
    <type 'str'>
    >>> type(exit)
    <type 'str'>

    Первый раз запустил питон 2.4...

    bormand, 14 Ноября 2014

    Комментарии (18)
  11. JavaScript / Говнокод #17080

    +161

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    for (var i=0; i<snake.length-25; ++i) {
        if (checkTouch(snake[i], newHead)) {
            state = "gameover";
            return;
        }
    }

    В приступе ностальгии портанул свой старый говнокодец с турбопасцаля на жс.

    Погамать можно тут: http://bormand.tk/snake/

    bormand, 07 Ноября 2014

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