[cdev] Утилита Echo
Grigoriy A. Sitkarev
sitkarev на komitex.ru
Пт Мар 19 12:44:55 MSK 2010
Это не Linux Kernel Coding Style. Вы не смотрели LKCS.
Скобки фигурные не так расставляются и пробелов не должно быть после `('
и до `)'.
После условия нельзя писать на той-же строке выражение.
if (a) a += b; <-- не правильно
if (a)
a += b; <-- правильно
Карабанова Елена пишет:
> Здравствуйте
>
> я не понимаю в чем моя первая ошибка,
Я в другой исходник смотрел и ошибся. Бывает.
>> Есть глобальная переменная write_newline и локальная переменная в
>> main с таким же именем. У вас из-за этого неправильно обрабатывается
>> опция -n.
>
> моя глобальная переменная была задана один раз, в main я её второй раз не объявляла, опция -n работает
Всё верно у вас.
> подсказку исправила на стандартную
Хорошо.
> в функцию передаются только 2 параметра
Есть ещё нюанс.
И я потребую чтобы вы его тоже поправили. Если значение переменой нас
интересует как булево (true/false) то в операциях сравнения мы им и
пользуемся как логическим.
У вас:
if (put_newline == 1)
а по идее надо бы:
if (put_newline)
Конечно, они тогда и с нулём не сравниваются а было бы:
if (!put_newline)
> при компиляции не выдается предупреждений
Это так.
Но в do_echo_with_escapes нет обработки случая, если после `\'
встретился неподдерживаемый символ, например '\z' не будет обработано.
Нет также обработки случая, когда после `\' вообще больше ничего нет, и
в argv[i] был только этот один символ всего. Я вас предупреждал, что
давал вам только скелет. Подумайте, как просто и красиво сделать
обработку этих возможных ситуаций.
--
Г.А.
Подробная информация о списке рассылки cdev