finish fixing segfault (probably caused by argv[] craziness)

this diff brought to you by lmod
This commit is contained in:
anthony
2009-12-30 00:16:56 -07:00
parent e5ac9c2cd8
commit ddd7fdac01

View File

@@ -129,39 +129,44 @@ int main(int argc, char *argv[])
ulOptions = 0; ulOptions = 0;
if ((--argc) == 0) if (argc == 1)
PrintUsage(); PrintUsage();
while (*argv[argn] == '-') { while (argn < argc) {
argc -= 1; if(argv[argn][0] == '-') {
switch (argv[argn++][1]) { switch (argv[argn][1]) {
case '?': case '?':
case 'h': case 'h':
PrintUsage(); PrintUsage();
break; break;
case 'd': case 'd':
ulOptions |= OPTF_DEBUG; ulOptions |= OPTF_DEBUG;
break; break;
case 'p': case 'p':
ulOptions |= OPTF_PAD; ulOptions |= OPTF_PAD;
break; break;
case 'r': case 'r':
ulOptions |= OPTF_TRUNCATE; ulOptions |= OPTF_TRUNCATE;
break; break;
case 'v': case 'v':
ulOptions |= OPTF_VALIDATE; ulOptions |= OPTF_VALIDATE;
break; break;
case 't': case 't':
strncpy(cartname, argv[argn - 1] + 2, 16); strncpy(cartname, argv[argn] + 2, 16);
ulOptions |= OPTF_TITLE; ulOptions |= OPTF_TITLE;
break; break;
case 'q': case 'q':
ulOptions|=OPTF_QUIET; ulOptions|=OPTF_QUIET;
break; break;
}
} }
argn++;
} }
strcpy(filename, argv[argn++]); if(argv[argc - 1][0] == '-')
PrintUsage();
strcpy(filename, argv[argc - 1]);
if (!FileExists(filename)) if (!FileExists(filename))
strcat(filename, ".gb"); strcat(filename, ".gb");