;/* ListCom.c 
lc -tr ListCom.c
blink with ListCom.lnk
quit
*/
/*************************************************************************/
/* List Comment    Version 1.02   Release 8.11  Created: August 11, 1991 */
/* ©1991  John Bianchi            Bianchi Computer Systems               */
/*************************************************************************/

#include <proto/dos.h>
#include <string.h>

UBYTE *prog = "ListComments";
UBYTE *ver  = "1.02";
UBYTE *vers = "\0$VER: ListComments 1.02  (10.13.91)";
UBYTE *CopyRight = "©1991 John Bianchi   All Rights Reserved";

struct DosLibrary *DOSBase = NULL;
struct FileInfoBlock fi;

main (argc, argv)
int argc;
char *argv[];

{
   long lock;
   int error;
   char filepath[100],filecomment[80];
   int found=FALSE;
   unsigned int l;
   
   printf("%s  %s    %s\n\n",prog,ver,CopyRight);

   if(argc >=4)
     printf("Error: too many arguments\n");

   if(argc >= 4 || strcmp(argv[1],"?") == 0)
    {
     printf("[3;33mTEMPLATE: [0m %s [1m<path> <comment>[0m\n\n",prog);
     printf("[3m           If no path or comment is specified, all entries in\n");
     printf("           the current directory with a comment will be listed.[0m\n\n");
     exit(FALSE);
    }

   strcpy(filepath, argv[1]);
   strcpy(filecomment, argv[2]);

   lock = Lock(filepath, ACCESS_READ);

   if(!lock)
      {
         printf("ERROR: Can't get a Lock on: %s\n",filepath);
         exit(FALSE);
      }

   l=strlen(filecomment);

   if(Examine(lock, &fi))
     {
      if(fi.fib_DirEntryType > 0)
          {
            printf("Listing of directory: %s\n",fi.fib_FileName);   
            do
               if(*fi.fib_Comment)
               {
                  if(strnicmp(fi.fib_Comment,filecomment,l) == 0)
                  {
                     if(found == FALSE)
                        found=TRUE;
                     printf("%-25s ",fi.fib_FileName);
                     if(fi.fib_DirEntryType > 0)
                        printf("directory");
                     else
                        printf("%9ld",fi.fib_Size);
                     printf(" : %s\n",fi.fib_Comment);
                  }
               }
            while(ExNext(lock, &fi));
          
         error = IoErr();
         if(error != ERROR_NO_MORE_ENTRIES)
           {
              printf("Error %d occurred!\n", error);
              exit(FALSE);
           }
         }
      else
         {
           printf("%-25s ",fi.fib_FileName);
           printf("%9ld",fi.fib_Size);
           printf(" : %s\n",fi.fib_Comment);
           found=TRUE;
         }
      }
   if(found == FALSE)
      printf("no files listed\n");

   exit(TRUE);

}

