Обе эти процедуры работают одинаково
uses stdio;
function pathconf(pathname:pchar;name:longint):integer;
function fpathconf(filedes, name:longint):integer;
Обе эти процедуры работают одинаково и возвращают значение для запрошенного ограничения или переменной. Различие между ними заключается в первом параметре: для процедуры pathconf это имя файла или каталога, а для процедуры fpathconf – дескриптор открытого файла. Второй параметр является значением одной из констант, определенных в файле stdio и обозначающих запрашиваемое ограничение.
Следующая программа lookup может использоваться для вывода системных ограничений для заданного файла/каталога. В этом примере программа lookup выводит наиболее интересные из этих значений для стандартного каталога /tmp:
(* Программа lookup - выводит установки ограничений файлов *)
uses stdio;
type table=record
val:integer;
name:pchar;
end;
var
tb:^table;
const options:array [0..3] of table=(
(val:_PC_LINK_MAX; name:'Максимальное число ссылок'),
(val:_PC_NAME_MAX; name:'Максимальная длина имени файла'),
(val:_PC_PATH_MAX; name:'Максимальная длина пути'),
(val:-1; name:nil)
);
begin
tb:=options;
while tb^.name<>nil do
begin
printf('%-32.31s%ld'#$a, [tb^.name, pathconf ('/tmp', tb^.val)]);
inc(tb);
end;
end.
На одной из систем эта программа вывела следующий результат:
Максимальное число ссылок 32767
Максимальная длина имени файла 256
Максимальная длина пути 1024
Эти значения относятся к каталогу /tmp. Максимально возможное число ссылок является характеристикой самого каталога, а максимальная длина имени файла относится к файлам в каталоге. Существуют также общесистемные ограничения (system-wide limits), они декларируются в файле <limits.h> и их значения могут быть определены при помощи похожей процедуры sysconf.