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