@@ -79,17 +79,26 @@ void help_func(int argc, char *argv[])
show_help();
}
-static void parse_cpuid(const char *arg, int *cpuid)
+static int parse_cpuid_non_fatal(const char *arg, int *cpuid)
{
if ( sscanf(arg, "%d", cpuid) != 1 || *cpuid < 0 )
{
if ( strcasecmp(arg, "all") )
- {
- fprintf(stderr, "Invalid CPU identifier: '%s'\n", arg);
- exit(EINVAL);
- }
+ return -1;
+
*cpuid = -1;
}
+
+ return 0;
+}
+
+static void parse_cpuid(const char *arg, int *cpuid)
+{
+ if ( parse_cpuid_non_fatal(arg, cpuid) )
+ {
+ fprintf(stderr, "Invalid CPU identifier: '%s'\n", arg);
+ exit(EINVAL);
+ }
}
static void parse_cpuid_and_int(int argc, char *argv[],
Allow cpuid_parse to be re-used without terminating xenpm. HWP will re-use it to optionally parse a cpuid. Unlike other uses of cpuid_parse, parse_hwp_opts will take a variable number of arguments and cannot just check argc. Signed-off-by: Jason Andryuk <jandryuk@gmail.com> --- v2: Retained because cpuid_parse handles numeric cpu numbers and "all". --- tools/misc/xenpm.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-)