dxx-rebirth/misc/args.c

124 lines
2.4 KiB
C
Raw Normal View History

/* $Id: args.c,v 1.14 2004-08-28 23:17:45 schaffner Exp $ */
/*
THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
2003-02-18 20:35:35 +00:00
AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
*/
2003-02-18 20:35:35 +00:00
/*
2001-01-31 15:18:05 +00:00
*
2003-02-18 20:35:35 +00:00
* Functions for accessing arguments.
*
*/
2001-01-31 15:18:05 +00:00
#ifdef HAVE_CONFIG_H
#include <conf.h>
#endif
#ifdef RCS
static char rcsid[] = "$Id: args.c,v 1.14 2004-08-28 23:17:45 schaffner Exp $";
#endif
#include <stdlib.h>
#include <string.h>
2003-06-16 06:57:34 +00:00
#include "cfile.h"
#include "u_mem.h"
#include "strio.h"
#include "strutil.h"
int Num_args=0;
char * Args[100];
int FindArg(char *s)
{
int i;
for (i=0; i<Num_args; i++ )
2003-11-26 12:26:36 +00:00
if (! stricmp( Args[i], s))
return i;
return 0;
}
int FindResArg(char *prefix, int *sw, int *sh)
{
int i;
int w, h;
char *endptr;
int prefixlen = strlen(prefix);
for (i = 0; i < Num_args; ++i)
2004-05-19 22:28:08 +00:00
if (Args[i][0] == '-' && !strnicmp(Args[i] + 1, prefix, prefixlen))
{
w = strtol(Args[i] + 1 + prefixlen, &endptr, 10);
if (w > 0 && endptr && endptr[0] == 'x')
{
h = strtol(endptr + 1, &endptr, 10);
if (h > 0 && endptr[0] == '\0')
{
*sw = w;
*sh = h;
return i;
}
}
}
return 0;
}
void args_exit(void)
{
2002-01-18 07:02:23 +00:00
int i;
for (i=0; i< Num_args; i++ )
d_free(Args[i]);
}
2001-11-05 07:39:26 +00:00
void InitArgs( int argc,char **argv )
{
2002-01-18 07:02:23 +00:00
int i;
2003-06-16 06:57:34 +00:00
CFILE *f;
2002-01-18 07:02:23 +00:00
char *line,*word;
Num_args=0;
for (i=0; i<argc; i++ )
Args[Num_args++] = d_strdup( argv[i] );
2002-01-18 07:02:23 +00:00
for (i=0; i< Num_args; i++ ) {
if ( Args[i][0] == '-' )
strlwr( Args[i] ); // Convert all args to lowercase
}
if((i=FindArg("-ini")))
2003-06-16 06:57:34 +00:00
f = cfopen(Args[i+1], "rt");
2002-02-11 07:36:23 +00:00
else
2003-06-16 06:57:34 +00:00
f = cfopen("d2x.ini", "rt");
2002-01-18 07:02:23 +00:00
if(f) {
2003-06-16 06:57:34 +00:00
while(!cfeof(f))
{
line=fgets_unlimited(f);
2002-01-18 07:02:23 +00:00
word=splitword(line,' ');
Args[Num_args++] = d_strdup(word);
if(line)
Args[Num_args++] = d_strdup(line);
d_free(line); d_free(word);
}
2003-06-16 06:57:34 +00:00
cfclose(f);
2002-01-18 07:02:23 +00:00
}
atexit(args_exit);
}