improved INI-File parsing
This commit is contained in:
parent
31aa39fefa
commit
c5a5e43c26
|
@ -3,6 +3,7 @@ D1X-Rebirth Changelog
|
||||||
20070502
|
20070502
|
||||||
--------
|
--------
|
||||||
main/game.c, main/gauges.c: resolved some overlapping HUD elements
|
main/game.c, main/gauges.c: resolved some overlapping HUD elements
|
||||||
|
main/args.c: improved INI-File parsing
|
||||||
|
|
||||||
20070421
|
20070421
|
||||||
--------
|
--------
|
||||||
|
|
93
main/args.c
93
main/args.c
|
@ -81,8 +81,9 @@ static char rcsid[] = "$Id: args.c,v 1.1.1.1 2006/03/17 19:42:49 zicodxx Exp $";
|
||||||
#include "strutil.h"
|
#include "strutil.h"
|
||||||
//end added - OE
|
//end added - OE
|
||||||
|
|
||||||
|
#define MAX_ARGS 200
|
||||||
int Num_args=0;
|
int Num_args=0;
|
||||||
char * Args[200];
|
char * Args[MAX_ARGS];
|
||||||
|
|
||||||
int FindArg( char * s ) {
|
int FindArg( char * s ) {
|
||||||
int i;
|
int i;
|
||||||
|
@ -125,57 +126,55 @@ int FindResArg(char *prefix, int *sw, int *sh)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//added 7/11/99 by adb to free arguments (prevent memleak msg)
|
void args_exit(void)
|
||||||
void FreeArgs(void)
|
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for (i=0; i< Num_args; i++ )
|
for (i=0; i< Num_args; i++ )
|
||||||
free(Args[i]);
|
free(Args[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppendArgs(void)
|
||||||
|
{
|
||||||
|
FILE *f;
|
||||||
|
char *line,*word;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if((i=FindArg("-ini")))
|
||||||
|
f=fopen(Args[i+1],"rt");
|
||||||
|
else
|
||||||
|
f=fopen("d1x.ini","rt");
|
||||||
|
|
||||||
|
if(f) {
|
||||||
|
while(!feof(f) && Num_args < MAX_ARGS)
|
||||||
|
{
|
||||||
|
line=fsplitword(f,'\n');
|
||||||
|
word=splitword(line,' ');
|
||||||
|
|
||||||
|
Args[Num_args++] = strdup(word);
|
||||||
|
|
||||||
|
if(line)
|
||||||
|
Args[Num_args++] = strdup(line);
|
||||||
|
|
||||||
|
free(line); free(word);
|
||||||
|
}
|
||||||
|
fclose(f);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//end additions - adb
|
|
||||||
|
|
||||||
void InitArgs( int argc,char **argv )
|
void InitArgs( int argc,char **argv )
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
FILE *f;
|
|
||||||
char *line,*word;
|
Num_args=0;
|
||||||
|
|
||||||
|
for (i=0; i<argc; i++ )
|
||||||
|
Args[Num_args++] = strdup( argv[i] );
|
||||||
|
|
||||||
Num_args=0;
|
for (i=0; i< Num_args; i++ ) {
|
||||||
|
if ( Args[i][0] == '-' )
|
||||||
|
strlwr( Args[i] ); // Convert all args to lowercase
|
||||||
|
}
|
||||||
|
AppendArgs();
|
||||||
|
|
||||||
for (i=0; i<argc; i++ )
|
atexit(args_exit);
|
||||||
Args[Num_args++] = strdup( argv[i] );
|
|
||||||
|
|
||||||
|
|
||||||
for (i=0; i< Num_args; i++ )
|
|
||||||
{
|
|
||||||
//killed 02/06/99 Matthew Mueller - interferes with filename args which might start with /
|
|
||||||
// if ( Args[i][0] == '/' )
|
|
||||||
// Args[i][0] = '-';
|
|
||||||
//end kill -MM
|
|
||||||
if ( Args[i][0] == '-' )
|
|
||||||
strlwr( Args[i] ); // Convert all args to lowercase
|
|
||||||
}
|
|
||||||
if((i=FindArg("-ini")))
|
|
||||||
f=fopen(Args[i+1],"rt");
|
|
||||||
else
|
|
||||||
f=fopen("d1x.ini","rt");
|
|
||||||
|
|
||||||
if(f)
|
|
||||||
{
|
|
||||||
while(!feof(f))
|
|
||||||
{
|
|
||||||
line=fsplitword(f,'\n');
|
|
||||||
word=splitword(line,' ');
|
|
||||||
|
|
||||||
Args[Num_args++] = strdup(word);
|
|
||||||
|
|
||||||
if(line)
|
|
||||||
Args[Num_args++] = strdup(line);
|
|
||||||
|
|
||||||
free(line); free(word);
|
|
||||||
}
|
|
||||||
fclose(f);
|
|
||||||
}
|
|
||||||
|
|
||||||
atexit(FreeArgs);
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue