|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.