Annotation of GNUtools/bison/vmsgetargs.c, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.