Добавить в цитаты Настройки чтения

Страница 181 из 253

glob() может быть вызвана более одного раза: при первом вызове флаг GLOB_APPEND не должен быть указан, при всех последующих вызовах он должен быть указан. Вы не можете между вызовами изменять gl_offs, а если вы изменили какие-нибудь значения в gl_pathv или gl_pathc, нужно их восстановить перед последующим вызовом glob().

Возможность многократного вызова glob() позволяет накапливать результаты в одном списке. Это довольно практично, приближается к мощным возможностям раскрывания групповых символов оболочки, но на уровне языка программирования С.

glob() возвращает 0, если не было проблем, или одно из значений из табл. 12.4, если были.

Таблица 12.4. Возвращаемые glob() значения

Флаг Значение GLOB_ABORTED Просмотр остановлен раньше времени, поскольку был установлен GLOB_ERR или функция (*errfunc)() возвратила ненулевой результат GLOB_NOMATCH Ни одно имя файла не соответствовало pattern, а флаг GLOB_NOCHECK не был установлен GLOB_NOSPACE Была проблема с выделением динамической памяти