- 1
x = x + exp(ln(2)*i);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+105
x = x + exp(ln(2)*i);
Встретил в коде опроса датчика, не сразу понял, что это делает.
Когда понял, понял что лучше бы не понимал.
+132
struct ass {
void (*func)(const char *, void *);
void *data;
} asses[] = {
{ NULL, NULL },
/* Тут типа scanf */
{ NULL, NULL },
};
while (getopt_long_only(argc, argv, "", long_options, &option_index) != -1) {
if (option_index < 0)
return 1;
struct ass *derp = &asses[option_index];
if (derp->func != NULL)
derp->func(optarg, derp->data);
}
Правим код начальника.
+138
if(argc > 6){
for(arg = argv[6]; strlen((char *)arg) >= 17 &&
isdigit(arg[0]) &&
isdigit(arg[1]) &&
isdigit(arg[3]) &&
isdigit(arg[4]) &&
isdigit(arg[6]) &&
isdigit(arg[7]) &&
isdigit(arg[9]) &&
isdigit(arg[10]) &&
isdigit(arg[12]) &&
isdigit(arg[13]) &&
isdigit(arg[15]) &&
isdigit(arg[16])
; arg+=18){
int t1, t2;
struct period *sp;
t1 = (arg[0] - '0') * 10 + (arg[1] - '0');
t1 = (t1 * 60) + (arg[3] - '0') * 10 + (arg[4] - '0');
t1 = (t1 * 60) + (arg[6] - '0') * 10 + (arg[7] - '0');
t2 = (arg[9] - '0') * 10 + (arg[10] - '0');
t2 = (t2 * 60) + (arg[12] - '0') * 10 + (arg[13] - '0');
t2 = (t2 * 60) + (arg[15] - '0') * 10 + (arg[16] - '0');
if(t2 < t1) break;
sp = myalloc(sizeof(struct period));
if(sp){
sp->fromtime = t1;
sp->totime = t2;
sp->next = acl->periods;
acl->periods = sp;
}
if(arg[17]!=',') break;
}
}
Получение временных диапазонов, из https://github.com/z3APA3A/3proxy/blob/devel/src/3proxy.c#L1470
Основное говно в том, что нифига не проверяются входные данные т.е. секунд и минут может быть больше 59, а часов может быть больше 23. И проверку if(t2 < t1) лучше заменить на if(t2 <= t1)
А еще там в том исходнике в качестве отступов используются и пробелы и табы. Вообще там очень много говнокода
+139
...
// GRAY SCALE:
#define ER_COLOR_BLACK_DEEP3 ccc3(0, 0, 0)
#define ER_COLOR_BLACK_DEEP4 ccc4(0, 0, 0, 255)
#define ER_COLOR_BLACK3 ccc3(38, 38, 38)
#define ER_COLOR_BLACK4 ccc4(38, 38, 38, 255)
#define ER_COLOR_SIDEMENU_SELECTED3 ccc3(47, 47, 47)
#define ER_COLOR_LETTER_VIEW3 ccc3(51, 51, 51)
#define ER_COLOR_SIDEBAR_BG3 ccc3(58, 58, 58)
#define ER_COLOR_SIDEBAR_BG4 ccc4(58, 58, 58, 255)
#define ER_COLOR_BAR_BG_GRAY3 ccc3(82, 82, 82)
#define ER_COLOR_AUTHOR_NAME3 ccc3(103, 103, 103)
#define ER_COLOR_SIDE_WIDGET3 ccc3(255, 255, 255)
#define ER_COLOR_SIDE_WIDGET4 ccc4(255, 255, 255, 255)
#define ER_COLOR_GRAY_TUT3 ccc3(115, 115, 115)
#define ER_COLOR_GRAY3 ccc3(130, 130, 130)
#define ER_COLOR_PULL_LABEL3 ccc3(142, 142, 142)
#define ER_COLOR_SEND_BG4 ccc4(158, 158, 158, 255)
#define ER_COLOR_SEND_BG3 ccc3(158, 158, 158)
#define ER_COLOR_BADGE_GRAY3 ccc3(149, 149, 149)
#define ER_COLOR_BADGE_GRAY4 ccc4(149, 149, 149, 255)
#define ER_COLOR_SEPARATOR3 ccc3(195, 195, 195)
#define ER_COLOR_LABELS_GRAY3 ccc3(170, 170, 170)
#define ER_COLOR_AUTHOR_CAPTION3 ccc3(173, 173, 173)
#define ER_COLOR_SAFE_EXIT_BG4 ccc4(189, 189, 189, 255)
#define ER_COLOR_SAFE_EXIT_BG3 ccc3(189, 189, 189)
#define ER_COLOR_MENU_GRAY_ONE3 ccc3(204, 204, 204)
#define ER_COLOR_PUSHED_ELEMENT3 ccc3(205, 205, 205)
#define ER_COLOR_GRAY_208_3 ccc3(208, 208, 208)
#define ER_COLOR_GRAY_208_4 ccc4(208, 208, 208, 255)
#define ER_COLOR_MENU_GRAY_TWO3 ccc3(216, 216, 216)
#define ER_COLOR_NEW_GAME_BACK3 ccc3(216, 216, 216)
#define ER_COLOR_NEW_GAME_BACK4 ccc4(216, 216, 216, 255)
#define ER_COLOR_WHITE_222_3 ccc3(222, 222, 222)
#define ER_COLOR_WHITE_232_3 ccc3(232, 232, 232)
#define ER_COLOR_WHITE_MY_PLATE3 ccc3(243, 243, 243)
#define ER_COLOR_WHITE_INTRO4 ccc4(232, 232, 232, 255)
#define ER_COLOR_WHITE3 ccc3(255, 255, 255)
#define ER_COLOR_WHITE4 ccc4(255, 255, 255, 255)
50 оттенков серого в нашем приложении.
+137
for (i = 1; i < argc; i++) {
p = argv[i];
if ((*p != '-') && (*p != '/'))
{
printf("Unknown option %s\n", p);
return 1;
}
p++;
if (strncmp(p, "pcir=", 5) == 0)
{
sscanf(p+5, "%lli", &pci_raddr);
opt |= 1;
}
if (strncmp(p, "pciw=", 5) == 0)
{
sscanf(p+5, "%lli", &pci_waddr);
opt |= 2;
}
if (strncmp(p, "rwlen=", 6) == 0)
sscanf(p+6, "%i", &rwlen);
if (strncmp(p, "count=", 6) == 0)
sscanf(p+6, "%i", &count);
if (strncmp(p, "ch=", 3) == 0)
channel = p+3;
if (strncmp(p, "poll", 4) == 0)
poll = 1;
if (strncmp(p, "fpga_read=", 10) == 0)
{
sscanf(p+10, "%i", &offset);
fpga_read_flag = 1;
}
if (strncmp(p, "fpga_write=", 11) == 0)
{
sscanf(p+11, "%i", &offset);
fpga_write_flag = 1;
}
if (strncmp(p, "data=", 5) == 0)
{
sscanf(p+5, "%i", &data);
data_valid = 1;
}
if (strncmp(p, "dump_to_file=", 13) == 0)
{
filename = p+13;
dump_to_file = 1;
}
if (strncmp(p, "loadnios", 8) == 0)
{
filename = p+8;
load_nios = 1;
}
if (strncmp(p, "DUMP", 4) == 0) // -DUMP
dump = 1;
if (strncmp(p, "flash_read", 10) == 0) // -flash_read
{
flash_read_flag = 1;
}
if (strncmp(p, "file_to_flash", 13) == 0) // -file_to_flash
file_to_flash = 1;
if (strncmp(p, "file=", 5) == 0) // -file
{
fname = p+5;
}
if (strncmp(p, "base=", 5) == 0) // -base
{
sscanf(p+5, "%i", &base);
basevalid = 1;
}
if (strncmp(p, "card=", 5) == 0) // -crd
sscanf(p+5, "%i", &card);
if (strncmp(p, "ver", 3) == 0)
ver = 1;
if (strncmp(p, "dev=", 4) == 0) // -deм
dev = p+4;
}
"А я напишу свой собственный комманд лайн парсер, с хуитой и говном"
+141
int fpga_read(char *dev, unsigned int base_addr, unsigned int offset, int len, unsigned char *buf)
{
unsigned long long pci_raddr;
int actual;
FILE *fi;
fi = fopen(dev, "r");
if (fi == NULL) {
printf("Failed to read from FPGA - Error opening device\n");
return 1;
}
pci_raddr = (unsigned long long) 2 << 32 | (base_addr + offset);
setvbuf(fi, NULL, _IONBF, 0); // disable file buffering
fseeko(fi, pci_raddr, SEEK_SET); // go to the address
actual = fread(buf, 1, len, fi); // read the data
fclose(fi);
if (actual <= 0) {
printf("Error %d reading from device (dev %s, base addr 0x%x, offset 0x%x, len %i)\n", errno, dev, base_addr, offset, len);
return 2;
}
return 0;
}
По многочисленным просьбам говнокодеров, выделил в отдельный пост.
+131
fi = fopen("kokoko.tmp", "rb");
fseek(fi, 0, SEEK_END);
file_size = ftell(fi);
fseek(fi, 0, SEEK_SET);
rewind? system call? Не, не слышали.
+139
#define LIFMT(X) (long int) (X)
Всё тот же квантовохимический пакет. Что характерно, от обычных кастов дальше никто не отказывается.
+135
#include "mono-math.h"
#ifndef HAVE_SIGNBIT
int
mono_signbit_float (float x)
{
union { float f; int i; } u;
u.f = x;
return u.i < 0;
}
int
mono_signbit_double (double x)
{
union { double d; int i[2]; } u;
u.d = x;
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
return u.i [1] < 0;
#else
return u.i [0] < 0;
#endif
}
#endif
Говно тут в том, что int далеко не везде будет 32 бит.
https://github.com/mono/mono/blob/master/mono/utils/mono-math.c оттуда
+143
/*
* BIG UGLY WARNING! This is so damn ugly I wanna puke. Unfortunately, some
* macros that use ASN1_const_CTX still insist on writing in the input
* stream. ARGH! ARGH! ARGH! Let's get rid of this macro package. Please? --
* Richard Levitte
*/
OpenSSL...