From 9b23a2dabd0c5cf84309b5d247cab05b77efa6dd Mon Sep 17 00:00:00 2001
From: midipix <writeonce@midipix.org>
Date: Mon, 1 Aug 2016 12:04:02 -0400
Subject: argv.h: error message formatting: handle lonely long options.

---
 src/internal/argv/argv.h | 29 +++++++++++++++++------------
 1 file changed, 17 insertions(+), 12 deletions(-)

(limited to 'src/internal')

diff --git a/src/internal/argv/argv.h b/src/internal/argv/argv.h
index ece92c7..31ca322 100644
--- a/src/internal/argv/argv.h
+++ b/src/internal/argv/argv.h
@@ -497,6 +497,11 @@ static const char * argv_program_name(const char * program_path)
 
 static void argv_show_error(struct argv_ctx * ctx)
 {
+	char opt_short_name[2] = {0,0};
+
+	if (ctx->erropt && ctx->erropt->short_name)
+		opt_short_name[0] = ctx->erropt->short_name;
+
 	fprintf(stderr,"%s: error: ",ctx->program);
 
 	switch (ctx->errcode) {
@@ -509,21 +514,21 @@ static void argv_show_error(struct argv_ctx * ctx)
 			break;
 
 		case ARGV_ERROR_OPTARG_NONE:
-			fprintf(stderr,"'%s' is not a valid option value for [%s%c%s%s%s] "
+			fprintf(stderr,"'%s' is not a valid option value for [%s%s%s%s%s] "
 					"(option values may not be specified)\n",
 				ctx->errch,
-				ctx->erropt->short_name ? "-" : "",
-				ctx->erropt->short_name,
-				ctx->erropt->short_name ? "," : "",
+				opt_short_name[0] ? "-" : "",
+				opt_short_name,
+				opt_short_name[0] ? "," : "",
 				ctx->erropt->long_name ? "--" : "",
 				ctx->erropt->long_name);
 			break;
 
 		case ARGV_ERROR_OPTARG_REQUIRED:
-			fprintf(stderr,"option [%s%c%s%s%s] requires %s %s%s%s\n",
-				ctx->erropt->short_name ? "-" : "",
-				ctx->erropt->short_name,
-				ctx->erropt->short_name ? "," : "",
+			fprintf(stderr,"option [%s%s%s%s%s] requires %s %s%s%s\n",
+				opt_short_name[0] ? "-" : "",
+				opt_short_name,
+				opt_short_name[0] ? "," : "",
 				ctx->erropt->long_name ? "--" : "",
 				ctx->erropt->long_name,
 				ctx->erropt->paradigm ? "one of the following values:" : "a value",
@@ -533,11 +538,11 @@ static void argv_show_error(struct argv_ctx * ctx)
 			break;
 
 		case ARGV_ERROR_OPTARG_PARADIGM:
-			fprintf(stderr,"'%s' is not a valid option value for [%s%c%s%s%s]={%s}\n",
+			fprintf(stderr,"'%s' is not a valid option value for [%s%s%s%s%s]={%s}\n",
 				ctx->errch,
-				ctx->erropt->short_name ? "-" : "",
-				ctx->erropt->short_name,
-				ctx->erropt->short_name ? "," : "",
+				opt_short_name[0] ? "-" : "",
+				opt_short_name,
+				opt_short_name[0] ? "," : "",
 				ctx->erropt->long_name ? "--" : "",
 				ctx->erropt->long_name,
 				ctx->erropt->paradigm);
-- 
cgit v1.2.3