- 1
- 2
- 3
- 4
- 5
// Делаем из префикса количество хостов (без .0 и броадкаста)
numips = pow(2.0, (double)(32 - slashnet)) - 2;
// Делаем префикс из маски сети
slashnet = 32 - ((int)log2((double)(0xFFFFFFFF - vnetconfig->nm)) + 1);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+136
// Делаем из префикса количество хостов (без .0 и броадкаста)
numips = pow(2.0, (double)(32 - slashnet)) - 2;
// Делаем префикс из маски сети
slashnet = 32 - ((int)log2((double)(0xFFFFFFFF - vnetconfig->nm)) + 1);
Всё те же, всё оттуда же...
+136
int check_process(pid_t pid, char *search) {
char file[1024], buf[1024];
FILE *FH=NULL;
int rc, ret=0;
snprintf(file, 1024, "/proc/%d/cmdline", pid);
rc = check_file(file);
if (!rc) {
// cmdline exists
ret = 1;
if (search) {
// check if cmdline contains 'search'
FH = fopen(file, "r");
if (FH) {
bzero(buf, 1024);
while(fgets(buf, 1024, FH)) {
char *p;
while((p = memchr(buf, '\0', 1024))) {
*p = 'X';
}
buf[1023] = '\0';
if (strstr(buf, search)) {
ret = 0;
}
}
fclose(FH);
}
} else {
ret = 0;
}
} else {
ret = 1;
}
return(ret);
}
Суровые калифорнийские студенты суровы.
+136
if (init) {
} else {
// thread is not initialized, run first time local state setup
...
}
+135
#define atfl_calc_opcode_(op) \
((op) == (ATFL_OP_PAGE_STORE|ATFL_BUF1|ATFL_PAGE_ERASE) ? 0x83 : (\
(op) == (ATFL_OP_PAGE_STORE|ATFL_BUF2|ATFL_PAGE_ERASE) ? 0x86 : (\
(op) == (ATFL_OP_PAGE_STORE|ATFL_BUF1|ATFL_PAGE_NO_ERASE) ? 0x88 : (\
(op) == (ATFL_OP_PAGE_STORE|ATFL_BUF2|ATFL_PAGE_NO_ERASE) ? 0x89 : (\
(op) == (ATFL_OP_PAGE_LOAD|ATFL_BUF1) ? 0x53 : (\
(op) == (ATFL_OP_PAGE_LOAD|ATFL_BUF2) ? 0x55 : (\
(op) == (ATFL_OP_BUF_READ|ATFL_BUF1) ? 0xD4 : (\
(op) == (ATFL_OP_BUF_READ|ATFL_BUF2) ? 0xD6 : (\
(op) == (ATFL_OP_BUF_WRITE|ATFL_BUF1) ? 0x84 : (\
(op) == (ATFL_OP_BUF_WRITE|ATFL_BUF2) ? 0x87 : (\
(op) == (ATFL_OP_PAGE_ERASE) ? 0x81 : (\
(op) == (ATFL_OP_PAGE_ERASE|ATFL_PAGE_ERASE) ? 0x81 : (\
0)))))))))))))
Угадайте зачем.
+143
// народ на протяжении 5+ лет жаловался что постоянно что-то в этой библиотеке Х
// криво потому что часто (с их слов) попытки вызова ее функций просто обламываются:
int module_main_function()
{
int rc = 0;
// ...
rc = libX_do_work( ... )
if (rc != OK) {
// error!!!
}
// ...
}
// теперь заглянем в инициализацию этого модуля:
int module_init()
{
int rc;
// ... кучи дежурного копи-паста для инициализации скипнуты ...
rc = libZ_init();
if (rc != OK)
{
/* error handling */
}
rc = libY_init();
if (rc != OK)
{
/* error handling */
}
libX_init(); /* лопата */
if (rc != OK)
{
/* error handling */
}
rc = libA_init();
if (rc != OK)
{
/* error handling */
}
// ... и т.д. и т.п.
}
меня жалобы одного отдела начали потиху доставать что наша библиотека (назовем ее libX) у них в модуле постоянно не работает и шо ваабще за херня. как встроили ее - так и не работает. иногда. в 80+ модулях работает как часы - ни один другой отдел не жалуется - а вот в ихнем очень специальном модуле нет.
ну я к ним подвалил. они меня сразу в рабочую функцию тыкать стали - вот тут дескать не работает. я им методично: покаж где инициализация. я когда в инициализацию заглянул, почти сразу начал роготять (давно так не смеялся, наболело за годы).
им минут пять понадобилось что бы в своем копи-паст параде рассмотреть эту глюку.
ЗЫ ответ: на строке с лопатой, не хватает "rc = ". у библиотеки есть внешняя конфигурация на отсутствии коей она у них обламывалась постоянно. и исправить скрипты свои что бы чужая конфигурация не убивалясь им похоже религия не позволяет.
+124
void f()
{
char d[14] = "Hello, error!";
}
void h()
{
char d[14];
std::cout<<d;
}
int main()
{
f();
h();
}
Кто отгадает, что делает этот код(а еще лучше почему он вобще работает) тому ни чего не будет.
+136
memset( fc->key, 0, KEY_LEN+1);
memset( fc->value, 0, VALUE_LEN+1);
strncpy(fc->key, key, strlen( key) + 1);
strncpy(fc->value, value,strlen( value) + 1);
совершенное непонимание работы ф-ии strncpy
+135
while( (*(curr_pos++) != 0x0a) && ((UINT)curr_pos - (UINT)buffer < (UINT)length) );
Ищем новую строку
+144
#include <stdio.h>
int
predicat
(
int
i
)
{
return
i
==
2
;
}
int
main
(
)
{
int
boolean
=
0
;
for
(
int
i
=
0
;
i
<
3
&&
!
(
boolean
=
predicat
(
i
)
)
;
++
i
)
;
printf
(
"%i"
,
boolean
)
;
return
0
;
}
Есть мнение что этот код идеален - максимальная экономия горизонтального простанства. Компилируется (-std=C99)
+129
#define SPI_BUF_SIZE 0x400
#define SDRAM_SPI_0_BUF_MISO (void*)0x100000
#define SDRAM_SPI_0_BUF_MOSI SDRAM_SPI_0_BUF_MISO - SPI_BUF_SIZE
#define SDRAM_SPI_1_BUF_MISO SDRAM_SPI_0_BUF_MOSI - SPI_BUF_SIZE
#define SDRAM_SPI_1_BUF_MOSI SDRAM_SPI_1_BUF_MISO - SPI_BUF_SIZE
#define SDRAM_SPI_2_BUF_MISO SDRAM_SPI_1_BUF_MOSI - SPI_BUF_SIZE
#define SDRAM_SPI_2_BUF_MOSI SDRAM_SPI_2_BUF_MISO - SPI_BUF_SIZE
#define SDRAM_SPI_3_BUF_MISO SDRAM_SPI_2_BUF_MOSI - SPI_BUF_SIZE
#define SDRAM_SPI_3_BUF_MOSI SDRAM_SPI_3_BUF_MISO - SPI_BUF_SIZE
void test()
{
void *buf = SDRAM_SPI_3_BUF_MOSI;
void *buf1 = (void*)0x100000 - 0x400*7;
*buf = *buf1 = 0xAA;
printf("buf=%.2x \tbuf1=%.2x\n ",*buf, buf1);
return;
}
Расскажу преамбулу. Код писался под проц atmel at91sam7x
В этом процессоре есть звено SPI (serial pereferial interface). Но так как звено было спроектировано с небольшим косячком (который кстати в эррате был явно описан) буффер для каждой линии нужно было выделять в сдраме.
Сказано - сделано. Выделили. а так как средства отладки только DBGU и JTAG.
Все волосы на жопе вырвал пока нашел в чем ошибка.
Внимание, вопрос. В чем гавно?