[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