2004-08-28 23:17:46 +00:00
|
|
|
/* $Id: args.c,v 1.14 2004-08-28 23:17:45 schaffner Exp $ */
|
2001-01-19 03:30:16 +00:00
|
|
|
/*
|
|
|
|
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.
|
2001-01-19 03:30:16 +00:00
|
|
|
COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
|
|
|
*/
|
2003-02-18 20:35:35 +00:00
|
|
|
|
2001-01-19 03:30:16 +00:00
|
|
|
/*
|
2001-01-31 15:18:05 +00:00
|
|
|
*
|
2003-02-18 20:35:35 +00:00
|
|
|
* Functions for accessing arguments.
|
2001-01-19 03:30:16 +00:00
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
2001-01-31 15:18:05 +00:00
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
#include <conf.h>
|
|
|
|
#endif
|
2001-01-19 03:30:16 +00:00
|
|
|
|
|
|
|
#ifdef RCS
|
2004-08-28 23:17:46 +00:00
|
|
|
static char rcsid[] = "$Id: args.c,v 1.14 2004-08-28 23:17:45 schaffner Exp $";
|
2001-01-19 03:30:16 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <string.h>
|
2003-06-16 06:57:34 +00:00
|
|
|
|
|
|
|
#include "cfile.h"
|
2001-01-19 03:30:16 +00:00
|
|
|
#include "u_mem.h"
|
|
|
|
#include "strio.h"
|
|
|
|
#include "strutil.h"
|
|
|
|
|
|
|
|
int Num_args=0;
|
|
|
|
char * Args[100];
|
|
|
|
|
2004-05-19 21:20:09 +00:00
|
|
|
int FindArg(char *s)
|
|
|
|
{
|
2001-01-19 03:30:16 +00:00
|
|
|
int i;
|
|
|
|
|
|
|
|
for (i=0; i<Num_args; i++ )
|
2003-11-26 12:26:36 +00:00
|
|
|
if (! stricmp( Args[i], s))
|
2001-01-19 03:30:16 +00:00
|
|
|
return i;
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2004-05-19 21:20:09 +00:00
|
|
|
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))
|
2004-05-19 21:20:09 +00:00
|
|
|
{
|
|
|
|
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;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2001-01-19 03:30:16 +00:00
|
|
|
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-01-19 03:30:16 +00:00
|
|
|
}
|
|
|
|
|
2001-11-05 07:39:26 +00:00
|
|
|
void InitArgs( int argc,char **argv )
|
2001-01-19 03:30:16 +00:00
|
|
|
{
|
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] );
|
2001-01-19 03:30:16 +00:00
|
|
|
|
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))
|
|
|
|
{
|
2004-08-06 20:28:57 +00:00
|
|
|
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
|
|
|
}
|
|
|
|
|
2001-01-19 03:30:16 +00:00
|
|
|
atexit(args_exit);
|
|
|
|
}
|