version 1.16, 2015/12/01 16:32:19 |
version 1.17, 2015/12/01 19:25:24 |
Line 139 resize(gpt_t gpt) |
|
Line 139 resize(gpt_t gpt) |
|
static int |
static int |
cmd_resize(gpt_t gpt, int argc, char *argv[]) |
cmd_resize(gpt_t gpt, int argc, char *argv[]) |
{ |
{ |
char *p; |
|
int ch; |
int ch; |
int64_t human_num; |
|
|
|
while ((ch = getopt(argc, argv, "a:i:s:")) != -1) { |
while ((ch = getopt(argc, argv, GPT_AIS)) != -1) { |
switch(ch) { |
if (gpt_add_ais(gpt, &alignment, &entry, &size, ch) == -1) |
case 'a': |
|
if (alignment > 0) |
|
return usage(); |
|
if (dehumanize_number(optarg, &human_num) < 0) |
|
return usage(); |
|
alignment = human_num; |
|
if (alignment < 1) |
|
return usage(); |
|
break; |
|
case 'i': |
|
if (entry > 0) |
|
return usage(); |
|
entry = strtoul(optarg, &p, 10); |
|
if (*p != 0 || entry < 1) |
|
return usage(); |
|
break; |
|
case 's': |
|
if (sectors > 0 || size > 0) |
|
return usage(); |
|
sectors = strtoll(optarg, &p, 10); |
|
if (sectors < 1) |
|
return usage(); |
|
if (*p == '\0') |
|
break; |
|
if (*p == 's' || *p == 'S') { |
|
if (*(p + 1) == '\0') |
|
break; |
|
else |
|
return usage(); |
|
} |
|
if (*p == 'b' || *p == 'B') { |
|
if (*(p + 1) == '\0') { |
|
size = sectors; |
|
sectors = 0; |
|
break; |
|
} else |
|
return usage(); |
|
} |
|
if (dehumanize_number(optarg, &human_num) < 0) |
|
return usage(); |
|
size = human_num; |
|
sectors = 0; |
|
break; |
|
default: |
|
return usage(); |
return usage(); |
} |
|
} |
} |
|
|
if (argc != optind) |
if (argc != optind) |
return usage(); |
return usage(); |
|
|
if (entry == 0) |
if ((sectors = gpt_check_ais(gpt, alignment, entry, size)) == -1) |
return usage(); |
|
|
|
if ((sectors = gpt_check(gpt, alignment, size)) == -1) |
|
return -1; |
return -1; |
|
|
return resize(gpt); |
return resize(gpt); |