static int parse_opt(int argc, char * const argv[])
{
while (1) {
- int key;
- char *endp;
+ int key, error = 0;
key = getopt_long(argc, argv, "am:uhV", long_options, NULL);
if (key == -1)
break;
case 'm':
- args.mtdn = strtoul(optarg, &endp, 0);
- if (*endp != '\0' || endp == optarg || args.mtdn < 0)
+ args.mtdn = simple_strtoul(optarg, &error);
+ if (error || args.mtdn < 0)
return errmsg("bad MTD device number: \"%s\"", optarg);
break;
static int parse_opt(int argc, char * const argv[])
{
while (1) {
- int key;
- char *endp;
+ int key, error = 0;
key = getopt_long(argc, argv, "p:m:d:O:hV", long_options, NULL);
if (key == -1)
args.dev = optarg;
break;
case 'd':
- args.devn = strtoul(optarg, &endp, 0);
- if (*endp != '\0' || endp == optarg || args.devn < 0)
+ args.devn = simple_strtoul(optarg, &error);
+ if (error || args.devn < 0)
return errmsg("bad UBI device number: \"%s\"", optarg);
break;
case 'm':
- args.mtdn = strtoul(optarg, &endp, 0);
- if (*endp != '\0' || endp == optarg || args.mtdn < 0)
+ args.mtdn = simple_strtoul(optarg, &error);
+ if (error || args.mtdn < 0)
return errmsg("bad MTD device number: \"%s\"", optarg);
break;
case 'O':
- args.vidoffs = strtoul(optarg, &endp, 0);
- if (*endp != '\0' || endp == optarg || args.vidoffs <= 0)
+ args.vidoffs = simple_strtoul(optarg, &error);
+ if (error || args.vidoffs <= 0)
return errmsg("bad VID header offset: \"%s\"", optarg);
break;
static int parse_opt(int argc, char * const argv[])
{
while (1) {
- int key;
- char *endp;
+ int key, error = 0;
key = getopt_long(argc, argv, "p:m:d:hV", long_options, NULL);
if (key == -1)
args.dev = optarg;
break;
case 'd':
- args.devn = strtoul(optarg, &endp, 0);
- if (*endp != '\0' || endp == optarg || args.devn < 0)
+ args.devn = simple_strtoul(optarg, &error);
+ if (error || args.devn < 0)
return errmsg("bad UBI device number: \"%s\"", optarg);
break;
case 'm':
- args.mtdn = strtoul(optarg, &endp, 0);
- if (*endp != '\0' || endp == optarg || args.mtdn < 0)
+ args.mtdn = simple_strtoul(optarg, &error);
+ if (error || args.mtdn < 0)
return errmsg("bad MTD device number: \"%s\"", optarg);
break;
args.image_seq = rand();
while (1) {
- int key;
- char *endp;
+ int key, error = 0;
unsigned long int image_seq;
key = getopt_long(argc, argv, "nh?Vyqve:x:s:O:f:S:", long_options, NULL);
break;
case 'O':
- args.vid_hdr_offs = strtoul(optarg, &endp, 0);
- if (args.vid_hdr_offs <= 0 || *endp != '\0' || endp == optarg)
+ args.vid_hdr_offs = simple_strtoul(optarg, &error);
+ if (error || args.vid_hdr_offs <= 0)
return errmsg("bad VID header offset: \"%s\"", optarg);
break;
case 'e':
- args.ec = strtoull(optarg, &endp, 0);
- if (args.ec < 0 || *endp != '\0' || endp == optarg)
+ args.ec = simple_strtoull(optarg, &error);
+ if (error || args.ec < 0)
return errmsg("bad erase counter value: \"%s\"", optarg);
if (args.ec >= EC_MAX)
return errmsg("too high erase %llu, counter, max is %u", args.ec, EC_MAX);
break;
case 'x':
- args.ubi_ver = strtoul(optarg, &endp, 0);
- if (args.ubi_ver < 0 || *endp != '\0' || endp == optarg)
+ args.ubi_ver = simple_strtoul(optarg, &error);
+ if (error || args.ubi_ver < 0)
return errmsg("bad UBI version: \"%s\"", optarg);
break;
case 'Q':
- image_seq = strtoul(optarg, &endp, 0);
- if (*endp != '\0' || endp == optarg || image_seq > 0xFFFFFFFF)
+ image_seq = simple_strtoul(optarg, &error);
+ if (error || image_seq > 0xFFFFFFFF)
return errmsg("bad UBI image sequence number: \"%s\"", optarg);
args.image_seq = image_seq;
break;
static int parse_opt(int argc, char * const argv[])
{
while (1) {
- int key;
- char *endp;
+ int key, error = 1;
key = getopt_long(argc, argv, "a:n:N:s:S:t:h?Vm", long_options, NULL);
if (key == -1)
break;
case 'S':
- args.lebs = strtoull(optarg, &endp, 0);
- if (endp == optarg || args.lebs <= 0 || *endp != '\0')
+ args.lebs = simple_strtoull(optarg, &error);
+ if (error || args.lebs <= 0)
return errmsg("bad LEB count: \"%s\"", optarg);
break;
case 'a':
- args.alignment = strtoul(optarg, &endp, 0);
- if (*endp != '\0' || endp == optarg || args.alignment <= 0)
+ args.alignment = simple_strtoul(optarg, &error);
+ if (error || args.alignment <= 0)
return errmsg("bad volume alignment: \"%s\"", optarg);
break;
case 'n':
- args.vol_id = strtoul(optarg, &endp, 0);
- if (*endp != '\0' || endp == optarg || args.vol_id < 0)
+ args.vol_id = simple_strtoul(optarg, &error);
+ if (error || args.vol_id < 0)
return errmsg("bad volume ID: " "\"%s\"", optarg);
break;
static int parse_opt(int argc, char * const argv[])
{
while (1) {
- int key;
- char *endp;
+ int key, error = 0;
key = getopt_long(argc, argv, "an:N:d:hV", long_options, NULL);
if (key == -1)
break;
case 'n':
- args.vol_id = strtoul(optarg, &endp, 0);
- if (*endp != '\0' || endp == optarg || args.vol_id < 0)
+ args.vol_id = simple_strtoul(optarg, &error);
+ if (error || args.vol_id < 0)
return errmsg("bad volume ID: " "\"%s\"", optarg);
break;
break;
case 'd':
- args.devn = strtoul(optarg, &endp, 0);
- if (*endp != '\0' || endp == optarg || args.devn < 0)
+ args.devn = simple_strtoul(optarg, &error);
+ if (error || args.devn < 0)
return errmsg("bad UBI device number: \"%s\"", optarg);
break;
args.image_seq = rand();
while (1) {
- int key;
- char *endp;
+ int key, error = 0;
unsigned long int image_seq;
key = getopt_long(argc, argv, "o:p:m:s:O:e:x:Q:vhV", long_options, NULL);
break;
case 'O':
- args.vid_hdr_offs = strtoul(optarg, &endp, 0);
- if (*endp != '\0' || endp == optarg || args.vid_hdr_offs < 0)
+ args.vid_hdr_offs = simple_strtoul(optarg, &error);
+ if (error || args.vid_hdr_offs < 0)
return errmsg("bad VID header offset: \"%s\"", optarg);
break;
case 'e':
- args.ec = strtoul(optarg, &endp, 0);
- if (*endp != '\0' || endp == optarg || args.ec < 0)
+ args.ec = simple_strtoul(optarg, &error);
+ if (error || args.ec < 0)
return errmsg("bad erase counter value: \"%s\"", optarg);
break;
case 'x':
- args.ubi_ver = strtoul(optarg, &endp, 0);
- if (*endp != '\0' || endp == optarg || args.ubi_ver < 0)
+ args.ubi_ver = simple_strtoul(optarg, &error);
+ if (error || args.ubi_ver < 0)
return errmsg("bad UBI version: \"%s\"", optarg);
break;
case 'Q':
- image_seq = strtoul(optarg, &endp, 0);
- if (*endp != '\0' || endp == optarg || image_seq > 0xFFFFFFFF)
+ image_seq = simple_strtoul(optarg, &error);
+ if (error || image_seq > 0xFFFFFFFF)
return errmsg("bad UBI image sequence number: \"%s\"", optarg);
args.image_seq = image_seq;
break;
static int parse_opt(int argc, char * const argv[])
{
while (1) {
- int key;
- char *endp;
+ int key, error = 0;
key = getopt_long(argc, argv, "n:N:h?V", long_options, NULL);
if (key == -1)
switch (key) {
case 'n':
- args.vol_id = strtoul(optarg, &endp, 0);
- if (*endp != '\0' || endp == optarg || args.vol_id < 0) {
+ args.vol_id = simple_strtoul(optarg, &error);
+ if (error || args.vol_id < 0) {
errmsg("bad volume ID: " "\"%s\"", optarg);
return -1;
}
static int parse_opt(int argc, char * const argv[])
{
while (1) {
- int key;
- char *endp;
+ int key, error = 0;
key = getopt_long(argc, argv, "s:S:n:N:h?V", long_options, NULL);
if (key == -1)
break;
case 'S':
- args.lebs = strtoull(optarg, &endp, 0);
- if (endp == optarg || args.lebs <= 0 || *endp != '\0')
+ args.lebs = simple_strtoull(optarg, &error);
+ if (error || args.lebs <= 0)
return errmsg("bad LEB count: \"%s\"", optarg);
break;
case 'n':
- args.vol_id = strtoul(optarg, &endp, 0);
- if (*endp != '\0' || endp == optarg || args.vol_id < 0) {
+ args.vol_id = simple_strtoul(optarg, &error);
+ if (error || args.vol_id < 0) {
errmsg("bad volume ID: " "\"%s\"", optarg);
return -1;
}
static int parse_opt(int argc, char * const argv[])
{
while (1) {
- int key;
- char *endp;
+ int key, error = 0;
key = getopt_long(argc, argv, "ts:h?V", long_options, NULL);
if (key == -1)
break;
case 's':
- args.size = strtoul(optarg, &endp, 0);
- if (*endp != '\0' || endp == optarg || args.size < 0)
+ args.size = simple_strtoul(optarg, &error);
+ if (error || args.size < 0)
return errmsg("bad size: " "\"%s\"", optarg);
break;