| From b7767afc630d04b859428fbb23ee8d45a58822a8 Mon Sep 17 00:00:00 2001 |
| From: Petr Uzel <petr.uzel@suse.cz> |
| Date: Mon, 19 Sep 2011 15:29:13 +0200 |
| Subject: [PATCH] sfdisk: introduce get_ull() function |
| |
| Signed-off-by: Petr Uzel <petr.uzel@suse.cz> |
| --- |
| fdisk/sfdisk.c | 38 ++++++++++++++++++++++++++++++++++++++ |
| 1 file changed, 38 insertions(+) |
| |
| diff --git a/fdisk/sfdisk.c b/fdisk/sfdisk.c |
| index 9c94185..fe51908 100644 |
| --- a/fdisk/sfdisk.c |
| +++ b/fdisk/sfdisk.c |
| @@ -1861,6 +1861,44 @@ get_ul(char *u, unsigned long *up, unsigned long def, int base) { |
| return 0; |
| } |
| |
| + |
| +/* read a number, use default if absent */ |
| +/* a sign gives an offset from the default */ |
| +static int |
| +get_ull(char *u, unsigned long long *up, unsigned long long def, int base) { |
| + char *nu; |
| + int sign = 0; |
| + unsigned long long val; |
| + |
| + if (*u == '+') { |
| + sign = 1; |
| + u++; |
| + } else if (*u == '-') { |
| + sign = -1; |
| + u++; |
| + } |
| + if (*u) { |
| + errno = 0; |
| + val = strtoull(u, &nu, base); |
| + if (errno == ERANGE) { |
| + do_warn(_("number too big\n")); |
| + return -1; |
| + } |
| + if (*nu) { |
| + do_warn(_("trailing junk after number\n")); |
| + return -1; |
| + } |
| + if (sign == 1) |
| + val = def + val; |
| + else if (sign == -1) |
| + val = def - val; |
| + *up = val; |
| + } else |
| + *up = def; |
| + return 0; |
| +} |
| + |
| + |
| /* There are two common ways to structure extended partitions: |
| as nested boxes, and as a chain. Sometimes the partitions |
| must be given in order. Sometimes all logical partitions |
| -- |
| 1.8.1.5-x20-1 |
| |