Blame SOURCES/mcelog-patch-commit-916015663906.patch

bef633
From: Prarit Bhargava <prarit@redhat.com>
bef633
bef633
Subject: mcelog: Add --help option.
bef633
bef633
commit 91601566390676d3c590bbe4b680f4009b6caa22
bef633
Author: Prarit Bhargava <prarit@redhat.com>
bef633
Date:   Thu Oct 12 13:35:33 2017 -0400
bef633
bef633
    mcelog: Add --help option.
bef633
    
bef633
    The mcelog man page states "See mcelog --help for a list of valid CPUs.".
bef633
    This command returns 1 because --help is not a valid option.
bef633
    
bef633
    Separate the exit(1) from the usage() function and add a --help option.
bef633
    
bef633
    Signed-off-by: Prarit Bhargava <prarit@redhat.com>
bef633
    Signed-off-by: Andi Kleen <ak@linux.intel.com>
bef633
bef633
diff --git a/mcelog.c b/mcelog.c
bef633
index 507f11bdbccb87cad45a2f182edd2a8146bd89f3..58a0aac26b53fa382567e034b2e2a8f25735e3aa 100644
bef633
--- a/mcelog.c
bef633
+++ b/mcelog.c
bef633
@@ -982,10 +982,10 @@ void usage(void)
bef633
 "--pidfile file	     Write pid of daemon into file\n"
bef633
 "--no-imc-log	     Disable extended iMC logging\n"
bef633
 "--is-cpu-supported  Exit with return code indicating whether the CPU is supported\n"
bef633
+"--help	             Display this message.\n"
bef633
 		);
bef633
 	printf("\n");
bef633
 	print_cputypes();
bef633
-	exit(1);
bef633
 }
bef633
 
bef633
 enum options { 
bef633
@@ -1017,6 +1017,7 @@ enum options {
bef633
 	O_DEBUG_NUMERRORS,
bef633
 	O_NO_IMC_LOG,
bef633
 	O_IS_CPU_SUPPORTED,
bef633
+	O_HELP,
bef633
 };
bef633
 
bef633
 static struct option options[] = {
bef633
@@ -1050,6 +1051,7 @@ static struct option options[] = {
bef633
 	{ "pidfile", 1, NULL, O_PIDFILE },
bef633
 	{ "debug-numerrors", 0, NULL, O_DEBUG_NUMERRORS }, /* undocumented: for testing */
bef633
 	{ "no-imc-log", 0, NULL, O_NO_IMC_LOG },
bef633
+	{ "help", 0, NULL, O_HELP },
bef633
 	{ "is-cpu-supported", 0, NULL, O_IS_CPU_SUPPORTED },
bef633
 	{}
bef633
 };
bef633
@@ -1080,12 +1082,15 @@ static int modifier(int opt)
bef633
 		break;
bef633
 	case O_INTEL_CPU: { 
bef633
 		unsigned fam, mod;
bef633
-		if (sscanf(optarg, "%i,%i", &fam, &mod) != 2)
bef633
+		if (sscanf(optarg, "%i,%i", &fam, &mod) != 2) {
bef633
 			usage();
bef633
+			exit(1);
bef633
+		}
bef633
 		cputype = select_intel_cputype(fam, mod);
bef633
 		if (cputype == CPU_GENERIC) {
bef633
 			fprintf(stderr, "Unknown Intel CPU\n");
bef633
 			usage();
bef633
+			exit(1);
bef633
 		}
bef633
 		cpu_forced = 1;
bef633
 		break;
bef633
@@ -1104,8 +1109,10 @@ static int modifier(int opt)
bef633
 		do_dmi = 0;
bef633
 		break;
bef633
 	case O_DMI_VERBOSE:
bef633
-		if (sscanf(optarg, "%i", &v) != 1)
bef633
+		if (sscanf(optarg, "%i", &v) != 1) {
bef633
 			usage();
bef633
+			exit(1);
bef633
+		}
bef633
 		dmi_set_verbosity(v);
bef633
 		break;
bef633
 	case O_SYSLOG:
bef633
@@ -1117,8 +1124,10 @@ static int modifier(int opt)
bef633
 		break;
bef633
 	case O_CPUMHZ:
bef633
 		cpumhz_forced = 1;
bef633
-		if (sscanf(optarg, "%lf", &cpumhz) != 1)
bef633
+		if (sscanf(optarg, "%lf", &cpumhz) != 1) {
bef633
 			usage();
bef633
+			exit(1);
bef633
+		}
bef633
 		break;
bef633
 	case O_SYSLOG_ERROR:
bef633
 		syslog_level = LOG_ERR;
bef633
@@ -1155,6 +1164,10 @@ static int modifier(int opt)
bef633
 	case O_IS_CPU_SUPPORTED:
bef633
 		check_only = 1;
bef633
 		break;
bef633
+	case O_HELP:
bef633
+		usage();
bef633
+		exit(0);
bef633
+		break;
bef633
 	case 0:
bef633
 		break;
bef633
 	default:
bef633
@@ -1184,8 +1197,10 @@ void argsleft(int ac, char **av)
bef633
 	int opt;
bef633
 		
bef633
 	while ((opt = getopt_long(ac, av, "", options, NULL)) != -1) { 
bef633
-		if (modifier(opt) != 1)
bef633
+		if (modifier(opt) != 1) {
bef633
 			usage();
bef633
+			exit(1);
bef633
+		}
bef633
 	}
bef633
 }
bef633
 
bef633
@@ -1284,16 +1299,20 @@ static void process(int fd, unsigned recordlen, unsigned loglen, char *buf)
bef633
 
bef633
 static void noargs(int ac, char **av)
bef633
 {
bef633
-	if (getopt_long(ac, av, "", options, NULL) != -1)
bef633
+	if (getopt_long(ac, av, "", options, NULL) != -1) {
bef633
 		usage();
bef633
+		exit(1);
bef633
+	}
bef633
 }
bef633
 
bef633
 static void parse_config(char **av)
bef633
 {
bef633
 	static const char config_fn[] = CONFIG_FILENAME;
bef633
 	const char *fn = config_file(av, config_fn);
bef633
-	if (!fn)
bef633
+	if (!fn) {
bef633
 		usage();
bef633
+		exit(1);
bef633
+	}
bef633
 	if (parse_config_file(fn) < 0) { 
bef633
 		/* If it's the default file don't complain if it isn't there */
bef633
 		if (fn != config_fn) {
bef633
@@ -1362,6 +1381,7 @@ int main(int ac, char **av)
bef633
 	while ((opt = getopt_long(ac, av, "", options, NULL)) != -1) { 
bef633
 		if (opt == '?') {
bef633
 			usage(); 
bef633
+			exit(1);
bef633
 		} else if (combined_modifier(opt) > 0) {
bef633
 			continue;
bef633
 		} else if (opt == O_ASCII) { 
bef633
@@ -1404,8 +1424,10 @@ int main(int ac, char **av)
bef633
 	modifier_finish();
bef633
 	if (av[optind])
bef633
 		logfn = av[optind++];
bef633
-	if (av[optind])
bef633
+	if (av[optind]) {
bef633
 		usage();
bef633
+		exit(1);
bef633
+	}
bef633
 	checkdmi();
bef633
 	general_setup();
bef633