(*
 * Функция filestatus описывает текущий статус файла
 *)

uses linux;

function filestatus(filedes:integer):integer;
var
  arg1:integer;
begin
  arg1 := fcntl (filedes, F_GETFL);
  if arg1 = -1 then
  begin
    writeln('Ошибка чтения статуса файла');
    filestatus := -1;
    exit;
  end;

  write('Дескриптор файла ', filedes, ': ');

  (*
   * Сравнить аргумент с флагами открытия файла. 
   *)
  case (arg1 and Open_ACCMODE) of
    Open_WRONLY:
      write('Только для записи');
    Open_RDWR:
      write('Для чтения-записи');
    Open_RDONLY:
      write('Только для чтения');
    else
      write('Режим не существует');
  end;

  if (arg1 and Open_APPEND)<>0 then
    write (' - установлен флаг append');
  writeln;
  filestatus := 0;
end;

var
  fd:integer;
begin
  if paramcount > 0 then
  begin
    fd := fdopen (paramstr(1), Open_WRONLY or Open_APPEND, 0);
    if fd <> -1 then
    begin
      filestatus (fd);
      fdclose (fd);
    end;
  end;
end.
