Size: a a a

2020 July 24

uユ

und ユビキタス in 2ch /pr/
Если ты безмозглая хуйня неспособная на базовые проверки безопасности то тебе в сях делать неча
источник

S

Solyar in 2ch /pr/
Neol
Ага, недоязык для веба точно лучше ооп
Ясно иди нахуй
источник

S

Solyar in 2ch /pr/
Знаешь сколько проектов миллионников на пыхе?
источник

uユ

und ユビキタス in 2ch /pr/
zeroid
goto Cleanup, мое любимое
Ну это хоть какое то логичное применение для goto в си
источник

S

Solyar in 2ch /pr/
Ваше мнение так важно для нас
источник

uユ

und ユビキタス in 2ch /pr/
В других случаях оно не нужно
источник

N

Neol in 2ch /pr/
Всё, я по сьебам, обидел пхп
источник

uユ

und ユビキタス in 2ch /pr/
Solyar
Знаешь сколько проектов миллионников на пыхе?
Но почему нельзя поливать говном похапу но можно другие языки?
источник

uユ

und ユビキタス in 2ch /pr/
All languages matter
источник

S

Solyar in 2ch /pr/
Делайте что хотите только не нарушайте правила
источник

S

Solyar in 2ch /pr/
мне похуй честно
источник

uユ

und ユビキタス in 2ch /pr/
Ну камон блядь
источник

S

Solyar in 2ch /pr/
Я уже устал вам прививать правильное отношение к чату
источник

N

Neol in 2ch /pr/
Solyar
Знаешь сколько проектов миллионников на пыхе?
Так же можно сказать: "знаешь сколько проектов миллионников на жсе"
источник

tr

tony radonezhsky in 2ch /pr/
Solyar
Я уже устал вам прививать правильное отношение к чату
привет
источник

tr

tony radonezhsky in 2ch /pr/
источник

z

zeroid in 2ch /pr/
В сях проблема избыточного кода, из-за того что норм проверки ошибок нет. Т.е ты в каждом методе должен чекать на NULL грубо говоря, иначе... Ну иначе выстрел в ногу замедленного действия
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in 2ch /pr/
und ユビキタス
Если ты безмозглая хуйня неспособная на базовые проверки безопасности то тебе в сях делать неча
Ага, ахуенно.
FILE *input_file = fopen(argv[1], "rb");
if (input_file == NULL) {
   perror("can't open input file.");
   return EXIT_FAILURE;
}

FILE *output_file = fopen(argv[2], "wb");
if (output_file == NULL) {
   fclose(input_file);
   perror("can't open output file.");
   return EXIT_FAILURE;
}

char *data;
size_t size;
int ret;

if ((ret = read_all(input_file, &data, &size) != SUCCESS)) {
   const char *reason = “”;
   fprintf(stderr, "%s: can't read all input file.", reason);
   fclose(input_file);
   fclose(output_file);
   return EXIT_FAILURE;
}

char *test = NULL;
long transf = strtol(argv[3], &test, 10);
if (*test != '\0') {
   fprintf(stderr, "%s: not int.", argv[3]);
   fclose(input_file);
   fclose(output_file);
   free(data);
   return EXIT_FAILURE;
}

struct picture *picture = malloc(sizeof(struct picture) + size * sizeof(char));

if(picture == NULL) {
   fprintf(stderr, "NOMEM: can't allocate memory for picture.");
   fclose(input_file);
   fclose(output_file);
   free(data);
   return EXIT_FAILURE;
}

const char *end = NULL;
if ((ret = read_header(data, size, &picture->type, &picture->width, &picture->height, &picture->max_color,
                      &picture->pixel_size, &end)) != SUCCESS) {
   const char *reason = “”;
   fprintf(stderr, "%s:can't parse file.", reason);
   fclose(input_file);
   fclose(output_file);
   free(data);
   free(picture);
   return EXIT_FAILURE;
}

memccpy(picture->data, end, sizeof(data[0]),
       picture->height * picture->width * picture->pixel_size * (picture->type == P5 ? 1 : 3));
if (transform(picture, transf) != SUCCESS) {
   fprintf(stderr, "transform error.");
   fclose(input_file);
   fclose(output_file);
   free(data);
   free(picture);
   return EXIT_FAILURE;
}
источник

z

zeroid in 2ch /pr/
zeroid
В сях проблема избыточного кода, из-за того что норм проверки ошибок нет. Т.е ты в каждом методе должен чекать на NULL грубо говоря, иначе... Ну иначе выстрел в ногу замедленного действия
В итоге у тебя ебаный стекфрейм из 20 функции и все они чекают ошибки
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in 2ch /pr/
🎄🎊 R 🎅 Tb| ✡️ 🎊🎄
Ага, ахуенно.
FILE *input_file = fopen(argv[1], "rb");
if (input_file == NULL) {
   perror("can't open input file.");
   return EXIT_FAILURE;
}

FILE *output_file = fopen(argv[2], "wb");
if (output_file == NULL) {
   fclose(input_file);
   perror("can't open output file.");
   return EXIT_FAILURE;
}

char *data;
size_t size;
int ret;

if ((ret = read_all(input_file, &data, &size) != SUCCESS)) {
   const char *reason = “”;
   fprintf(stderr, "%s: can't read all input file.", reason);
   fclose(input_file);
   fclose(output_file);
   return EXIT_FAILURE;
}

char *test = NULL;
long transf = strtol(argv[3], &test, 10);
if (*test != '\0') {
   fprintf(stderr, "%s: not int.", argv[3]);
   fclose(input_file);
   fclose(output_file);
   free(data);
   return EXIT_FAILURE;
}

struct picture *picture = malloc(sizeof(struct picture) + size * sizeof(char));

if(picture == NULL) {
   fprintf(stderr, "NOMEM: can't allocate memory for picture.");
   fclose(input_file);
   fclose(output_file);
   free(data);
   return EXIT_FAILURE;
}

const char *end = NULL;
if ((ret = read_header(data, size, &picture->type, &picture->width, &picture->height, &picture->max_color,
                      &picture->pixel_size, &end)) != SUCCESS) {
   const char *reason = “”;
   fprintf(stderr, "%s:can't parse file.", reason);
   fclose(input_file);
   fclose(output_file);
   free(data);
   free(picture);
   return EXIT_FAILURE;
}

memccpy(picture->data, end, sizeof(data[0]),
       picture->height * picture->width * picture->pixel_size * (picture->type == P5 ? 1 : 3));
if (transform(picture, transf) != SUCCESS) {
   fprintf(stderr, "transform error.");
   fclose(input_file);
   fclose(output_file);
   free(data);
   free(picture);
   return EXIT_FAILURE;
}
И все это обработка ошибок
источник