diff --git a/cpupower-use-manpage-on-help-command.patch b/cpupower-use-manpage-on-help-command.patch new file mode 100644 index 0000000..22b1773 --- /dev/null +++ b/cpupower-use-manpage-on-help-command.patch @@ -0,0 +1,657 @@ +From: Dominik Brodowski +Subject: cpupower: use man(1) when calling "cpupower help subcommand" +References: fate#310630 +Patch-Mainline: 498ca793d90aef8ad38a852a969c257f62832738 undefined +Git-commit: 498ca793d90aef8ad38a852a969c257f62832738 + + +Signed-off-by: Thomas Renninger + +Instead of printing something non-formatted to stdout, call +man(1) to show the man page for the proper subcommand. + +Signed-off-by: Dominik Brodowski + +diff --git a/man/cpupower-frequency-info.1 b/man/cpupower-frequency-info.1 +index 3194811..bb60a8d 100644 +--- a/man/cpupower-frequency-info.1 ++++ b/man/cpupower-frequency-info.1 +@@ -1,10 +1,10 @@ +-.TH "cpufreq-info" "1" "0.1" "Mattia Dongili" "" ++.TH "cpupower-frequency-info" "1" "0.1" "Mattia Dongili" "" + .SH "NAME" + .LP +-cpufreq\-info \- Utility to retrieve cpufreq kernel information ++cpupower frequency\-info \- Utility to retrieve cpufreq kernel information + .SH "SYNTAX" + .LP +-cpufreq\-info [\fIoptions\fP] ++cpupower [ \-c cpulist ] frequency\-info [\fIoptions\fP] + .SH "DESCRIPTION" + .LP + A small tool which prints out cpufreq information helpful to developers and interested users. +diff --git a/man/cpupower-frequency-set.1 b/man/cpupower-frequency-set.1 +index 26e3e13..685f469 100644 +--- a/man/cpupower-frequency-set.1 ++++ b/man/cpupower-frequency-set.1 +@@ -1,13 +1,13 @@ +-.TH "cpufreq-set" "1" "0.1" "Mattia Dongili" "" ++.TH "cpupower-freqency-set" "1" "0.1" "Mattia Dongili" "" + .SH "NAME" + .LP +-cpufreq\-set \- A small tool which allows to modify cpufreq settings. ++cpupower frequency\-set \- A small tool which allows to modify cpufreq settings. + .SH "SYNTAX" + .LP +-cpufreq\-set [\fIoptions\fP] ++cpupower [ \-c cpu ] frequency\-set [\fIoptions\fP] + .SH "DESCRIPTION" + .LP +-cpufreq\-set allows you to modify cpufreq settings without having to type e.g. "/sys/devices/system/cpu/cpu0/cpufreq/scaling_set_speed" all the time. ++cpupower frequency\-set allows you to modify cpufreq settings without having to type e.g. "/sys/devices/system/cpu/cpu0/cpufreq/scaling_set_speed" all the time. + .SH "OPTIONS" + .LP + .TP +diff --git a/man/cpupower.1 b/man/cpupower.1 +index 78c20fe..baf741d 100644 +--- a/man/cpupower.1 ++++ b/man/cpupower.1 +@@ -3,7 +3,7 @@ + cpupower \- Shows and sets processor power related values + .SH SYNOPSIS + .ft B +-.B cpupower [ \-c cpulist ] subcommand [ARGS] ++.B cpupower [ \-c cpulist ] [ARGS] + + .B cpupower \-v|\-\-version + +@@ -13,24 +13,24 @@ cpupower \- Shows and sets processor power related values + \fBcpupower \fP is a collection of tools to examine and tune power saving + related features of your processor. + +-The manpages of the subcommands (cpupower\-(1)) provide detailed ++The manpages of the commands (cpupower\-(1)) provide detailed + descriptions of supported features. Run \fBcpupower help\fP to get an overview +-of supported subcommands. ++of supported commands. + + .SH Options + .PP + \-\-help, \-h + .RS 4 +-Shows supported subcommands and general usage. ++Shows supported commands and general usage. + .RE + .PP + \-\-cpu cpulist, \-c cpulist + .RS 4 + Only show or set values for specific cores. +-This option is not supported by all subcommands, details can be found in the +-manpages of the subcommands. ++This option is not supported by all commands, details can be found in the ++manpages of the commands. + +-Some subcommands access all cores (typically the *\-set commands), some only ++Some commands access all cores (typically the *\-set commands), some only + the first core (typically the *\-info commands) by default. + + The syntax for is based on how the kernel exports CPU bitmasks via +diff --git a/utils/builtin.h b/utils/builtin.h +index c870ffb..c10496f 100644 +--- a/utils/builtin.h ++++ b/utils/builtin.h +@@ -8,11 +8,4 @@ extern int cmd_freq_info(int argc, const char **argv); + extern int cmd_idle_info(int argc, const char **argv); + extern int cmd_monitor(int argc, const char **argv); + +-extern void set_help(void); +-extern void info_help(void); +-extern void freq_set_help(void); +-extern void freq_info_help(void); +-extern void idle_info_help(void); +-extern void monitor_help(void); +- + #endif +diff --git a/utils/cpufreq-info.c b/utils/cpufreq-info.c +index 5a1d25f..28953c9 100644 +--- a/utils/cpufreq-info.c ++++ b/utils/cpufreq-info.c +@@ -510,37 +510,6 @@ static int get_latency(unsigned int cpu, unsigned int human) + return 0; + } + +-void freq_info_help(void) +-{ +- printf(_("Usage: cpupower freqinfo [options]\n")); +- printf(_("Options:\n")); +- printf(_(" -e, --debug Prints out debug information [default]\n")); +- printf(_(" -f, --freq Get frequency the CPU currently runs at, according\n" +- " to the cpufreq core *\n")); +- printf(_(" -w, --hwfreq Get frequency the CPU currently runs at, by reading\n" +- " it from hardware (only available to root) *\n")); +- printf(_(" -l, --hwlimits Determine the minimum and maximum CPU frequency allowed *\n")); +- printf(_(" -d, --driver Determines the used cpufreq kernel driver *\n")); +- printf(_(" -p, --policy Gets the currently used cpufreq policy *\n")); +- printf(_(" -g, --governors Determines available cpufreq governors *\n")); +- printf(_(" -r, --related-cpus Determines which CPUs run at the same hardware frequency *\n")); +- printf(_(" -a, --affected-cpus Determines which CPUs need to have their frequency\n" +- " coordinated by software *\n")); +- printf(_(" -s, --stats Shows cpufreq statistics if available\n")); +- printf(_(" -y, --latency Determines the maximum latency on CPU frequency changes *\n")); +- printf(_(" -b, --boost Checks for turbo or boost modes *\n")); +- printf(_(" -o, --proc Prints out information like provided by the /proc/cpufreq\n" +- " interface in 2.4. and early 2.6. kernels\n")); +- printf(_(" -m, --human human-readable output for the -f, -w, -s and -y parameters\n")); +- printf(_(" -h, --help Prints out this screen\n")); +- +- printf("\n"); +- printf(_("If no argument is given, full output about\n" +- "cpufreq is printed which is useful e.g. for reporting bugs.\n\n")); +- printf(_("By default info of CPU 0 is shown which can be overridden\n" +- "with the cpupower --cpu main command option.\n")); +-} +- + static struct option info_opts[] = { + { .name = "debug", .has_arg = no_argument, .flag = NULL, .val = 'e'}, + { .name = "boost", .has_arg = no_argument, .flag = NULL, .val = 'b'}, +@@ -556,7 +525,6 @@ static struct option info_opts[] = { + { .name = "latency", .has_arg = no_argument, .flag = NULL, .val = 'y'}, + { .name = "proc", .has_arg = no_argument, .flag = NULL, .val = 'o'}, + { .name = "human", .has_arg = no_argument, .flag = NULL, .val = 'm'}, +- { .name = "help", .has_arg = no_argument, .flag = NULL, .val = 'h'}, + { }, + }; + +@@ -570,16 +538,12 @@ int cmd_freq_info(int argc, char **argv) + int output_param = 0; + + do { +- ret = getopt_long(argc, argv, "hoefwldpgrasmyb", info_opts, NULL); ++ ret = getopt_long(argc, argv, "oefwldpgrasmyb", info_opts, NULL); + switch (ret) { + case '?': + output_param = '?'; + cont = 0; + break; +- case 'h': +- output_param = 'h'; +- cont = 0; +- break; + case -1: + cont = 0; + break; +@@ -642,11 +606,7 @@ int cmd_freq_info(int argc, char **argv) + return -EINVAL; + case '?': + printf(_("invalid or unknown argument\n")); +- freq_info_help(); + return -EINVAL; +- case 'h': +- freq_info_help(); +- return EXIT_SUCCESS; + case 'o': + proc_cpufreq_output(); + return EXIT_SUCCESS; +diff --git a/utils/cpufreq-set.c b/utils/cpufreq-set.c +index 5f78362..dd1539e 100644 +--- a/utils/cpufreq-set.c ++++ b/utils/cpufreq-set.c +@@ -20,34 +20,11 @@ + + #define NORM_FREQ_LEN 32 + +-void freq_set_help(void) +-{ +- printf(_("Usage: cpupower frequency-set [options]\n")); +- printf(_("Options:\n")); +- printf(_(" -d FREQ, --min FREQ new minimum CPU frequency the governor may select\n")); +- printf(_(" -u FREQ, --max FREQ new maximum CPU frequency the governor may select\n")); +- printf(_(" -g GOV, --governor GOV new cpufreq governor\n")); +- printf(_(" -f FREQ, --freq FREQ specific frequency to be set. Requires userspace\n" +- " governor to be available and loaded\n")); +- printf(_(" -r, --related Switches all hardware-related CPUs\n")); +- printf(_(" -h, --help Prints out this screen\n")); +- printf("\n"); +- printf(_("Notes:\n" +- "1. Omitting the -c or --cpu argument is equivalent to setting it to \"all\"\n")); +- printf(_("2. The -f FREQ, --freq FREQ parameter cannot be combined with any other parameter\n" +- " except the -c CPU, --cpu CPU parameter\n" +- "3. FREQuencies can be passed in Hz, kHz (default), MHz, GHz, or THz\n" +- " by postfixing the value with the wanted unit name, without any space\n" +- " (FREQuency in kHz =^ Hz * 0.001 =^ MHz * 1000 =^ GHz * 1000000).\n")); +- +-} +- + static struct option set_opts[] = { + { .name = "min", .has_arg = required_argument, .flag = NULL, .val = 'd'}, + { .name = "max", .has_arg = required_argument, .flag = NULL, .val = 'u'}, + { .name = "governor", .has_arg = required_argument, .flag = NULL, .val = 'g'}, + { .name = "freq", .has_arg = required_argument, .flag = NULL, .val = 'f'}, +- { .name = "help", .has_arg = no_argument, .flag = NULL, .val = 'h'}, + { .name = "related", .has_arg = no_argument, .flag = NULL, .val='r'}, + { }, + }; +@@ -80,7 +57,6 @@ const struct freq_units def_units[] = { + static void print_unknown_arg(void) + { + printf(_("invalid or unknown argument\n")); +- freq_set_help(); + } + + static unsigned long string_to_frequency(const char *str) +@@ -231,14 +207,11 @@ int cmd_freq_set(int argc, char **argv) + + /* parameter parsing */ + do { +- ret = getopt_long(argc, argv, "d:u:g:f:hr", set_opts, NULL); ++ ret = getopt_long(argc, argv, "d:u:g:f:r", set_opts, NULL); + switch (ret) { + case '?': + print_unknown_arg(); + return -EINVAL; +- case 'h': +- freq_set_help(); +- return 0; + case -1: + cont = 0; + break; +diff --git a/utils/cpuidle-info.c b/utils/cpuidle-info.c +index 70da357..b028267 100644 +--- a/utils/cpuidle-info.c ++++ b/utils/cpuidle-info.c +@@ -139,30 +139,14 @@ static void proc_cpuidle_cpu_output(unsigned int cpu) + } + } + +-/* --freq / -f */ +- +-void idle_info_help(void) +-{ +- printf(_ ("Usage: cpupower idleinfo [options]\n")); +- printf(_ ("Options:\n")); +- printf(_ (" -s, --silent Only show general C-state information\n")); +- printf(_ (" -o, --proc Prints out information like provided by the /proc/acpi/processor/*/power\n" +- " interface in older kernels\n")); +- printf(_ (" -h, --help Prints out this screen\n")); +- +- printf("\n"); +-} +- + static struct option info_opts[] = { + { .name = "silent", .has_arg = no_argument, .flag = NULL, .val = 's'}, + { .name = "proc", .has_arg = no_argument, .flag = NULL, .val = 'o'}, +- { .name = "help", .has_arg = no_argument, .flag = NULL, .val = 'h'}, + { }, + }; + + static inline void cpuidle_exit(int fail) + { +- idle_info_help(); + exit(EXIT_FAILURE); + } + +@@ -174,7 +158,7 @@ int cmd_idle_info(int argc, char **argv) + unsigned int cpu = 0; + + do { +- ret = getopt_long(argc, argv, "hos", info_opts, NULL); ++ ret = getopt_long(argc, argv, "os", info_opts, NULL); + if (ret == -1) + break; + switch (ret) { +@@ -182,10 +166,6 @@ int cmd_idle_info(int argc, char **argv) + output_param = '?'; + cont = 0; + break; +- case 'h': +- output_param = 'h'; +- cont = 0; +- break; + case 's': + verbose = 0; + break; +@@ -211,8 +191,6 @@ int cmd_idle_info(int argc, char **argv) + case '?': + printf(_("invalid or unknown argument\n")); + cpuidle_exit(EXIT_FAILURE); +- case 'h': +- cpuidle_exit(EXIT_SUCCESS); + } + + /* Default is: show output of CPU 0 only */ +diff --git a/utils/cpupower-info.c b/utils/cpupower-info.c +index 85253cb..3f68632 100644 +--- a/utils/cpupower-info.c ++++ b/utils/cpupower-info.c +@@ -16,31 +16,16 @@ + #include "helpers/helpers.h" + #include "helpers/sysfs.h" + +-void info_help(void) +-{ +- printf(_("Usage: cpupower info [ -b ] [ -m ] [ -s ]\n")); +- printf(_("Options:\n")); +- printf(_(" -b, --perf-bias Gets CPU's power vs performance policy on some\n" +- " Intel models [0-15], see manpage for details\n")); +- printf(_(" -m, --sched-mc Gets the kernel's multi core scheduler policy.\n")); +- printf(_(" -s, --sched-smt Gets the kernel's thread sibling scheduler policy.\n")); +- printf(_(" -h, --help Prints out this screen\n")); +- printf(_("\nPassing no option will show all info, by default only on core 0\n")); +- printf("\n"); +-} +- + static struct option set_opts[] = { + { .name = "perf-bias", .has_arg = optional_argument, .flag = NULL, .val = 'b'}, + { .name = "sched-mc", .has_arg = optional_argument, .flag = NULL, .val = 'm'}, + { .name = "sched-smt", .has_arg = optional_argument, .flag = NULL, .val = 's'}, +- { .name = "help", .has_arg = no_argument, .flag = NULL, .val = 'h'}, + { }, + }; + + static void print_wrong_arg_exit(void) + { + printf(_("invalid or unknown argument\n")); +- info_help(); + exit(EXIT_FAILURE); + } + +@@ -64,11 +49,8 @@ int cmd_info(int argc, char **argv) + textdomain(PACKAGE); + + /* parameter parsing */ +- while ((ret = getopt_long(argc, argv, "msbh", set_opts, NULL)) != -1) { ++ while ((ret = getopt_long(argc, argv, "msb", set_opts, NULL)) != -1) { + switch (ret) { +- case 'h': +- info_help(); +- return 0; + case 'b': + if (params.perf_bias) + print_wrong_arg_exit(); +diff --git a/utils/cpupower-set.c b/utils/cpupower-set.c +index bc1b391..dc4de37 100644 +--- a/utils/cpupower-set.c ++++ b/utils/cpupower-set.c +@@ -17,30 +17,16 @@ + #include "helpers/sysfs.h" + #include "helpers/bitmask.h" + +-void set_help(void) +-{ +- printf(_("Usage: cpupower set [ -b val ] [ -m val ] [ -s val ]\n")); +- printf(_("Options:\n")); +- printf(_(" -b, --perf-bias [VAL] Sets CPU's power vs performance policy on some\n" +- " Intel models [0-15], see manpage for details\n")); +- printf(_(" -m, --sched-mc [VAL] Sets the kernel's multi core scheduler policy.\n")); +- printf(_(" -s, --sched-smt [VAL] Sets the kernel's thread sibling scheduler policy.\n")); +- printf(_(" -h, --help Prints out this screen\n")); +- printf("\n"); +-} +- + static struct option set_opts[] = { + { .name = "perf-bias", .has_arg = optional_argument, .flag = NULL, .val = 'b'}, + { .name = "sched-mc", .has_arg = optional_argument, .flag = NULL, .val = 'm'}, + { .name = "sched-smt", .has_arg = optional_argument, .flag = NULL, .val = 's'}, +- { .name = "help", .has_arg = no_argument, .flag = NULL, .val = 'h'}, + { }, + }; + + static void print_wrong_arg_exit(void) + { + printf(_("invalid or unknown argument\n")); +- set_help(); + exit(EXIT_FAILURE); + } + +@@ -66,12 +52,9 @@ int cmd_set(int argc, char **argv) + + params.params = 0; + /* parameter parsing */ +- while ((ret = getopt_long(argc, argv, "m:s:b:h", ++ while ((ret = getopt_long(argc, argv, "m:s:b:", + set_opts, NULL)) != -1) { + switch (ret) { +- case 'h': +- set_help(); +- return 0; + case 'b': + if (params.perf_bias) + print_wrong_arg_exit(); +@@ -110,10 +93,8 @@ int cmd_set(int argc, char **argv) + } + }; + +- if (!params.params) { +- set_help(); +- return -EINVAL; +- } ++ if (!params.params) ++ print_wrong_arg_exit(); + + if (params.sched_mc) { + ret = sysfs_set_sched("mc", sched_mc); +diff --git a/utils/cpupower.c b/utils/cpupower.c +index 5844ae0..52bee59 100644 +--- a/utils/cpupower.c ++++ b/utils/cpupower.c +@@ -11,6 +11,7 @@ + #include + #include + #include ++#include + + #include "builtin.h" + #include "helpers/helpers.h" +@@ -19,13 +20,12 @@ + struct cmd_struct { + const char *cmd; + int (*main)(int, const char **); +- void (*usage)(void); + int needs_root; + }; + + #define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0])) + +-int cmd_help(int argc, const char **argv); ++static int cmd_help(int argc, const char **argv); + + /* Global cpu_info object available for all binaries + * Info only retrieved from CPU 0 +@@ -44,55 +44,66 @@ int be_verbose; + static void print_help(void); + + static struct cmd_struct commands[] = { +- { "frequency-info", cmd_freq_info, freq_info_help, 0 }, +- { "frequency-set", cmd_freq_set, freq_set_help, 1 }, +- { "idle-info", cmd_idle_info, idle_info_help, 0 }, +- { "set", cmd_set, set_help, 1 }, +- { "info", cmd_info, info_help, 0 }, +- { "monitor", cmd_monitor, monitor_help, 0 }, +- { "help", cmd_help, print_help, 0 }, +- /* { "bench", cmd_bench, NULL, 1 }, */ ++ { "frequency-info", cmd_freq_info, 0 }, ++ { "frequency-set", cmd_freq_set, 1 }, ++ { "idle-info", cmd_idle_info, 0 }, ++ { "set", cmd_set, 1 }, ++ { "info", cmd_info, 0 }, ++ { "monitor", cmd_monitor, 0 }, ++ { "help", cmd_help, 0 }, ++ /* { "bench", cmd_bench, 1 }, */ + }; + +-int cmd_help(int argc, const char **argv) +-{ +- unsigned int i; +- +- if (argc > 1) { +- for (i = 0; i < ARRAY_SIZE(commands); i++) { +- struct cmd_struct *p = commands + i; +- if (strcmp(p->cmd, argv[1])) +- continue; +- if (p->usage) { +- p->usage(); +- return EXIT_SUCCESS; +- } +- } +- } +- print_help(); +- if (argc == 1) +- return EXIT_SUCCESS; /* cpupower help */ +- return EXIT_FAILURE; +-} +- + static void print_help(void) + { + unsigned int i; + + #ifdef DEBUG +- printf(_("cpupower [ -d ][ -c cpulist ] subcommand [ARGS]\n")); +- printf(_(" -d, --debug May increase output (stderr) on some subcommands\n")); ++ printf(_("Usage:\tcpupower [-d|--debug] [-c|--cpu cpulist ] []\n")); + #else +- printf(_("cpupower [ -c cpulist ] subcommand [ARGS]\n")); ++ printf(_("Usage:\tcpupower [-c|--cpu cpulist ] []\n")); + #endif +- printf(_("cpupower --version\n")); +- printf(_("Supported subcommands are:\n")); ++ printf(_("Supported commands are:\n")); + for (i = 0; i < ARRAY_SIZE(commands); i++) + printf("\t%s\n", commands[i].cmd); +- printf(_("\nSome subcommands can make use of the -c cpulist option.\n")); +- printf(_("Look at the general cpupower manpage how to use it\n")); +- printf(_("and read up the subcommand's manpage whether it is supported.\n")); +- printf(_("\nUse cpupower help subcommand for getting help for above subcommands.\n")); ++ printf(_("\nNot all commands can make use of the -c cpulist option.\n")); ++ printf(_("\nUse 'cpupower help ' for getting help for above commands.\n")); ++} ++ ++static int print_man_page(const char *subpage) ++{ ++ int len; ++ char *page; ++ ++ len = 10; /* enough for "cpupower-" */ ++ if (subpage != NULL) ++ len += strlen(subpage); ++ ++ page = malloc(len); ++ if (!page) ++ return -ENOMEM; ++ ++ sprintf(page, "cpupower"); ++ if ((subpage != NULL) && strcmp(subpage, "help")) { ++ strcat(page, "-"); ++ strcat(page, subpage); ++ } ++ ++ execlp("man", "man", page, NULL); ++ ++ /* should not be reached */ ++ return -EINVAL; ++} ++ ++static int cmd_help(int argc, const char **argv) ++{ ++ if (argc > 1) { ++ print_man_page(argv[1]); /* exits within execlp() */ ++ return EXIT_FAILURE; ++ } ++ ++ print_help(); ++ return EXIT_SUCCESS; + } + + static void print_version(void) +diff --git a/utils/idle_monitor/cpupower-monitor.c b/utils/idle_monitor/cpupower-monitor.c +index 6cb8d9e..0d6571e 100644 +--- a/utils/idle_monitor/cpupower-monitor.c ++++ b/utils/idle_monitor/cpupower-monitor.c +@@ -43,6 +43,12 @@ static struct cpupower_topology cpu_top; + /* ToDo: Document this in the manpage */ + static char range_abbr[RANGE_MAX] = { 'T', 'C', 'P', 'M', }; + ++static void print_wrong_arg_exit(void) ++{ ++ printf(_("invalid or unknown argument\n")); ++ exit(EXIT_FAILURE); ++} ++ + long long timespec_diff_us(struct timespec start, struct timespec end) + { + struct timespec temp; +@@ -56,21 +62,6 @@ long long timespec_diff_us(struct timespec start, struct timespec end) + return (temp.tv_sec * 1000000) + (temp.tv_nsec / 1000); + } + +-void monitor_help(void) +-{ +- printf(_("cpupower monitor: [-m ,[],.. ] command\n")); +- printf(_("cpupower monitor: [-m ,[],.. ] [ -i interval_sec ]\n")); +- printf(_("cpupower monitor: -l\n")); +- printf(_("\t command: pass an arbitrary command to measure specific workload\n")); +- printf(_("\t -i: time intervall to measure for in seconds (default 1)\n")); +- printf(_("\t -l: list available CPU sleep monitors (for use with -m)\n")); +- printf(_("\t -m: show specific CPU sleep monitors only (in same order)\n")); +- printf(_("\t -h: print this help\n")); +- printf("\n"); +- printf(_("only one of: -l, -m are allowed\nIf none of them is passed,")); +- printf(_(" all supported monitors are shown\n")); +-} +- + void print_n_spaces(int n) + { + int x; +@@ -246,7 +237,6 @@ static void parse_monitor_param(char *param) + if (hits == 0) { + printf(_("No matching monitor found in %s, " + "try -l option\n"), param); +- monitor_help(); + exit(EXIT_FAILURE); + } + /* Override detected/registerd monitors array with requested one */ +@@ -343,37 +333,27 @@ static void cmdline(int argc, char *argv[]) + int opt; + progname = basename(argv[0]); + +- while ((opt = getopt(argc, argv, "+hli:m:")) != -1) { ++ while ((opt = getopt(argc, argv, "+li:m:")) != -1) { + switch (opt) { +- case 'h': +- monitor_help(); +- exit(EXIT_SUCCESS); + case 'l': +- if (mode) { +- monitor_help(); +- exit(EXIT_FAILURE); +- } ++ if (mode) ++ print_wrong_arg_exit(); + mode = list; + break; + case 'i': + /* only allow -i with -m or no option */ +- if (mode && mode != show) { +- monitor_help(); +- exit(EXIT_FAILURE); +- } ++ if (mode && mode != show) ++ print_wrong_arg_exit(); + interval = atoi(optarg); + break; + case 'm': +- if (mode) { +- monitor_help(); +- exit(EXIT_FAILURE); +- } ++ if (mode) ++ print_wrong_arg_exit(); + mode = show; + show_monitors_param = optarg; + break; + default: +- monitor_help(); +- exit(EXIT_FAILURE); ++ print_wrong_arg_exit(); + } + } + if (!mode) diff --git a/cpupower.changes b/cpupower.changes index 94f9496..989824a 100644 --- a/cpupower.changes +++ b/cpupower.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Thu Aug 25 15:44:12 UTC 2011 - trenn@suse.de + +- Use manpages for help commands + ------------------------------------------------------------------- Mon May 2 12:31:50 UTC 2011 - trenn@suse.de diff --git a/cpupower.spec b/cpupower.spec index 252b1e0..04c4c14 100644 --- a/cpupower.spec +++ b/cpupower.spec @@ -29,6 +29,7 @@ Summary: Tools to determine and set CPU Power related Settings License: GPLv2+ Group: System/Base Source: %{name}-%{version}.tar.bz2 +Patch0: cpupower-use-manpage-on-help-command.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: pciutils-devel gettext-tools pciutils Obsoletes: cpufrequtils @@ -95,6 +96,7 @@ Authors: %prep %setup -q +%patch0 -p1 %build # This package failed when testing with -Wl,-as-needed being default.