123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- /* VMS version of getargs; Uses DCL command parsing.
- Copyright (C) 1989 Free Software Foundation, Inc.
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
- #include <ctype.h>
- #include <stdio.h>
- #include "files.h"
- /*
- * VMS version of getargs(): Uses DCL command parsing
- * (argc and argv are ignored)
- */
- int verboseflag;
- int definesflag;
- int debugflag;
- int nolinesflag;
- extern int fixed_outfiles;
- extern char * version_string;
- /* Allocate storgate and initialize, since bison uses them elsewhere. */
- char *spec_name_prefix;
- char *spec_file_prefix;
- getargs(argc,argv)
- int argc;
- char *argv[];
- {
- register char *cp;
- static char Input_File[256];
- static char output_spec[256], name_prefix_spec[256], file_prefix_spec[256];
- extern char *infile;
- verboseflag = 0;
- definesflag = 0;
- debugflag = 0;
- fixed_outfiles = 0;
- nolinesflag = 0;
- /*
- * Check for /VERBOSE qualifier
- */
- if (cli_present("BISON$VERBOSE")) verboseflag = 1;
- /*
- * Check for /DEFINES qualifier
- */
- if (cli_present("BISON$DEFINES")) definesflag = 1;
- /*
- * Check for /FIXED_OUTFILES qualifier
- */
- if (cli_present("BISON$FIXED_OUTFILES")) fixed_outfiles = 1;
- if (cli_present("BISON$YACC")) fixed_outfiles = 1;
- /*
- * Check for /VERSION qualifier
- */
- if (cli_present("BISON$VERSION")) printf("%s",version_string);
- /*
- * Check for /NOLINES qualifier
- */
- if (cli_present("BISON$NOLINES")) nolinesflag = 1;
- /*
- * Check for /DEBUG qualifier
- */
- if (cli_present("BISON$DEBUG")) debugflag = 1;
- /*
- * Get the filename
- */
- cli_get_value("BISON$INFILE", Input_File, sizeof(Input_File));
- /*
- * Lowercaseify the input filename
- */
- cp = Input_File;
- while(*cp)
- {
- if (isupper(*cp)) *cp = tolower(*cp);
- cp++;
- }
- infile = Input_File;
- /*
- * Get the output file
- */
- if (cli_present("BISON$OUTPUT"))
- {
- cli_get_value("BISON$OUTPUT", output_spec, sizeof(output_spec));
- for (cp = spec_outfile = output_spec; *cp; cp++)
- if (isupper(*cp))
- *cp = tolower(*cp);
- }
- /*
- * Get the output file
- */
- if (cli_present("BISON$FILE_PREFIX"))
- {
- cli_get_value("BISON$FILE_PREFIX", file_prefix_spec,
- sizeof(file_prefix_spec));
- for (cp = spec_file_prefix = file_prefix_spec; *cp; cp++)
- if (isupper(*cp))
- *cp = tolower(*cp);
- }
- /*
- * Get the output file
- */
- if (cli_present("BISON$NAME_PREFIX"))
- {
- cli_get_value("BISON$NAME_PREFIX", name_prefix_spec,
- sizeof(name_prefix_spec));
- for (cp = spec_name_prefix = name_prefix_spec; *cp; cp++)
- if (isupper(*cp))
- *cp = tolower(*cp);
- }
- }
- /************ DCL PARSING ROUTINES **********/
- /*
- * See if "NAME" is present
- */
- int
- cli_present(Name)
- char *Name;
- {
- struct {int Size; char *Ptr;} Descr;
- Descr.Ptr = Name;
- Descr.Size = strlen(Name);
- return((cli$present(&Descr) & 1) ? 1 : 0);
- }
- /*
- * Get value of "NAME"
- */
- int
- cli_get_value(Name,Buffer,Size)
- char *Name;
- char *Buffer;
- {
- struct {int Size; char *Ptr;} Descr1,Descr2;
- Descr1.Ptr = Name;
- Descr1.Size = strlen(Name);
- Descr2.Ptr = Buffer;
- Descr2.Size = Size-1;
- if (cli$get_value(&Descr1,&Descr2,&Descr2.Size) & 1) {
- Buffer[Descr2.Size] = 0;
- return(1);
- }
- return(0);
- }
|