- 1
- 2
- 3
- 4
- 5
- 6
char* getID(){
uint32_t id = calcuate_id(); // Непринципиально, сложные какие то вычисления
static char str[16] = {0};
sprintf(str, "%ud", id);
return str;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+135
char* getID(){
uint32_t id = calcuate_id(); // Непринципиально, сложные какие то вычисления
static char str[16] = {0};
sprintf(str, "%ud", id);
return str;
}
На самом деле кусок модуля к nginx. Вычисляетися целое число, преобразуется в десятичное представление....
+133
hq->rd_period = (i = hq->rd_period+1) != 0 ? i : 1;
что именно хотел сказать автор, неизвестно. предполагаю что `while (!++hq->rd_period);`
+124
bool getDimensionForKey( const char *key, unsigned int *value, config_file_t *config, unsigned int dimension_max, unsigned int object_size )
{
const char *val;
int size = 0;
int sum = 0;
bool negative = false;
bool percentage = false;
if (getValueForKey(key, &val, &size, config))
{
if ( size )
{
if (*val == '-')
{
negative = true;
val++;
size--;
}
if (val[size-1] == '%')
{
percentage = true;
size--;
}
// convert string to integer
for (sum = 0; size > 0; size--)
{
if (*val < '0' || *val > '9')
return false;
sum = (sum * 10) + (*val++ - '0');
}
if (percentage)
sum = ( dimension_max * sum ) / 100;
// calculate offset from opposite origin
if (negative)
sum = ( ( dimension_max - object_size ) - sum );
} else {
// null value calculate center
sum = ( dimension_max - object_size ) / 2;
}
*value = (uint16_t) sum;
return true;
}
// key not found
return false;
}
Cтригозаврус функодавус ...
+125
static U64 mulU64byU64(U64 a, U64 b, U64 * high)
{
U64 b_high = 0;
U64 r_high = 0, r_low = 0;
U64 bit;
for (bit = 1; bit; bit <<= 1) {
if (a & bit) {
if (r_low + b < r_low)
r_high++;
r_low += b;
r_high += b_high;
}
b_high <<= 1;
b_high |= (b & (1ULL << 63)) >> 63;
b <<= 1;
}
if (high)
*high = r_high;
return r_low;
}
Угадай зачем %D
+140
#include <stdio.h>
int main()
{
printf("test\n");
__asm volatile (".rept 10\n");
printf("test\n");
__asm volatile (".endr");
return 0;
}
Еще немного поиздевался над GCC. Через ассемблерные вставки, точнее через вставку директивы .rept иногда можно повторить некоторый кусок кода несколько раз. Работает это далеко не всегда
http://sourceware.org/binutils/docs/as/Rept.html
Этот .rept по сути просто копипастит кусок кода
+141
int i = 10;
while(i --> 0){
print(i);
}
+130
#include <stdio.h>
int main()
{
int a = 5, b = 6;
void* go;
go = ( a > b )? &&true1: &&false1;
goto *go;
true1:
{
printf("%i > %i\n", a, b);
goto next1;
}
false1:
{
printf("%i <= %i\n", a, b);
}
next1:
a = 7;
go = ( a > b )? &&true2: &&false2;
goto *go;
true2:
{
printf("%i > %i\n", a, b);
goto next2;
}
false2:
{
printf("%i <= %i\n", a, b);
}
next2:
return 0;
}
В GCC есть такой экстеншен http://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html
Можно в goto передавать переменную и можно работать с адресами меток. В сочетании с тернарной условной операцией, этим можно заменить if
+123
strncpy (szString, GetPropChar(ParentPicture,"Faceplate instance1","IN0_text_ON") , sizeof(szString));
if (strlen(szString)!=0)
{ SetPropBOOL(lpszPictureName, "Input Bit 0" , "Visible", 1);
SetPropBOOL(lpszPictureName, "I_b0" , "Visible", 1);
}
else
{ SetPropBOOL(lpszPictureName, "Input Bit 0" , "Visible", 0);
SetPropBOOL(lpszPictureName, "I_b0" , "Visible", 0);
}
strncpy (szString, GetPropChar(ParentPicture,"Faceplate instance1","IN1_text_ON") , sizeof(szString));
if (strlen(szString)!=0)
{ SetPropBOOL(lpszPictureName, "Input Bit 1" , "Visible", 1);
SetPropBOOL(lpszPictureName, "I_b1" , "Visible", 1);
}
else
{ SetPropBOOL(lpszPictureName, "Input Bit 1" , "Visible", 0);
SetPropBOOL(lpszPictureName, "I_b1" , "Visible", 0);
}
Скрипт для WinCC. И так 8 раз подряд.
Написал начальник отдела разработчиков (Си— не его специализация), как часть большого концептуального объекта, с которым мне и надо работать. А я не могу с этим работать, ощущая вот такие говенные внутренности.
+129
/*
* Пример программы шифрующей данные симметрично по ключу.
*
* Параметры командной строки:
*
* /program_path [source file path] [destenation file path] [key] [type]
*
* [key] - кодовое слово длинной не более 255 символов.
* [key] - принимает два параметра cript и uncript (шифровать/расшифровать)
*
* Пример использования аргументов:
*
* "/home/aleksandr/Рабочий стол/Крипт/s_cript" "/home/aleksandr/Рабочий стол/Крипт/simple_file_1.txt" "/home/aleksandr/Рабочий стол/Крипт/simple_file_2.txt" simplekey cript
* "/home/aleksandr/Рабочий стол/Крипт/s_cript" "/home/aleksandr/Рабочий стол/Крипт/simple_file_2.txt" "/home/aleksandr/Рабочий стол/Крипт/simple_file_3.txt" simplekey uncript
*
* :P
*
*/
#include <stdio.h>
#include <limits.h>
#include <string.h>
void cript_uncript(FILE* src_fp, FILE* dst_fp, char* key_X, char* block, _Bool type)
{
unsigned char i, real;
while((real = fread(block, sizeof(char), UCHAR_MAX, src_fp)) > 0){
for(i = 0; i < real; i++){
if(type == 0)
block[i] = block[i] + key_X[i];
else if(type == 1)
block[i] = block[i] - key_X[i];
}
fwrite(block, sizeof(char), real, dst_fp);
}
}
void generate_key(char* key, char* key_X){
unsigned char len, i, n = 0;
len = strlen(key) - 1;
for(i = 0; i < UCHAR_MAX; i++) {
key_X[i] = key[n];
if(n++ == len) n = 0;
}
}
int main(int argc, char* argv[]){
FILE* src_fp;
FILE* dst_fp;
char key[UCHAR_MAX], block[UCHAR_MAX], key_X[UCHAR_MAX], s[UCHAR_MAX];
char src_path[1024], dst_path[1024];
if(argc < 4){
puts("not enough arguments\n");
return -1;
}
else{
strcpy(src_path, argv[1]);
strcpy(dst_path, argv[2]);
strcpy(key, argv[3]);
strcpy(s, argv[4]);
}
if((src_fp = fopen(src_path, "rb")) != NULL){
if((dst_fp = fopen(dst_path, "wb")) != NULL){
generate_key(key, key_X);
if(strcmp(s, "cript") == 0)
cript_uncript(src_fp, dst_fp, key_X, block, 0);
if(strcmp(s, "uncript") == 0)
cript_uncript(src_fp, dst_fp, key_X, block, 1);
}
else return -1;
fclose(src_fp);
}
else return -1;
fclose(dst_fp);
Пример программы шифрующей данные симметрично по ключу
+122
#if defined(REG_R1) && !defined(NO_GLOBAL_REG_DECLS)
GLOBAL_REG_DECL(StgUnion,R1,REG_R1)
#else
# define R1 (BaseReg->rR1)
#endif
#if defined(REG_R2) && !defined(NO_GLOBAL_REG_DECLS)
GLOBAL_REG_DECL(StgUnion,R2,REG_R2)
#else
# define R2 (BaseReg->rR2)
#endif
#if defined(REG_R3) && !defined(NO_GLOBAL_REG_DECLS)
GLOBAL_REG_DECL(StgUnion,R3,REG_R3)
#else
# define R3 (BaseReg->rR3)
#endif
#if defined(REG_R4) && !defined(NO_GLOBAL_REG_DECLS)
GLOBAL_REG_DECL(StgUnion,R4,REG_R4)
#else
# define R4 (BaseReg->rR4)
#endif
#if defined(REG_R5) && !defined(NO_GLOBAL_REG_DECLS)
GLOBAL_REG_DECL(StgUnion,R5,REG_R5)
#else
# define R5 (BaseReg->rR5)
#endif
#if defined(REG_R6) && !defined(NO_GLOBAL_REG_DECLS)
GLOBAL_REG_DECL(StgUnion,R6,REG_R6)
#else
# define R6 (BaseReg->rR6)
#endif
#if defined(REG_R7) && !defined(NO_GLOBAL_REG_DECLS)
GLOBAL_REG_DECL(StgUnion,R7,REG_R7)
#else
# define R7 (BaseReg->rR7)
#endif
...
Исходник GHC
https://github.com/ghc/ghc/blob/master/includes/stg/Regs.h#L147