stinit: check that tape index values are fully correct

Right now stinit ignores leftover chars in strings such as '9a'; let's
make sure we don't miss these (at least the warning message might give
a hint)..
This commit is contained in:
Iustin Pop
2016-05-06 22:13:02 +02:00
parent a172976fd2
commit 013135f604

View File

@@ -860,6 +860,7 @@ int main(int argc, char **argv)
int argn;
int tapeno, parse_only = FALSE;
char *dbname = NULL;
char *convp;
devdef_tr defs;
defs.do_rewind = FALSE;
@@ -901,9 +902,15 @@ int main(int argc, char **argv)
if (*argv[argn] == '-') {
usage(1);
return 1; /* Never executed but makes gcc happy */
} else if (isdigit(*argv[argn]))
tapeno = strtol(argv[argn], NULL, 0);
else if ((tapeno = tapenum(argv[argn])) < 0) {
} else if (isdigit(*argv[argn])) {
tapeno = strtol(argv[argn], &convp, 0);
if (*argv[argn] != '\0' && *convp != '\0') {
fprintf(stderr, "Invalid tape device index '%s': don't "
"know how to parse '%s'\n",
argv[argn], convp);
continue;
}
} else if ((tapeno = tapenum(argv[argn])) < 0) {
fprintf(stderr, "Can't find tape number for name '%s'.\n", argv[argn]);
continue;
}