LINUX.ORG.RU

История изменений

Исправление intelfx, (текущая версия) :

void do_something_with_unit(const char *i, const char *f)

Такого там точно нет.

s = new(char, a + 1 + b + strlen(e) + 1);

...где a, b и e — куски строки после парсинга, которые никак по-другому и не назовёшь.

strcpy(stpcpy(stpcpy(stpcpy(mempcpy(t, p, fn - p), ".#"), extra), fn), «XXXXXX»);

А здесь-то что не так? Это последовательность конкатенаций, записанная в одну строчку для удобства.

Я бы здесь, скорее всего, использовал snprintf() с ключами %.*s, но это дело вкуса.

if (path_is_absolute(option+15))

...которое идёт сразу после строкового литерала, так что всё понятно.

А уж проверок там понатыкано –– иногда некоторые вещи проверяются как минимум три раза подряд (есть подозрение, что чисто из-за абсолютной бессистемности проверок), причем эта информация частенько никак не используется. Т.е. может вначале проверятся кусок строки на валидность (при этом выясняется длина и наличие какого-нибудь @ или постфикса), потом часть этих действий повторяется в нормальном коде.

Месье, наверное, не в курсе, что сначала нужно проверить все входные данные, а потом уже с ними работать?

Исправление intelfx, :

void do_something_with_unit(const char *i, const char *f)

Такого там точно нет.

s = new(char, a + 1 + b + strlen(e) + 1);

...где a, b и e — куски строки после парсинга, которые никак по-другому и не назовёшь.

strcpy(stpcpy(stpcpy(stpcpy(mempcpy(t, p, fn - p), ".#"), extra), fn), «XXXXXX»);

А здесь-то что не так? Последовательность конкатенаций, записанная в одну строчку для удобства.

Я бы здесь, скорее всего, использовал snprintf() с ключами %.*s, но это дело вкуса.

if (path_is_absolute(option+15))

...которое идёт сразу после строкового литерала, так что всё понятно.

А уж проверок там понатыкано –– иногда некоторые вещи проверяются как минимум три раза подряд (есть подозрение, что чисто из-за абсолютной бессистемности проверок), причем эта информация частенько никак не используется. Т.е. может вначале проверятся кусок строки на валидность (при этом выясняется длина и наличие какого-нибудь @ или постфикса), потом часть этих действий повторяется в нормальном коде.

Месье, наверное, не в курсе, что сначала нужно проверить все входные данные, а потом уже с ними работать?

Исходная версия intelfx, :

void do_something_with_unit(const char *i, const char *f)

Такого там точно нет.

s = new(char, a + 1 + b + strlen(e) + 1);

...где a, b и e — куски строки после парсинга, которые никак по-другому и не назовёшь.

strcpy(stpcpy(stpcpy(stpcpy(mempcpy(t, p, fn - p), ".#"), extra), fn), «XXXXXX»);

А здесь-то что не так? Последовательность конкатенаций, записанная в одну строчку для удобства.

if (path_is_absolute(option+15))

...которое идёт сразу после строкового литерала, так что всё понятно.

А уж проверок там понатыкано –– иногда некоторые вещи проверяются как минимум три раза подряд (есть подозрение, что чисто из-за абсолютной бессистемности проверок), причем эта информация частенько никак не используется. Т.е. может вначале проверятся кусок строки на валидность (при этом выясняется длина и наличие какого-нибудь @ или постфикса), потом часть этих действий повторяется в нормальном коде.

Месье, наверное, не в курсе, что сначала нужно проверить все входные данные, а потом уже с ними работать?