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


           

Создайте программу chmodr, рекурсивно изменяющую


  begin

       readln(tx,ts);

       d:=pos(':',ts);

       nam1:=copy(ts,1,d-1);

       delete(ts,1,d+2);

       d:=pos(':',ts);

       namb1:=copy(ts,1,d-1);

       delete(ts,1,d);

       val(namb1,d);

       uid:=d;

       d:=pos(':',ts);

       namb2:=copy(ts,1,d-1);

       val(namb2,d);

       gid:=d;

       if nam1=name then

         f:=true;

  end;

  if not f then

  begin

    uid:=-1;

    gid:=-1;

  end;

  close(tx);     

end;

var

  username,groupname,fname:string;

  uid,gid:integer; 

  posit,temp:integer;

begin

  if paramcount<>2 then

  begin

    writeln('Используйте: ',paramstr(0),' владелец[:группа] файл');

    exit;  

  end;

  username:=paramstr(1);

  fname:=paramstr(2);

  posit:=0;

  posit:=pos(':',username);

  if posit<>0 then

  begin

    groupname:=copy(username,posit+1,length(username)-posit);

    username[0]:=char(posit-1);

    getall('/etc/passwd',username,uid,gid);

    getall('/etc/group',groupname,gid,temp);

  end

  else

    getall('/etc/passwd',username,uid,gid);

  if (uid=-1) or (gid=-1) then

  begin

    writeln('Неверное имя владельца (группы)');

    exit;

  end;

  if not chown(fname,uid,gid) then

    perror('Ошибка вызова chown');

end.

Упражнение 13.47. Создайте программу chmodr, рекурсивно изменяющую права доступа для всех файлов каталога и вложенных в него подкаталогов. Имя каталога и права указываются в командной строке.

uses linux,strings,sysutils,crt;

function gettype(mode:integer):char;

begin

  if S_ISREG(mode) then

    gettype:='-'

  else

    if S_ISDIR(mode) then

      gettype:='d'

    else

      if S_ISCHR(mode) then

        gettype:='c'

      else

        if S_ISBLK(mode) then

          gettype:='b'

        else

          if S_ISFIFO(mode) then

            gettype:='p'

          else

            gettype:='l';

end;

function obhod(prava:integer;name:pchar):boolean;

var

  flag:boolean;

  d:PDIR;

  el:pdirent;


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





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий