home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 22 gnu / 22-gnu.zip / gnubison.zip / vmsgetargs.c < prev    next >
C/C++ Source or Header  |  1995-10-15  |  4KB  |  181 lines

  1. /* VMS version of getargs; Uses DCL command parsing.
  2.    Copyright (C) 1989, 1992 Free Software Foundation, Inc.
  3.  
  4. This file is part of Bison, the GNU Compiler Compiler.
  5.  
  6. Bison is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 2, or (at your option)
  9. any later version.
  10.  
  11. Bison is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with Bison; see the file COPYING.  If not, write to
  18. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19.  
  20.  
  21. #include <ctype.h>
  22. #include <stdio.h>
  23. #include "files.h"
  24.  
  25. /*
  26.  *    VMS version of getargs: Uses DCL command parsing
  27.  *        (argc and argv are ignored)
  28.  */
  29. int verboseflag;
  30. int definesflag;
  31. int debugflag;
  32. int nolinesflag;
  33. extern int noparserflag;
  34. extern int toknumflag;
  35. extern int rawtoknumflag;
  36. extern int fixed_outfiles;
  37. extern char * version_string;
  38.  
  39. /* Allocate storgate and initialize, since bison uses them elsewhere.  */
  40. char *spec_name_prefix;
  41. char *spec_file_prefix;
  42.  
  43. getargs(argc,argv)
  44.      int argc;
  45.      char *argv[];
  46. {
  47.   register char *cp;
  48.   static char Input_File[256];
  49.   static char output_spec[256], name_prefix_spec[256], file_prefix_spec[256];
  50.   extern char *infile;
  51.  
  52.   verboseflag = 0;
  53.   definesflag = 0;
  54.   debugflag = 0;
  55.   fixed_outfiles = 0;
  56.   nolinesflag = 0;
  57.   noparserflag = 0;
  58.   toknumflag = 0;
  59.   rawtoknumflag = 0;
  60.   /*
  61.    *    Check for /VERBOSE qualifier
  62.    */
  63.   if (cli_present("BISON$VERBOSE")) verboseflag = 1;
  64.   /*
  65.    *    Check for /DEFINES qualifier
  66.    */
  67.   if (cli_present("BISON$DEFINES")) definesflag = 1;
  68.   /*
  69.    *    Check for /FIXED_OUTFILES qualifier
  70.    */
  71.   if (cli_present("BISON$FIXED_OUTFILES")) fixed_outfiles = 1;
  72.   if (cli_present("BISON$YACC")) fixed_outfiles = 1;
  73.   /*
  74.    *    Check for /VERSION qualifier
  75.    */
  76.   if (cli_present("BISON$VERSION")) printf("%s",version_string);
  77.   /*
  78.    *    Check for /NOLINES qualifier
  79.    */
  80.   if (cli_present("BISON$NOLINES")) nolinesflag = 1;
  81.   /*
  82.    *    Check for /NOPARSER qualifier
  83.    */
  84.   if (cli_present("BISON$NOPARSER")) noparserflag = 1;
  85.   /*
  86.    *    Check for /RAW qualifier
  87.    */
  88.   if (cli_present("BISON$RAW")) rawtoknumflag = 1;
  89.   /*
  90.    *    Check for /TOKEN_TABLE qualifier
  91.    */
  92.   if (cli_present("BISON$TOKEN_TABLE")) toknumflag = 1;
  93.   /*
  94.    *    Check for /DEBUG qualifier
  95.    */
  96.   if (cli_present("BISON$DEBUG")) debugflag = 1;
  97.   /*
  98.    *    Get the filename
  99.    */
  100.   cli_get_value("BISON$INFILE", Input_File, sizeof(Input_File));
  101.   /*
  102.    *    Lowercaseify the input filename
  103.    */
  104.   cp = Input_File;
  105.   while(*cp)
  106.     {
  107.       if (isupper(*cp)) *cp = tolower(*cp);
  108.       cp++;
  109.     }
  110.   infile = Input_File;
  111.   /*
  112.    *    Get the output file
  113.    */
  114.   if (cli_present("BISON$OUTPUT"))
  115.     {
  116.       cli_get_value("BISON$OUTPUT", output_spec, sizeof(output_spec));
  117.       for (cp = spec_outfile = output_spec; *cp; cp++)
  118.     if (isupper(*cp))
  119.       *cp = tolower(*cp);
  120.     }
  121.   /*
  122.    *    Get the output file
  123.    */
  124.   if (cli_present("BISON$FILE_PREFIX"))
  125.     {
  126.       cli_get_value("BISON$FILE_PREFIX", file_prefix_spec, 
  127.              sizeof(file_prefix_spec));
  128.       for (cp = spec_file_prefix = file_prefix_spec; *cp; cp++)
  129.     if (isupper(*cp))
  130.       *cp = tolower(*cp);
  131.     }
  132.   /*
  133.    *    Get the output file
  134.    */
  135.   if (cli_present("BISON$NAME_PREFIX"))
  136.     {
  137.       cli_get_value("BISON$NAME_PREFIX", name_prefix_spec, 
  138.              sizeof(name_prefix_spec));
  139.       for (cp = spec_name_prefix = name_prefix_spec; *cp; cp++)
  140.     if (isupper(*cp))
  141.       *cp = tolower(*cp);
  142.     }
  143. }
  144.  
  145. /************        DCL PARSING ROUTINES        **********/
  146.  
  147. /*
  148.  *    See if "NAME" is present
  149.  */
  150. int
  151. cli_present(Name)
  152.      char *Name;
  153. {
  154.   struct {int Size; char *Ptr;} Descr;
  155.  
  156.   Descr.Ptr = Name;
  157.   Descr.Size = strlen(Name);
  158.   return((cli$present(&Descr) & 1) ? 1 : 0);
  159. }
  160.  
  161. /*
  162.  *    Get value of "NAME"
  163.  */
  164. int
  165. cli_get_value(Name,Buffer,Size)
  166.      char *Name;
  167.      char *Buffer;
  168. {
  169.   struct {int Size; char *Ptr;} Descr1,Descr2;
  170.  
  171.   Descr1.Ptr = Name;
  172.   Descr1.Size = strlen(Name);
  173.   Descr2.Ptr = Buffer;
  174.   Descr2.Size = Size-1;
  175.   if (cli$get_value(&Descr1,&Descr2,&Descr2.Size) & 1) {
  176.     Buffer[Descr2.Size] = 0;
  177.     return(1);
  178.   }
  179.   return(0);
  180. }
  181.