FarRecursiveSearch

Функция FSF.FarRecursiveSearch осуществляет рекурсивный поиск файлов.
void WINAPI FarRecursiveSearch(
  const char *InitDir,
  const char *Mask,
  FRSUSERFUNC UserFunc,
  DWORD Flags,
  void *Param
);

Параметры

InitDir
Указывает на каталог, откуда начинается поиск, например "c:\far\plugins"
Mask
Указывает на маску файлов. Маска файла может быть стандартного ФАРовского вида.
UserFunc
Указывает на функцию типа FRSUSERFUNC, которая будет вызываться для каждого найденного файла. Функция должна вернуть TRUE для продолжения поиска файлов, или FALSE для окончания поиска.
Flags
Указывает на необходимое действие. Может быть следующим (перечисление FRSMODE):
ФлагОписание
FRS_RETUPDIR По окончании поиска параметр FullName функции UserFunc будет содержать имя каталога, в котором обнаружен заданный файл.
FRS_RECUR Поиск заданного файла в дереве каталогов.
FRS_SCANSYMLINK Позволяет искать файлы в символических связях наравне с обычными подкаталогами.
Если при помощи символических связей в файловой системе образованы рекурсивные кольца (например, символическая связь указывает на один из собственных родительских каталогов), поиск будет идти до достижения максимально допустимой длины полного пути файлов.
Param
Указатель на данные пользователя, FAR его никак не обрабатывает, просто передает в UserFunc.

Возвращаемое значение

См. описание параметра Flags

Замечания

  1. Если хотите использовать данные, переданные функции UserFunc по окончании поиска, вы должны скопировать эти данные во внутренние переменные.
  2. Для FAR вплоть до 1.70 beta 3: Для перечисления всех файлов задайте маску файла Mask равную "*".
  3. Для FAR вплоть до 1.70 beta 3: При рекурсивном поиске каталоги, в которых производится поиск, тоже определяются на основании параметра Mask. Поэтому в большинстве случаев при рекурсивном поиске следует указывать маску "*" и в callback-функции при помощи функции CmpName определять, соответствует ли файл критериям поиска.
  4. Если флаг FRS_SCANSYMLINK не указан, то независимо от настроек FAR, символические связи обрабатываться не будут.