-
+132
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 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
-
+132
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 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
-
+129
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 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
-
+135
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 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
-
+137
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 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
-
+136
- 1
- 2
- 3
- 4
- 5
void ps(const char *a)
{/*means putstring*/
for(; '\0' != *a; a++)
putchar(' ' != *a ? *a : (putchar('\n'),'\t'));
}
Как-то ночью, в час унылый, в голове собрав все силы,
Разум темный, как могила, начал свой хромой закон.
Начиная выражаться, а точнее проявляться,
В мир безбрежный и зеленый, зло построило свой ход:
Пальцы тонкие и злые, подчиняясь темной силе,
Выхватив перо в чернилах, вывели сей говногод.
ntfshard,
18 Апреля 2013
-
+131
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 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
-
+133
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 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
-
+138
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 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
-
+136
- 1
- 2
- 3
- 4
- 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