Пример #1
0
void InitArgs( int argc,char **argv )
{
 int i;
 FILE *f;
 char *line,*word;

  Num_args=0;

   for (i=0; i<argc; i++ )
    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);
}
Пример #2
0
Файл: args.c Проект: paud/d2x-xl
void InitArgs (int argc, char **argv)
{
	int 		i, j;
	CFILE 	*f;
	char 		*pszLine, *pszToken, fnIni [FILENAME_LEN];
	static	char **pszArgs = NULL;
	static	int  nArgs = 0;

if (argv) {
	pszArgs = argv;
	nArgs = argc;
	}
else if (pszArgs) {
	argv = pszArgs;
	argc = nArgs;
	}
else
	return;
LogErr ("Loading program arguments\n");
args_exit ();
for (i = 0; i < argc; i++)
	Args [Num_args++] = D2_STRDUP (argv [i]);

for (i = 0; i < Num_args; i++)
	if (Args [i] [0] == '-')
		strlwr (Args [i]);  // Convert all args to lowercase

// look for the ini file
// for unix, allow both ~/.d2x-xl and <config dir>/d2x.ini
#ifdef _DEBUG
GetIniFileName (fnIni, 1);
#else
GetIniFileName (fnIni, 0);
#endif
f = CFOpen (fnIni, "", "rt", 0);
#ifdef _DEBUG
if (!f) {
	GetIniFileName (fnIni, 0);
	f = CFOpen (fnIni, "", "rt", 0);
	}
#endif
if (f) {
	while (!CFEoF (f)) {
		pszLine = fsplitword (f, '\n');
		if (*pszLine && (*pszLine != ';')) {
			pszToken = splitword (pszLine, ' ');
			if (Num_args >= MAX_ARGS)
				break;
			Args [Num_args++] = pszToken;
			if (pszLine) {
				if (Num_args >= MAX_ARGS) {
					LogErr ("too many program arguments\n");
					break;
					}
				Args [Num_args++] = *pszLine ? D2_STRDUP (pszLine) : NULL;
				}
			}
		D2_FREE (pszLine); 
		}
	CFClose (f);
	}
LogErr ("   ");
for (i = j = 0; i < Num_args; i++, j++) {
	if (!Args [i]) 
		continue;
	if ((Args [i][0] == '-') && (isalpha (Args [i][1]) || (j == 2))) {
		LogErr ("\n   ");
		j = 0;
		}
	LogErr (Args [i]);
	LogErr (" ");
	}
LogErr ("\n");
atexit (args_exit);
}