- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
bool flag = getFlag();
switch (flag)
{
case true:
// do something
break;
case false:
// do something else
break;
default:
// do something more (??!)
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+143
bool flag = getFlag();
switch (flag)
{
case true:
// do something
break;
case false:
// do something else
break;
default:
// do something more (??!)
}
бывает же...
+132
DWORD WINAPI readPort( LPVOID lpParam )
{
while (1)
{
if (brkListen)
break;
if (((Param*)(void*)lpParam)->port)
if (fgetc(((Param*)(void*)lpParam)->port)!=EOF);
((Param*)(void*)lpParam)->count++;
}
return 0;
}
Кусок программы подсчёта импульсов с оптопорта. Мало того что так делать плохо, так ещё один косяк есть. RS232 ниже 64 бод в винде не держит. так и не выяснил в физике это дело или в оси. Под RTEMS 6.04 64 бод на ура считалось.
+135
/* TODO: make this into something smarter than a linked list */
typedef struct bunchOfInstances_t {
ncInstance * instance;
int count; /* only valid on first node */
struct bunchOfInstances_t * next;
} bunchOfInstances;
ncInstance * get_instance (bunchOfInstances **headp)
{
static bunchOfInstances * current = NULL;
/* advance static variable, wrapping to head if at the end */
if ( current == NULL ) current = * headp;
else current = current->next;
/* return the new value, if any */
if ( current == NULL ) return NULL;
else return current->instance;
}
+105
int ccInstance_to_ncInstance(ccInstance *dst, ncInstance *src);
+114
#define boool long bool
+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 = ". у библиотеки есть внешняя конфигурация на отсутствии коей она у них обламывалась постоянно. и исправить скрипты свои что бы чужая конфигурация не убивалясь им похоже религия не позволяет.