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



         

Описание


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




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