Упражнение 13.41. Составьте аналог команды rm.
uses linux,sysutils;
var
f:text;
d:boolean;
k:char;
s:string;
begin
writeln('введите имя файла, который нужно удалить');
readln(s);
assign(f,s);
if s='' then
begin
writeln('повторите попытку');
exit;
end;
writeln('подтвердите удаление файла Y/N');
readln(k);
if (k='Y') or (k='y') then
begin
d:=deletefile(s);
if d then
writeln('файл удален')
else
writeln('файл не удален');
end
else
writeln('файл не удален');
end.
Упражнение 13.42. Используя системный вызов fstat, напишите программу, определяющую тип файла: обычный файл, каталог, устройство, FIFO-файл.
uses linux,strings,sysutils;
function gettype(mode:integer):string;
begin
if S_ISREG(mode) then
gettype:='файл'
else
if S_ISDIR(mode) then
gettype:='каталог'
else
if S_ISCHR(mode) then
gettype:='байтоориентированное устройство'
else
if S_ISBLK(mode) then
gettype:='блочноориентированное устройство'
else
if S_ISFIFO(mode) then
gettype:='FIFO-файл'
else
gettype:='другое';
end;
var
st:stat;
name:array[0..255] of char;
begin
if paramcount = 0 then
name:='.'
else
name:=fexpand(paramstr(1));
if not fstat(pchar(name),st) then
writeln('Ошибка вызова stat для ',name)
else
write(gettype(st.mode));
end.
Упражнение 13.43. Составьте аналог команды chgrp.
Uses linux;
Var
UID,GID:Longint;
F:Text;
Code:Integer;
begin
Writeln('This will only work if you are root.');
if ParamCount<3 then
begin
Writeln('Error!!!');
Writeln('Format: ./task <Filename> <UID> <GID>');
Halt(1);
end;
val(Paramstr(2),UID,Code);
if Code<>0 then
begin
Writeln('Error!!!');
Writeln('Format: ./task <Filename> <UID> <GID>');