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

Grigoriy A. Sitkarev sitkarev на komitex.ru
Чт Мар 25 16:31:59 MSK 2010


C вами вообще отдельная песня, потому что мне надо не чтобы вы правили 
ошибки свои, а начали разбираться с программированием вообще.

Я тут немного посидел, и сделал для вас пример один, чтобы вы посмотрели 
как можно удобно обвернуть обход каталогов. Хотя это и всей рассылки 
касается, пусть тоже смотрят.

Утилита find должна иметь ещё специальную опцию -L, если она есть то в 
таком случае по ссылкам нужно ходить. Но в таком случае может быть 
проблема с их зацикливанием, надо следить. Здесь есть вариант решения 
такой задачи.

Конечно, этот файл я бы разбил на несколько: macros.h, xfuncs.c, 
traverse-directory.c и т.д. но для удобства в списке я всё в одном файле 
сохраняю. Там могут быть ошибки, но в целом вроде бы всё работает.

Посмотрите, как сделаны опции:

FOLLOW_SYMLINKS - следовать за символическими ссылками
PREVENT_LOOPING - обнаруживать зацикливание каталогов
SKIP_DOT_FILES  - пропускать файлы с точкой
DIRS_ONLY       - сканировать только каталоги

Посмотрите вообще сам принцип организации механизма взаимодействия с 
пользователем через callbacks.

Компилировать можно так:

$ gcc -O0 -g -Wall -G_GNU_SOURCE -o find_utils find_utils.c

Поменяйте в примере каталог, который вы будете обходить потому что там у 
меня мой домашний стоит.

Жду вопросов.

--
Г.А.

lenad89 пишет:
> Здравствуйте, Григорий Александрович.
> 
> Мы внесли некоторые изменения.
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> cdev mailing list
> cdev на wiki.syktsu.ru
> http://wiki.syktsu.ru/cgi-bin/mailman/listinfo/cdev

----------- следущая часть -----------
A non-text attachment was scrubbed...
Name: find_utils.c
Type: text/x-csrc
Size: 14507 bytes
Desc: отсутствует
URL: <http://amplab.syktsu.ru/pipermail/cdev/attachments/20100325/68e7f3cf/attachment.c>


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