home *** CD-ROM | disk | FTP | other *** search
/ gdead.berkeley.edu / gdead.berkeley.edu.tar / gdead.berkeley.edu / pub / cad-tools / ciftomann.tar / cmd_dir / getargs.c < prev    next >
C/C++ Source or Header  |  1988-01-28  |  4KB  |  217 lines

  1. #include <stdio.h>
  2.  
  3. extern char *user_log_file,
  4.         *user_out_file,
  5.         *cmd_file_name,
  6.         *tmp_dir,
  7.         basename[],
  8.         *cif_file_name;
  9.  
  10. extern int dont_ask;
  11. extern int silent;
  12. extern int already_flat;
  13.  
  14. extern FILE *yyin;
  15. extern FILE *cif_file;
  16. FILE *fopen();
  17.  
  18. #define USAGE "Usage : ciftomann [-ys] [-l log_file] [-t tmp_dir] [-p pat_gen] -f cmd_file  -o out_file -i cif_file\n"
  19.  
  20.     /* get_args parses the command line for the various flags */
  21.  
  22. get_args(argc,argv)
  23. int argc;
  24. char **argv;
  25. {
  26.     char *ptr;
  27.     FILE *out_file;
  28.  
  29.     yyin = NULL;
  30.  
  31.     if (argc == 1) {
  32.     fprintf(stderr,USAGE);
  33.     exit(1);
  34.     }
  35.  
  36.     while ( argc-- > 1 ) {
  37.  
  38.     if (*(++argv)[0] == '-') {
  39.  
  40.         ptr = argv[0];
  41.  
  42.         switch (ptr[1]) {
  43.  
  44.         case 'a' :
  45.             if (ptr[2] != '\0') {
  46.             fprintf(stderr,"Usage is '-a basename'\n");
  47.             exit(1);
  48.             }
  49.  
  50.             if ((++argv)[0] == (char *) 0) {
  51.             fprintf(stderr,"Basename is missing in -a option\n");
  52.             fprintf(stderr,USAGE);
  53.             exit(1);
  54.             }
  55.  
  56.             (void) strcpy(basename, argv[0]);
  57.             already_flat = 1;
  58.             argc--;
  59.             break;
  60.  
  61.         case 'f' :
  62.             if (ptr[2] != '\0') {
  63.             fprintf(stderr,"Usage is '-f cmd_file'\n");
  64.             exit(1);
  65.             }
  66.  
  67.             if ((++argv)[0] == (char *) 0) {
  68.             fprintf(stderr,"Filename is missing in -f option\n");
  69.             fprintf(stderr,USAGE);
  70.             exit(1);
  71.             }
  72.  
  73.             if ( (yyin = fopen(argv[0],"r")) == NULL) {
  74.             fprintf(stderr,"Cannot open command file %s\n",
  75.                 argv[0]);
  76.             exit(1);
  77.             }
  78.  
  79.             cmd_file_name = argv[0];
  80.             argc--;
  81.             break;
  82.  
  83.         case 'i' :
  84.             if (ptr[2] != '\0') {
  85.             fprintf(stderr,"Usage is '-i cif_file'\n");
  86.             exit(1);
  87.             }
  88.  
  89.             if ((++argv)[0] == (char *) 0) {
  90.             fprintf(stderr,"Filename is missing in -i option\n");
  91.             fprintf(stderr,USAGE);
  92.             exit(1);
  93.             }
  94.  
  95.             cif_file_name = argv[0];
  96.  
  97.             if ( (cif_file = fopen(cif_file_name,"r")) == NULL ) {
  98.             fprintf(stderr,"Cannot open the cif file %s\n",
  99.                 argv[0]);
  100.             exit(1);
  101.             }
  102.  
  103.             fclose(cif_file);
  104.  
  105.             argc--;
  106.             break;
  107.  
  108.         case 't' :
  109.             if (ptr[2] != '\0') {
  110.             fprintf(stderr,"Usage is '-t tmp_dir'\n");
  111.             exit(1);
  112.             }
  113.  
  114.             if ((++argv)[0] == (char *) 0) {
  115.             fprintf(stderr,"Directory name is missing in -t option\n");
  116.             exit(1);
  117.             }
  118.  
  119.             tmp_dir = *argv;
  120.             argc--;
  121.             break;
  122.  
  123.         case 'p' :
  124.             if (ptr[2] != '\0') {
  125.             fprintf(stderr,"Usage is '-p pat_gen'\n");
  126.             exit(1);
  127.             }
  128.  
  129.             if ((++argv)[0] == (char *) 0) {
  130.             fprintf(stderr,"Pattern Generator name is missing in -p option\n");
  131.             exit(1);
  132.             }
  133.  
  134.             find_pg_desc(*argv);
  135.             argc--;
  136.             break;
  137.  
  138.         case 'l' :
  139.             if (ptr[2] != '\0') {
  140.             fprintf(stderr,"Usage is '-l log_file'\n");
  141.             exit(1);
  142.             }
  143.  
  144.             if ((++argv)[0] == (char *) 0) {
  145.             fprintf(stderr,"Filename is missing in -l option\n");
  146.             exit(1);
  147.             }
  148.  
  149.             user_log_file = *argv;
  150.             argc--;
  151.             break;
  152.  
  153.         case 'o' :
  154.             if (ptr[2] != '\0') {
  155.             fprintf(stderr,"Usage is '-o out_file'\n");
  156.             exit(1);
  157.             }
  158.  
  159.             if ((++argv)[0] == (char *) 0) {
  160.             fprintf(stderr,"Filename is missing in -o option\n");
  161.             exit(1);
  162.             }
  163.  
  164.  
  165.             user_out_file  = *argv;
  166.             argc--;
  167.             break;
  168.  
  169.         default :
  170.             while ( *(++ptr) != '\0' ) {
  171.             
  172.             switch (*ptr) {
  173.                 
  174.                 case 'y' :
  175.                 
  176.                 dont_ask++;
  177.                 break;
  178.                 
  179.                 case 's' :
  180.                 
  181.                 silent++;
  182.                 dont_ask++;
  183.                 break;
  184.                 
  185.                 default :
  186.                 
  187.                 fprintf(stderr,"Unknown flag %c\n",*ptr);
  188.                 exit(1);
  189.             }
  190.             }
  191.         }
  192.     } else {
  193.         fprintf(stderr,"Unrecognizable option, '%s'\n",argv[0]);
  194.         fprintf(stderr,USAGE);
  195.     }
  196.     }
  197.  
  198.     if ( user_out_file == (char *) 0 ) {
  199.     fprintf(stderr,"No out_file given\n");
  200.     fprintf(stderr,USAGE);
  201.     exit(1);
  202.     }
  203.  
  204.     if ( cif_file_name == (char *) 0 ) {
  205.     fprintf(stderr,"No cif_file given\n");
  206.     fprintf(stderr,USAGE);
  207.     exit(1);
  208.     }
  209.  
  210.     if ( yyin == NULL ) {
  211.     fprintf(stderr,"No cmd_file given\n");
  212.     fprintf(stderr,USAGE);
  213.     exit(1);
  214.     }
  215.  
  216. }
  217.