summaryrefslogtreecommitdiffstats
path: root/sys-utils/chcpu.c
diff options
context:
space:
mode:
authorHeiko Carstens2011-09-09 11:19:34 +0200
committerKarel Zak2011-09-10 00:00:35 +0200
commit59fb133a029fea29e38a98b5177fc760a0c8dc17 (patch)
tree9cf2c4f7e4e3270b3cb544724376f9e9cdac6555 /sys-utils/chcpu.c
parentlib,cpuset: enforce stricter parsing of cpu lists (diff)
downloadkernel-qcow2-util-linux-59fb133a029fea29e38a98b5177fc760a0c8dc17.tar.gz
kernel-qcow2-util-linux-59fb133a029fea29e38a98b5177fc760a0c8dc17.tar.xz
kernel-qcow2-util-linux-59fb133a029fea29e38a98b5177fc760a0c8dc17.zip
chcpu,cpuset: reduce code duplication for cpu list parsing
Reduce code duplication and print better error message if an unsupported cpu number was passed. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Diffstat (limited to 'sys-utils/chcpu.c')
-rw-r--r--sys-utils/chcpu.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/sys-utils/chcpu.c b/sys-utils/chcpu.c
index 2d5725f83..a5d12c71f 100644
--- a/sys-utils/chcpu.c
+++ b/sys-utils/chcpu.c
@@ -210,6 +210,18 @@ static int cpu_configure(cpu_set_t *cpu_set, size_t setsize, int configure)
return EXIT_SUCCESS;
}
+static void cpu_parse(char *cpu_string, cpu_set_t *cpu_set, size_t setsize)
+{
+ int rc;
+
+ rc = cpulist_parse(cpu_string, cpu_set, setsize, 1);
+ if (rc == 0)
+ return;
+ if (rc == 2)
+ errx(EXIT_FAILURE, _("invalid CPU number in CPU list: %s"), cpu_string);
+ errx(EXIT_FAILURE, _("failed to parse CPU list: %s"), cpu_string);
+}
+
static void __attribute__((__noreturn__)) usage(FILE *out)
{
fprintf(out, _(
@@ -269,27 +281,19 @@ int main(int argc, char *argv[])
switch (c) {
case 'c':
cmd = CMD_CPU_CONFIGURE;
- if (cpulist_parse(argv[optind - 1], cpu_set, setsize, 1))
- errx(EXIT_FAILURE, _("failed to parse CPU list: %s"),
- argv[optind -1 ]);
+ cpu_parse(argv[optind - 1], cpu_set, setsize);
break;
case 'd':
cmd = CMD_CPU_DISABLE;
- if (cpulist_parse(argv[optind - 1], cpu_set, setsize, 1))
- errx(EXIT_FAILURE, _("failed to parse CPU list: %s"),
- argv[optind -1 ]);
+ cpu_parse(argv[optind - 1], cpu_set, setsize);
break;
case 'e':
cmd = CMD_CPU_ENABLE;
- if (cpulist_parse(argv[optind - 1], cpu_set, setsize, 1))
- errx(EXIT_FAILURE, _("failed to parse CPU list: %s"),
- argv[optind -1 ]);
+ cpu_parse(argv[optind - 1], cpu_set, setsize);
break;
case 'g':
cmd = CMD_CPU_DECONFIGURE;
- if (cpulist_parse(argv[optind - 1], cpu_set, setsize, 1))
- errx(EXIT_FAILURE, _("failed to parse CPU list: %s"),
- argv[optind -1 ]);
+ cpu_parse(argv[optind - 1], cpu_set, setsize);
break;
case 'h':
usage(stdout);