diff options
author | P J P <pj.pandit@yahoo.co.in> | 2011-06-28 16:31:38 -0700 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2011-06-28 16:31:38 -0700 |
commit | 79363f76918fb783ca67a5a7146569db82c81818 (patch) | |
tree | 6d020687eea8907bba8b9ab07e46e381fe082f62 | |
parent | 29d47a88503589f747389af9bfb3bfe580648106 (diff) | |
download | syslinux-79363f76918fb783ca67a5a7146569db82c81818.tar.gz syslinux-79363f76918fb783ca67a5a7146569db82c81818.tar.xz syslinux-79363f76918fb783ca67a5a7146569db82c81818.zip |
isohybrid: unbreak hex/octal arguments in C versionsyslinux-4.05-pre3
Allow hex/octal arguments in the C version of isohybrid, since they
were accepted by the Perl version.
-rw-r--r-- | utils/isohybrid.c | 19 | ||||
-rw-r--r-- | utils/isohybrid.h | 2 |
2 files changed, 14 insertions, 7 deletions
diff --git a/utils/isohybrid.c b/utils/isohybrid.c index 7ee9a7f0..8a605313 100644 --- a/utils/isohybrid.c +++ b/utils/isohybrid.c @@ -108,6 +108,7 @@ printh(void) int check_option(int argc, char *argv[]) { + char *err = NULL; int n = 0, ind = 0; const char optstr[] = ":h:s:e:o:t:i:fcp?vV"; @@ -135,32 +136,38 @@ check_option(int argc, char *argv[]) switch (n) { case 'h': - if (!sscanf(optarg, "%hu", &head) || head < 1 || head > 256) + head = strtoul(optarg, &err, 0); + if (head < 1 || head > 256) errx(1, "invalid head: `%s', 1 <= head <= 256", optarg); break; case 's': - if (!sscanf(optarg, "%hhu", §or) || sector < 1 || sector > 63) + sector = strtoul(optarg, &err, 0); + if (sector < 1 || sector > 63) errx(1, "invalid sector: `%s', 1 <= sector <= 63", optarg); break; case 'e': - if (!sscanf(optarg, "%hhu", &entry) || entry < 1 || entry > 4) + entry = strtoul(optarg, &err, 0); + if (entry < 1 || entry > 4) errx(1, "invalid entry: `%s', 1 <= entry <= 4", optarg); break; case 'o': - if (!sscanf(optarg, "%hhu", &offset) || offset > 64) + offset = strtoul(optarg, &err, 0); + if (*err || offset > 64) errx(1, "invalid offset: `%s', 0 <= offset <= 64", optarg); break; case 't': - if (!sscanf(optarg, "%hu", &type) || type > 255) + type = strtoul(optarg, &err, 0); + if (*err || type > 255) errx(1, "invalid type: `%s', 0 <= type <= 255", optarg); break; case 'i': - if (!sscanf(optarg, "%u", &id)) + id = strtoul(optarg, &err, 0); + if (*err) errx(1, "invalid id: `%s'", optarg); break; diff --git a/utils/isohybrid.h b/utils/isohybrid.h index 826e90c5..eecf1caa 100644 --- a/utils/isohybrid.h +++ b/utils/isohybrid.h @@ -20,7 +20,7 @@ * */ -#define VERSION "0.11" +#define VERSION "0.12" #define BUFSIZE 2048 #define MBRSIZE 432 |