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


         

Ошибка вызова opendir для каталога


  begin

    writeln(tekkat, ' - не каталог');  (*диагностика*)

    halt(1);                       (*возврат в предыдущую программу*)

  end;

  d:=opendir(tekkat);           (*попытка открытия каталога для чтения*)

 

  if d=nil then                   (*если попытка не удалась*)

  begin

    writeln(' Ошибка вызова opendir для каталога ', tekkat);  (*диагностика*)

    halt(1);                       (*возврат в предыдущую программу*)

  end;

 

  elem:=readdir(d);               (*попытка чтения элемента каталога*)

  while elem<>nil do

  begin

    (*формирование полного имени элемента каталога*)

    strcopy(fullpath,tekkat);     (*копируем имя текущего каталога в начало полного имени*) 

    if strcomp(tekkat,'/')<>0 then(*если текущий каталог - не корневой*)

    begin

      if fullpath[strlen(fullpath)-1]='/' then (*если в конце имени каталога слэш*)

        fullpath[strlen(fullpath)-1]:=#0;      (*заменяем его признаком конца строки*)

      strcat(fullpath,'/');       (*добавляем после имени каталога слэш-разделитель*)

    end;

    strcat(fullpath,elem^.name);  (*и имя элемента каталога*)

   

    if not fstat(pchar(fullpath),st) then    (*попытка получения информации о файле или каталоге*)

    begin

      writeln('Ошибка получения информации о ', fullpath);  (*диагностика*)

      continue;                 (*возврат в предыдущую программу*)

    end;

    {gmtime_r(st.mtime,mytm);}

    writeln(gettype(st.mode),getrights(st.mode),st.nlink:5,

     '  ',st.size:10,' ',ctime(st.mtime), elem^.name);  (*вывод имени элемента каталога*)

    elem:=readdir(d);               (*попытка чтения элемента каталога*)

  end;

 

  closedir(d);                    (*закрытие открытого opendir каталога*)

end.

Упражнение 13.29. Составьте аналог команды vdir.

uses linux,strings,sysutils;

function getname(uid:integer):string;

const w='/etc/passwd';

var ts,nam1,namb1:string;

    tx:text;

begin

  assign(tx,w);

  reset(tx);


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





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