1 /* $Id: args.c,v 1.8 2003/02/18 20:35:35 btb Exp $ */
2 /*
3 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
4 SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
5 END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
6 ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
7 IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
8 SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
9 FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
10 CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
11 AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
12 COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
13 */
14
15 /*
16 *
17 * Functions for accessing arguments.
18 *
19 * Old Log:
20 * Revision 2.0 1995/02/27 11:31:22 john
21 * New version 2.0, which has no anonymous unions, builds with
22 * Watcom 10.0, and doesn't require parsing BITMAPS.TBL.
23 *
24 * Revision 1.9 1994/11/29 01:07:57 john
25 * Took out some unused vars.
26 *
27 * Revision 1.8 1994/11/29 01:04:30 john
28 * Took out descent.ini stuff.
29 *
30 * Revision 1.7 1994/09/20 19:29:15 matt
31 * Made args require exact (not substring), though still case insensitive.
32 *
33 * Revision 1.6 1994/07/25 12:33:11 john
34 * Network "pinging" in.
35 *
36 * Revision 1.5 1994/06/17 18:07:50 matt
37 * Took out printf
38 *
39 * Revision 1.4 1994/05/11 19:45:33 john
40 * *** empty log message ***
41 *
42 * Revision 1.3 1994/05/11 18:42:11 john
43 * Added Descent.ini config file.
44 *
45 * Revision 1.2 1994/05/09 17:03:30 john
46 * Split command line parameters into arg.c and arg.h.
47 * Also added /dma, /port, /irq to digi.c
48 *
49 * Revision 1.1 1994/05/09 16:49:11 john
50 * Initial revision
51 *
52 *
53 */
54
55 #ifdef HAVE_CONFIG_H
56 #include <conf.h>
57 #endif
58
59 #ifdef RCS
60 static char rcsid[] = "$Id: args.c,v 1.8 2003/02/18 20:35:35 btb Exp $";
61 #endif
62
63 #include <stdio.h>
64 #include <stdlib.h>
65 #include <string.h>
66 #include "u_mem.h"
67 #include "strio.h"
68 #include "strutil.h"
69
70 int Num_args=0;
71 char * Args[100];
72
FindArg(char * s)73 int FindArg( char * s ) {
74 int i;
75
76 for (i=0; i<Num_args; i++ )
77 if (! strcasecmp( Args[i], s))
78 return i;
79
80 return 0;
81 }
82
args_exit(void)83 void args_exit(void)
84 {
85 int i;
86 for (i=0; i< Num_args; i++ )
87 d_free(Args[i]);
88 }
89
InitArgs(int argc,char ** argv)90 void InitArgs( int argc,char **argv )
91 {
92 int i;
93 FILE *f;
94 char *line,*word;
95
96 Num_args=0;
97
98 for (i=0; i<argc; i++ )
99 Args[Num_args++] = d_strdup( argv[i] );
100
101
102 for (i=0; i< Num_args; i++ ) {
103 if ( Args[i][0] == '-' )
104 strlwr( Args[i] ); // Convert all args to lowercase
105 }
106 if((i=FindArg("-ini")))
107 f=fopen(Args[i+1],"rt");
108 else
109 f=fopen("d2x.ini","rt");
110
111 if(f) {
112 while(!feof(f)) {
113 line=fsplitword(f,'\n');
114 word=splitword(line,' ');
115
116 Args[Num_args++] = d_strdup(word);
117
118 if(line)
119 Args[Num_args++] = d_strdup(line);
120
121 d_free(line); d_free(word);
122 }
123 fclose(f);
124 }
125
126 atexit(args_exit);
127 }
128