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

    +132

    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
    if (dest_lstat_ok)
        {
          if (S_ISDIR (dest_stats.st_mode))
            {
              error (0, 0, _("%s: cannot overwrite directory"), quote (dest));
              return false;
            }
          if (interactive)
            {
              fprintf (stderr, _("%s: replace %s? "), program_name, quote (dest));
              if (!yesno ())
                return true;
              remove_existing_files = true;
            }
    
          if (backup_type != no_backups)
            {
              dest_backup = find_backup_file_name (dest, backup_type);
              if (rename (dest, dest_backup) != 0)
                {
                  int rename_errno = errno;
                  free (dest_backup);
                  dest_backup = NULL;
                  if (rename_errno != ENOENT)
                    {
                      error (0, rename_errno, _("cannot backup %s"), quote (dest));
                      return false;
                    }
                }
            }
        }
    
      if (relative)
        source = rel_source = convert_abs_rel (source, dest);
    
      ok = ((symbolic_link ? symlink (source, dest)
             : linkat (AT_FDCWD, source, AT_FDCWD, dest,
                       logical ? AT_SYMLINK_FOLLOW : 0))
            == 0);

    Coreutils такой coreutils

    serpinski, 15 Мая 2013

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

    +132

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <sys/types.h>
    
    void usage(char *progname)
    {
        fprintf(stderr,"Usage: %s [-i <interval>]\n",progname);
        exit(1);
    }
    
    int main(int argc, char *argv[])
    {
        int arg;
        size_t alloc = 1000;
        uid_t userid = getuid();
    
        while ((arg = getopt(argc,argv,"")) != -1) {
            switch(arg) {
                default:
                    usage(argv[0]);
                    break;
            }
        }
    
        //const char *basecmd = "sudo turbostat -s -i 1 2>&1";
        char ghz[8];
        char *junkbuffer = malloc(sizeof(char)*1000);
        const char *basecmd = "turbostat -s -i 1 2>&1";
    
        seteuid(0);
        setuid(0);
        FILE *turboPipe = popen(basecmd,"r");
        seteuid(userid);
        setuid(userid);
    
        /* ignore first line */
        getline(&junkbuffer,&alloc,turboPipe);
        fscanf(turboPipe,"%*s %s %*s %*s %*s %*s %*s %*s %*s %*s %*s\n",ghz);
        free(junkbuffer);
    
        fprintf(stdout,"%s\n",ghz);
        pclose(turboPipe);
    
        return 0;
    }

    Установил новый Debian на ноут. Искал инфу по Intel TurboBoost.
    Наткунлся на это
    http://technicallyliving.blogspot.com/2012/06/intel-turboboost-and-linux.html

    Улыбнул вайл-свитч. Что мешало автору обойтись без свитча?

    denis90, 09 Мая 2013

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

    +129

    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
    // After #include <this file>   you can  
    // use b_1010_1100 isted of 0b10101100 
     
    #define b_0000_0000 0 
    #define b_0000_0001 1 
    #define b_0000_0010 2 
    #define b_0000_0011 3 
    #define b_0000_0100 4 
    #define b_0000_0101 5 
    #define b_0000_0110 6 
    #define b_0000_0111 7 
    
    .......................
    
    #define b_1111_1010 250 
    #define b_1111_1011 251 
    #define b_1111_1100 252 
    #define b_1111_1101 253 
    #define b_1111_1110 254 
    #define b_1111_1111 255

    http://radiokot.ru/forum/download/file.php?id=150175

    И там такого добра валом и всё в одном файле и для вашего "удобства"

    m08pvv, 05 Мая 2013

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

    +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
    /*
        * Now do an in-place copy.
        * Map (R) to (r) and (TM) to (tm).
        * The era of teletypes is long gone, and there's
        * -really- no need to shout.
        */
    while (*src != '\0') {
        if (src[0] == '(') {
            if (strncmp(src + 1, "R)", 2) == 0) {
                (void) strncpy(dst, "(r)", 3);
                src += 3;
                dst += 3;
                continue;
            }
            if (strncmp(src + 1, "TM)", 3) == 0) {
                (void) strncpy(dst, "(tm)", 4);
                src += 4;
                dst += 4;
                continue;
            }
        }
        *dst++ = *src++;
    }
    *dst = '\0';

    Не говнокод, но забавно.
    Инициализация процессоров (и сбор cpuid) в Solaris
    http://src.illumos.org/source/xref/illumos-gate/usr/src/uts/i86pc/os/cpuid.c#2488

    myaut, 03 Мая 2013

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

    +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
    void lcd_goto(unsigned char line, unsigned char pos)
    {
    	...
    	lcd_str_remains = LCD_STR_LEN - pos;
    }
    
    void lcd_putch(char c)
    {
    	lcd_str_remains--;
    	...
    }
    
    void lcd_fill_str(void)
    {
    	char i;
    	for(i=0; i<lcd_str_remains; i++)
    		lcd_putch(' ');
    }

    Паскаль головного мозга. Эх, сколько я этот баг искал.

    kipar, 29 Апреля 2013

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

    +136

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    void ps(const char *a)
    {/*means putstring*/
    	for(; '\0' != *a; a++)
    		putchar(' ' != *a ? *a : (putchar('\n'),'\t'));
    }

    Как-то ночью, в час унылый, в голове собрав все силы,
    Разум темный, как могила, начал свой хромой закон.
    Начиная выражаться, а точнее проявляться,
    В мир безбрежный и зеленый, зло построило свой ход:
    Пальцы тонкие и злые, подчиняясь темной силе,
    Выхватив перо в чернилах, вывели сей говногод.

    ntfshard, 18 Апреля 2013

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

    +131

    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
    ////выполнение полного сброса, конфигурирования и проверки того что записано в регистрах
    ////0 - проверка неудачная
    ////1 - все нормально
    BYTE ADE7758::Full_Check(void)
    {
        OS_DI();
        
        if(Check())//проверка состояний регистров
            return 1;//все нормально
        else
        {
            
            Configure();
            OS_Delay(1);//ждем пока нестабильность пройдет
            if(Check())//проверка состояний регистров
                return 1;//все нормально
            else //после переконфигурации не все нормально - значит делаем ресет
            {
                OS_Delay(100);//ждем пока нестабильность пройдет
                Reset();	//полный сброс
                OS_Delay(10);//ждем еще чуть-чуть для завершения пересброса (на всякий случай)
                Configure();//переконфигурация
                //OS_Delay(500);//ждем пока нестабильность пройдет		
                if(Check())//снова проверка состояний регистров
                    return 1;//после пересброса все нормально
                else
                {
                    OS_Delay(500);//ждем пока нестабильность пройдет
                    Reset();	//полный сброс
                    Configure();//переконфигурация
                    OS_Delay(500);//ждем пока нестабильность пройдет
                    if(Check())//снова проверка состояний регистров
                    {
                        return 1;//после пересброса все нормально
                    }
                    else
                    {
                        return 0;//все проверки неудачные - выход с ошибкой
                    }
                }
            }
        }	
    }

    "Нельзя доверять никому. Совсем никому. Даже самому себе."
    Разумеется это вызывается в прерывании 200 раз в секунду.
    1 тик OS_Delay() = 10мс.
    Разрешение прерываний после сделает "дядя Вася".
    Зато знаем классы и умеем их писать.

    apparato, 18 Апреля 2013

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

    +133

    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
    void DUR_check()
    {
        DUR_tick[DUR_link]=DUR_tmp_tick;
        DUR_tmp_tick=0;
        DUR_link++;
        if(DUR_link > 9) DUR_link=0;
        S32 tmp3 = DUR_tick[0] + DUR_tick[1] + DUR_tick[2] + DUR_tick[3] + DUR_tick[4] + DUR_tick[5] + DUR_tick[6] + DUR_tick[7] + DUR_tick[8] + DUR_tick[9];
        //tmp3=((tmp3-HZ_MIN)*100)/(HZ_MAX-HZ_MIN);
        tmp3=(tmp3/10)-50;
        if(tmp3<0)tmp3=0;
        if(tmp3>100)tmp3=100;
        DUR_level=tmp3;
    }

    Первый блин, возможно комом.
    Один из проектов, который был передан мне.
    Это расчет процента заполнения ёмкости по частотному датчику.
    DUR_tmp_tick - количество прерываний от датчика,
    DUR_level - это и есть рассчитанные проценты.
    Все переменные глобальные, фильтр организован.
    Вызывается функция в другом прерывании, от таймера.
    Впрочем, всё остальное тоже вызывается в прерывании от таймера.

    apparato, 17 Апреля 2013

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

    +138

    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
    typedef struct {
       UInt8 byte0;
       UInt8 byte1;
       UInt8 byte2;
       UInt8 byte3;
       UInt8 byte4;
       UInt8 byte5;
       UInt8 byte6;
       UInt8 byte7;
       UInt8 byte8;
       UInt8 byte9;
       UInt8 byte10;
       UInt8 byte11;
       UInt8 byte12;
       UInt8 byte13;
       UInt8 byte14;
       UInt8 byte15;
    } CFUUIDBytes;

    http://developer.apple.com/library/ios/documentation/CoreFoundation/Reference/CFUUIDRef/Reference/reference.html
    Nuff said.

    byss, 12 Апреля 2013

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

    +136

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    uint16_t min_id, next_id, id;
    
    if (id - min_id < next_id - min_id) {
        // ...
    }

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

    Условие должно было проверять, лежит ли id в диапазоне [min_id; next_id) с учетом перехода через 0.
    Например min_id = 0xFFFE, next_id = 0x0003, id = 0x0002 должно вернуть true, а min_id = 43, next_id = 44, id = 42 - false.

    bormand, 07 Апреля 2013

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