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,12 +129,12 @@ 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();
@@ -152,7 +152,7 @@ int main(int argc, char *argv[])
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':
@@ -160,8 +160,13 @@ int main(int argc, char *argv[])
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");