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


         

в нем не удалось стереть


    else

    begin

      if not (gettype(st.mode) in ['b','c','d']) then

      begin

        writeln('Стираю файл ',polniypath);     

        //unlink(polniypath);

        if not unlink(polniypath) then

        begin

          writeln('невозможно стереть файл ',polniypath);

          flag:=false;(*ошибка удаления файла - нельзя будет стереть каталог*)

        end;

      end;

    end;

    el:=readdir(d);

  end;

  closedir(d);

 

  d:=opendir(name);

  el:=readdir(d);

  while el<>nil do

  begin

    polniypath:=name;

    if strcomp(name,'/')=0 then

      strcat(polniypath,el^.name)

    else

    begin

      if name[strlen(name)-1]<>'/' then

        strcat(polniypath,'/');

      strcat(polniypath,el^.name);

    end;

    if not fstat(pchar(polniypath),st) then

      writeln('Ошибка вызова stat для ',polniypath)

    else

    begin

      if (gettype(st.mode)='d') and

         (strcomp(el^.name,'.')<>0) and

         (strcomp(el^.name,'..')<>0) then

      begin

        writeln('Переход в каталог ',polniypath);     

        if not obhod(polniypath) then

          flag:=false;

      end;

    end;

    el:=readdir(d);

  end;

  closedir(d);

  if not flag then

    writeln('Каталог ',name,

    ' не будет стерт, т.к. в нем не удалось стереть часть файлов или каталогов')

  else

  begin

    {$i-}

    rmdir(name);

    if ioresult <> 0 then

    begin

      writeln('Ошибка удаления каталога ',name);

      flag:=false;

    end;

  end;

  writeln('Для каталога ',name, ' получен ',flag);

  obhod:=flag;

end;

var

  name:array [0..2000] of char;

begin

  if paramcount<>0 then

  begin

    name:=paramstr(1);

    obhod(name);

  end

  else

    writeln('С особой осторожностью используйте: ',paramstr(0),' удаляемый каталог');

end.

 

Упражнение 13.32. Напишите функцию рекурсивного обхода дерева подкаталогов и печати имен всех файлов в нем с выдачей атрибутов в форме команды ls -l.


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