[cdev] исправление find

lenad89 lenad89 на list.ru
Вт Мар 16 04:29:39 MSK 2010


Здравствуйте.

     1. Стиль я исправила. Возможно не полностью, но вроде бы
        соответствует LKCS. Текстовый редактор настроила:
        tab=8пробелов. 
        
     2. ; тоже убрала, где не надо.
        
     3. Подсказку добавлю, когда исправлю разбор опций.
        
     4. Программу проверяла на диске в 30 гб, не сломалась.(отработала
        как find, правда работала дольше)
        
     5. Все сообщения теперь на русском.(пока)
        
     6. Так же изменила cmalloc на xmalloc.
        
     7. Изменила функцию получения каталога на основе этой части 	man 3
        getcwd
        
        «Расширение стандарта POSIX.1 для Linux (libc4, libc5, glibc)
        
        предусматривает следующее: если при вызове buf равно NULL,
        getcwd(), то
        
        буфер выделяется динамически с помощью функции malloc(). В этом
        случае
        
        выделенный буфер имеет размер size; если size равно нулю, то
        выделяется
        
        buf необходимого размера. Возможно (и даже рекомендуется) после
        использования освободить выделенные таким образом буферы с
        помощью free(). »
        
        (если она плохая, предложите как получать.( Использовать
        buf[256]?))
        
     8. Функцию mreaddir разделила на две. 
        
        passgdir - проверяет тип (нужно ли это делать?можно ли обойтись
        без lstat?очень тормозит работу программы) и если каталог
        открывает его.
        
        mreaddir — получает открытый каталог и проходит его пропуская
        «.» и «..»
        
     9. функции проверки и вставки(вывода) и разбор опций будут зависеть
        от ответов на следующие вопросы.
        

Возникшие вопросы :

Сколько каталогов должна получать моя утилита (один или несколько)?

Нужно ли приделывать опцию exec?

Как проверять ошибки системных вызовов?

Например не удалось прочитать stat файла, тогда в зависимости от errno
либо выход , либо сообщение и игнорирование файла, либо еще что-то.

Нужно ли перед выходом(из-за ошибки) освобождать память(строки, возможно
массив структур ,если добавлять другие опции) или это сделает ОС?

Вложила исправленный исходный код.

Пока вызывать программу можно следующими способами

./find - выводит все в текущем каталоге.

./find абсолютный путь - выводи все файлы в указном каталоге

./find абсолютный путь к каталогу шаблон — выводи все файлы в указном
каталоге удовлетворяющих шаблону. 

Можно в main исправить кое-что и сделать еще 

./find шаблон — выводи все файлы в текущем каталоге удовлетворяющих

шаблону.

(станет стандартной после написания разбора опций)






Подробная информация о списке рассылки cdev