home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume24 / mkid2 / part01 / idx.c < prev    next >
C/C++ Source or Header  |  1991-10-09  |  1KB  |  80 lines

  1. static char copyright[] = "@(#)Copyright (c) 1986, Greg McGary";
  2. static char sccsid[] = "@(#)idx.c    1.2 86/10/17";
  3.  
  4. #include    <stdio.h>
  5. #include    <string.h>
  6. #include    <id.h>
  7. #include    <extern.h>
  8.  
  9. void idxtract();
  10.  
  11. char    *MyName;
  12. static void
  13. usage()
  14. {
  15.     fprintf(stderr, "Usage: %s [-u] [+/-a<ccc>] [-c<ccc>] files\n", MyName);
  16.     exit(1);
  17. }
  18. main(argc, argv)
  19.     int        argc;
  20.     char        **argv;
  21. {
  22.     char        *arg;
  23.     int        op;
  24.     char        *sccsDir = NULL;
  25.     char        *rcsDir = NULL;
  26.  
  27.     MyName = basename(GETARG(argc, argv));
  28.     while (argc) {
  29.         arg = GETARG(argc, argv);
  30.         switch (op = *arg++)
  31.         {
  32.         case '-':
  33.         case '+':
  34.             break;
  35.         default:
  36.             UNGETARG(argc, argv);
  37.             goto argsdone;
  38.         }
  39.         switch (*arg++)
  40.         {
  41.         case 's': sccsDir = arg; break;
  42.         case 'r': rcsDir = arg; break;
  43.         case 'S': setScanArgs(op, arg); break;
  44.         default: usage();
  45.         }
  46.     }
  47. argsdone:
  48.  
  49.     if (argc == 0)
  50.         usage();
  51.     while (argc)
  52.         idxtract(GETARG(argc, argv), sccsDir, rcsDir);
  53.     exit(0);
  54. }
  55.  
  56. void
  57. idxtract(path, sccsDir, rcsDir)
  58.     char        *path;
  59.     char        *sccsDir;
  60.     char        *rcsDir;
  61. {
  62.     register char    *key;
  63.     register char    *(*getId)();
  64.     register FILE    *srcFILE;
  65.     char        *(*getScanner())();
  66.     int        flags;
  67.     char        *suffix;
  68.     char        *filter;
  69.  
  70.     if ((getId = getScanner(getLanguage(suffix=strrchr(path, '.')))) == NULL)
  71.         return;
  72.     if ((srcFILE = openSrcFILE(path, sccsDir, rcsDir, filter=getFilter(suffix))) == NULL)
  73.         return;
  74.  
  75.     while ((key = (*getId)(srcFILE, &flags)) != NULL)
  76.         puts(key);
  77.  
  78.     closeSrcFILE(srcFILE, filter);
  79. }
  80.