(* Программа addx разрешает доступ на выполнение файла *)
uses linux,stdio;

const XPERM=0100;		(* Право на выполнение для владельца *)

var
  k:integer;
  statbuf:tstat;
  
begin
  (* Выполнить для всех файлов в списке аргументов *)
  for k := 1 to paramcount do
  begin
    (* Получить текущий код доступа к файлу *)
    if not fstat(paramstr(k), statbuf) then
    begin
      writeln('addx: ошибка вызова stat для ',paramstr(k));
      continue;
    end;
      (*
         Попытаться разрешить доступ на выполнение
         при помощи оператора побитового ИЛИ
       *)
    statbuf.mode := statbuf.mode or octal(XPERM);
    if not chmod (paramstr(k), statbuf.mode) then
	writeln('addx: ошибка изменения прав доступа для файла ', paramstr(k));
    end; (* Конец цикла *)
  halt(0);
end.
