#include <dos/dos.h>
#include <exec/memory.h>

extern struct DosBase *DosBase;
struct FileLock *MyLock;
struct FileInfoBlock *infoBlock;

main(argc, argv)
int argc;
char *argv[];
{
   if(argc==2)
      MyLock=Lock(argv[1],ACCESS_READ);
   else
      MyLock=Lock("",ACCESS_READ);
   if(!MyLock)
   {
      printf("Can't lock Directory!\n");
      exit(20l);
   }
   infoBlock=AllocMem(sizeof(struct FileInfoBlock),MEMF_ANY);
   if(!infoBlock)
   {
      printf("Can't allocate memory for FileInfoBlock!\n");
      UnLock(MyLock);
      exit(20l);
   }
   if(!Examine(MyLock,infoBlock))
   {
      printf("Can't get infoBlock!\n");
      FreeMem(infoBlock,sizeof(struct FileInfoBlock));
      UnLock(MyLock);
      exit(20);
   }
   while(ExNext(MyLock,infoBlock))
   {
      if(infoBlock->fib_DirEntryType<0)
      {
         printf("%c[23;31;42m  %-20s  %9i\n",27,infoBlock->fib_FileName,infoBlock->fib_Size);
      }
      else
      {
         printf("%c[3;32;41m  %-20s  Directory\n",27,infoBlock->fib_FileName);
      }
   }
   if(IoErr()!=ERROR_NO_MORE_ENTRIES)
      printf("IO-Error!\n");
   printf("%c[23;31;40m\n",27);
   FreeMem(infoBlock,sizeof(struct FileInfoBlock));
   UnLock(MyLock);
   exit(0);
}
