/* Listing #14 */ #include #include #include #include #define BUFF 512 #define PLIKDOC "ram:ala ma kota" char data[LEN_DATSTRING], godzina[LEN_DATSTRING]; struct DateTime dat; char buff[BUFF]="PROGDIR:"; int main(int argc, char *argv[]) { BPTR lock, in, out; long read; struct FileInfoBlock *fib; if (in=Open(strcat(buff, argv[0]), MODE_OLDFILE)) { if (out=Open(PLIKDOC, MODE_NEWFILE)) { while ((read=Read(in, buff, BUFF))>0) if (Write(out, buff, read)!=read) PrintFault(IoErr(), PLIKDOC); if (read==-1) PrintFault(IoErr(), argv[0]); Close(out); } else PrintFault(IoErr(), PLIKDOC); Close(in); } else PrintFault(IoErr(), buff); if (fib=AllocMem(sizeof(struct FileInfoBlock), MEMF_PUBLIC)) { if (lock=Lock("PROGDIR:", SHARED_LOCK)) { if (Examine(lock, fib)) { Printf("Znajduj‘ si‘ w katalogu %s\n", fib->fib_FileName); while (ExNext(lock, fib)) { if (!(fib->fib_Protection & FIBF_EXECUTE)) Printf("\033[1m"); /* Wyt’uszczenie tekstu. */ Printf("Nazwa %8s: %30s", (fib->fib_DirEntryType<0 ? "pliku" : "katalogu"), fib->fib_FileName); dat.dat_Stamp=fib->fib_Date; dat.dat_Format=FORMAT_DOS; /* dd-mmm-yy */ dat.dat_StrDate=data; /* Miejsce na wpisanie daty. */ dat.dat_StrTime=godzina; /* -- // -- godziny. */ if (DateToStr(&dat)) Printf(" %s %s\n", data, godzina); else Printf("\n"); Printf("\033[0m"); /* Wy’cczenie atrybutow. */ } if (IoErr()!=ERROR_NO_MORE_ENTRIES) PrintFault(IoErr(), "ExNext"); } else PrintFault(IoErr(), "Examine"); UnLock(lock); } else PrintFault(IoErr(), "Lock"); FreeMem(fib, sizeof(struct FileInfoBlock)); } else PrintFault(ERROR_NO_FREE_STORE, "AllocMem"); return 0; }