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