Системное программирование в UNIX средствами Free Pascal


         

Set access and modification time


uses linux;
Function Utime(path:pathstr; utim:utimbuf):Boolean;
Например:
Uses linux;
Var utim : utimbuf;
    year,month,day,hour,minute,second : Word;
      
begin
  { Set access and modification time of executable source }
  GetTime (hour,minute,second);
  GetDate (year,month,day); 
  utim.actime:=LocalToEpoch(year,month,day,hour,minute,second);
  utim.modtime:=utim.actime;
  if not Utime('ex25.pp',utim) then
    writeln ('Call to UTime failed !')
  else
    begin
    Write ('Set access and modification times to : ');
    Write (Hour:2,':',minute:2,':',second,', ');
    Writeln (Day:2,'/',month:2,'/',year:4);
    end;
end.
Следующий пример – процедура filedata выводит данные, связанные с файлом, определяемым переменной pathname. Пример сообщает размер файла, идентификатор пользователя, группу файла, а также права доступа к файлу.
Чтобы преобразовать права доступа к файлу в удобочитаемую форму, похожую на результат, выводимый командой ls, был использован массив octarray чисел типа integer, содержащий значения для основных прав доступа, и массив символов perms, содержащий символьные эквиваленты прав доступа.
(* Процедура filedata выводит данные о файле *)
uses linux;
(*
 * Массив octarray используется для определения
 * установки битов прав доступа.
 *)
const
  octarray:array[0..8] of integer= (
              0400, 0200, 0100,
              0040, 0020, 0010,
              0004, 0002, 0001);
(*
 * Мнемонические коды для прав доступа к файлу,
 * длиной 10 символов, включая нулевой символ в конце строки.
 *)
const
  perms:pchar = 'rwxrwxrwx';
function filedata(pathname:string):integer;
var
  statbuf:tstat;
  descrip:array [0..9] of char;
  j:integer;
begin
  if not fstat (pathname, statbuf) then
  begin
    writeln('Ошибка вызова stat для ', pathname);
    filedata:=-1;
    exit;
  end;
  (* Преобразовать права доступа в удобочитаемую форму *)
  for j:=0 to 8 do
  begin

Содержание  Назад  Вперед