[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