From c5a5e43c265d04f298db82d8ac1b58aabc4112e0 Mon Sep 17 00:00:00 2001 From: zicodxx <> Date: Tue, 1 May 2007 23:23:09 +0000 Subject: [PATCH] improved INI-File parsing --- dxx-changelog.txt | 1 + main/args.c | 93 +++++++++++++++++++++++------------------------ 2 files changed, 47 insertions(+), 47 deletions(-) diff --git a/dxx-changelog.txt b/dxx-changelog.txt index 93dbed2f8..d1a88d975 100755 --- a/dxx-changelog.txt +++ b/dxx-changelog.txt @@ -3,6 +3,7 @@ D1X-Rebirth Changelog 20070502 -------- main/game.c, main/gauges.c: resolved some overlapping HUD elements +main/args.c: improved INI-File parsing 20070421 -------- diff --git a/main/args.c b/main/args.c index d557abf69..9d37fd2fb 100755 --- a/main/args.c +++ b/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" //end added - OE +#define MAX_ARGS 200 int Num_args=0; -char * Args[200]; +char * Args[MAX_ARGS]; int FindArg( char * s ) { 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 FreeArgs(void) +void args_exit(void) { - int i; - for (i=0; i< Num_args; i++ ) - free(Args[i]); + int i; + for (i=0; i< Num_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 ) { - int i; - FILE *f; - char *line,*word; + int i; + + Num_args=0; + + for (i=0; i