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

    +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
    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
    char *nvram_get(int index, char *name)
    {
            /* Initial value should be NULL */
            char *recv = NULL;
    
            //LIBNV_PRINT("--> nvram_get\n");
            nvram_init(index);
    
            recv = nvram_bufget(index, name);
    
            //btw, we don't return NULL anymore!
            if (!recv)
                recv = "";
    
            //Always need close nvram
            nvram_close(index);
    
        return recv;
    }
    
    char *nvram_bufget(int index, char *name)
    {
            int idx;
            /* Initial value should be NULL */
            static char *ret = NULL;
    
            //LIBNV_PRINT("--> nvram_bufget %d\n", index);
            LIBNV_CHECK_INDEX("");
            LIBNV_CHECK_VALID();
            idx = cache_idx(index, name);
    
            if (-1 != idx) {
                    if (fb[index].cache[idx].value) {
                            //duplicate the value in case caller modify it
                            //Tom.Hung 2010-5-7, strdup() will cause memory leakage
                            //but if we return value directly, it will cause many other crash or delete value to nvram error.
                            ret = strdup(fb[index].cache[idx].value);
                            LIBNV_PRINT("bufget %d '%s'->'%s'\n", index, name, ret);
    
                            //btw, we don't return NULL anymore!
                            if (!ret)
                                ret = "";
    
                        return ret;
                    }
            }
    
            //no default value set?
            //btw, we don't return NULL anymore!
            LIBNV_PRINT("bufget %d '%s'->''(empty) Warning!\n", index, name);
            return "";
    }

    Кусочек кода из библиотеки работы с nvram для железок на SoC Ralink. Китайцы плакали, кололись о утечки памяти, но продолжали настойчиво мешать указатели на статические строки с указателями на динамически выделенные в куче...

    NiTr0man, 27 Декабря 2010

    Комментарии (49)
  2. PHP / Говнокод #5068

    +164

    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
    $arr = array(); // создаем пустой массив чтобы записать туда все логины из БД
    $sql_username_check = mysql_query("SELECT login FROM table");
    if (mysql_num_rows($sql_username_check) > 0) {
            while ($num_login = mysql_fetch_array($sql_username_check)) {
                $arr = $num_login['login']; // здесь и записываем все логины
            } 
    }
    // проверяем, есть ли в массиве логинов загруженный нами новый логин
    // если нет, - записываем...
    if (!in_array($login, $arr)) {
    $sql2 = "INSERT INTO `table` (`Login`,`Password`,`Name`,`Date`) VALUES ('$login','$password','$name',now())";
      $result = mysql_query($sql2) or exit("Ошибка при создании записи. Попробуйте еще раз! ". mysql_error());     
     
         }
         else
         {echo "Этот логин занят, попробуйте другой!<br />";}
    }

    qbasic, 26 Декабря 2010

    Комментарии (12)
  3. PHP / Говнокод #5067

    +159

    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
    defined('HEADER') or die();
    
    $nameChars = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
    $ErrorStr = NULL;
    
    if($cfg->login_registration != 'On' || isset($_SESSION['login']))
    	return script::firbidden();
    
    $keys = array('login', 'passw', 'passw2', 'email', 'fname', 'lname', 'code');
    $post = script::apost($keys);
    
    if(isset($_POST['submit'], $_SESSION['captcha'])) {
    	$user = new user($post['login']);
    	
    	if(strtolower($post['code']) != $_SESSION['captcha']) {
    		$ErrorStr = "Неверный код с картинки";
    		unset($_SESSION['captcha']);
    	} else if($user->load()) {
    		$ErrorStr = "Логин уже зарегистрирован";
    	} else if(!preg_match("/^[0-9A-z]{4,16}$/", $post['passw'])) {
    		$ErrorStr = "Неверный пароль";
    	} else if($post['passw'] != $post['passw2']) {
    		$ErrorStr = "Пароли не совпадают";
    	} else if(!preg_match("/^([$nameChars]{1}){2,16}$/iu", $post['fname'])) {
    		$ErrorStr = "Имя введено не верно";
    	} else if(!preg_match("/^([$nameChars]{1}){2,16}$/iu", $post['lname'])) {
    		$ErrorStr = "Фамилия введена не верно";
    	} else if(!preg_match("/^[A-z0-9\.\-\_]{3,16}\@[A-z0-9\.\-]{5,16}$/i", $post['email'])) {
    		$ErrorStr = "Почтовый адрес введен неверно";
    	} else {
    		$user->passw = md5($post['passw']);
    		$user->email = strtolower($post['email']);
    		$user->fname = $post['fname'];
    		$user->lname = $post['lname'];
    		
    		if(!$user->save())
    			$ErrorStr = "Невозможно сохранить файл пользователя";
    		else
    			return script::redirect('h=login');
    	}
    }
    ...

    Регистрация...

    Devzirom, 26 Декабря 2010

    Комментарии (55)
  4. PHP / Говнокод #5066

    +159

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    <?php
    ...
    $now = date('d.m.Y h:m');
    $now = str_replace(' ', ' | ', $now);
    ...
    ?>

    Не совсем говнокод, но своя-же тупость доставляет :)

    hidespb, 26 Декабря 2010

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

    +161

    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
    // If iMode!=0, non-blocking mode is enabled.
    	u_long iMode=1;
    	ioctlsocket(Socket,FIONBIO,&iMode);
    	
    	// Main loop
    	for(;;)
    	{
    		// Display message from server
    		char buffer[1000];
    		memset(buffer,0,999);
    		int inDataLength=recv(Socket,buffer,1000,0);
    		std::cout<<buffer;
    		
    		int nError=WSAGetLastError();
    		if(nError!=WSAEWOULDBLOCK&&nError!=0)
    		{
    			std::cout<<"Winsock error code: "<<nError<<"\r\n";
    			std::cout<<"Server disconnected!\r\n";
    			// Shutdown our socket
    			shutdown(Socket,SD_SEND);
    
    			// Close our socket entirely
    			closesocket(Socket);
    
    			break;
    		}
    		Sleep(1000);
    	}

    http://www.win32developer.com/tutorial/winsock/winsock_tutorial_3.shtm
    Вот как нада работать с сокетами... (строка 27).

    fddpro, 26 Декабря 2010

    Комментарии (34)
  6. PHP / Говнокод #5064

    +159

    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
    if($eigbstatus=="logged" || $eigbstatus==1 || strstr($eigbstatus,"/")){
        print "<b>$eigbname</b> [";
        if (strstr($eigbstatus,"|")){
                $u_urov=explode("|",$eigbstatus);
                eval("echo $u_urov[0];");
        }else{
            $ss_gh=mysql_query("select id,user_uroven,user_current01 from ".$wcpref."user where user_name='$eigbname'");
            $ss_gh_ids = mysql_fetch_array($ss_gh);
    
                switch (@$ss_gh_ids[1]) {
                  case 1:
                    echo _NIKADMIN_;
                    break;
                  case 2:
                    echo _NIKMODERATOR_;
                    break;
                  case 3:
                    echo _NIKUSER_;
                    break;
                  default:
                    echo _NIKMODERATOR_." U".@$ss_gh_ids[1];
                    break;
                }
                if (strstr($eigbstatus,"/")){$u_urov[1]=$eigbstatus;}
                else {$u_urov[1]=$otn_path."/".$ss_gh_ids[2];}
    }

    Из какой-то АДОВОЙ олдовой корявой русской CMS, под которую пришлось делать шаблон с современным дизайном. У меня заболели зубы...

    varg242, 26 Декабря 2010

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

    +169

    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
    for (i = 0; i < 1000; i++)  /** Уничтожаем потоки **/ /** УНИЧТОЖИТЬ ЭТУ ХЕРЬ И НАПИСАТЬ ЧТОТО ПРИЛИЧНОЕ **/
    { 
    	clear = true;
    	
    	if (hash_interval != i)
    	{
    		for (k in flowException)
    		{
    			if (k == i)
    			{
    				clear = false;
    				
    				break;
    			}
    		}
    		
    		if (clear == true)
    		{
    			clearInterval(i); 
    		}
    	}
    }

    Собственно потоками в данном случае называются индикаторы setInterval

    Genka, 26 Декабря 2010

    Комментарии (1)
  8. PHP / Говнокод #5062

    +162

    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
    function Sharesize($size) {
        $mb = 1024*1024;
        $gb = 1024*1024*1024;
        $tb = 1024*1024*1024*1024;
        if ( $size >= $tb ) {
            $mysize = sprintf ("%01.3f",$size/$tb) . "</span>";
        } elseif ( $size >= $gb ) {
            $mysize = sprintf ("%01.3f",$size/$gb) . "</span> Гб";
        } elseif ( $size >= $mb ) {
            $mysize = sprintf ("%01.3f",$size/$mb) . "</span> Мб";
        } elseif ( $size >= 1024 ) {
            $mysize = sprintf ("%01.3f",$size/1024) . "</span> Кб";
        } else {
            $mysize = $size . " Б";
        }
        $mysize = str_replace(".", "<span class='seryoga'>.", $mysize);
        return $mysize;
    }

    Unknown, 25 Декабря 2010

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

    +145

    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
    function size($size)
    {
        if ($size < 1024) {
            return $size . ' байт';
        } elseif ($size < 1048576) {
            return round($size / 1024, 2) . ' Кб';
        } elseif ($size < 1073741824) {
            return round($size / 1048576, 2) . ' Мб';
        } elseif ($size < 1099511627776) {
            return round($size / 1073741824, 2) . ' Гб';
        } else {
            return round($size / 1099511627776, 2) . ' Тб';
        }
    }

    Unknown, 25 Декабря 2010

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

    +162

    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
    // © Код Арсения
    #include <stdio.h>
    #include <conio.h>
    #define N 100
    int n,kol=1;  //одекватен до 6!
     
    void SAW(int *a,int *b)
    {
        *a-=*b;
        *b+=*a;
        *a=*b-*a;
         kol=kol+1;
    }
    
    void deduction(int A[])
    {
        int i;
        printf(" %5d : ",kol);
        for (i=0;i<n;i++)
            printf(" %d ",A[i]);
        printf("\n");
        if (kol%290==0)
            getch();
    }
    
    void Shift(int A[], int k)
    {
        int i;
        if(k<2)return;
        for (i=0;i<k-1;i++)
        {
             Shift(A, k-1);
             if (!(i>=2 && k%2==0))SAW(&A[k-1],&A[0]);
             else SAW(&A[k-1],&A[i-1]);
             deduction(A);
        } 
        Shift(A, k-1);
    }
    
    void main()
    {
        int A[N],i;
        printf("vvedite n\n");
        scanf("%d",&n);
        for (i=0;i<n;i++)
            A[i]=i+1;
        deduction(A);
        Shift(A,n);
        printf("\n %d \n",kol);
    }

    Классический вариант быдлокода в программе, которая печатает всевозможные комбинации перестановок цифр заданной длины. Для того чтобы поменять два значения местами используется отдельная функция SAW, которой передаются указатели на переменные (автор думает, что это круто), в самой же функции производится обмен значений, на которые указывают указатели без помощи дополнительной переменной (опять же автор считает, что это круто), причем, стоит обратить внимание, каким образом это делается (видимо операция XOR этому кодеру пока не известна). Далее классический стиль написания быдлокодера прослеживается буквально в каждой строчке, включая названия функций. Стоит также обратить внимание на оригинальную реализацию рекурсивной процедуры, проницательный читатель сразу же поймет смысл комментария в строке: int n,kol=1;//одекватен до 6!

    jkoff, 25 Декабря 2010

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