[PATCH 04/25] Rework make_usage to print the usage message immediately

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Alex Riesen <raa.lkml@xxxxxxxxx>

Signed-off-by: Alex Riesen <raa.lkml@xxxxxxxxx>
---
 parse-options.c |   48 ++++++++++++++++++++++--------------------------
 1 files changed, 22 insertions(+), 26 deletions(-)

diff --git a/parse-options.c b/parse-options.c
index e0fc25a..d156594 100644
--- a/parse-options.c
+++ b/parse-options.c
@@ -1,6 +1,5 @@
 #include "git-compat-util.h"
 #include "parse-options.h"
-#include "strbuf.h"
 
 #define OPT_SHORT 1
 #define OPT_UNSET 2
@@ -173,59 +172,56 @@ int parse_options(int argc, const char **argv, const struct option *options,
 void usage_with_options(const char * const *usagestr,
                         const struct option *opts)
 {
-	struct strbuf sb;
-
-	strbuf_init(&sb, 4096);
-	strbuf_addstr(&sb, *usagestr);
-	strbuf_addch(&sb, '\n');
-	while (*++usagestr)
-		strbuf_addf(&sb, "    %s\n", *usagestr);
+	fprintf(stderr, "usage: %s\n", *usagestr++);
+	while (*usagestr && **usagestr)
+		fprintf(stderr, "   or: %s\n", *usagestr++);
+	while (*usagestr)
+		fprintf(stderr, "    %s\n", *usagestr++);
 
 	if (opts->type != OPTION_GROUP)
-		strbuf_addch(&sb, '\n');
+		fputc('\n', stderr);
 
 	for (; opts->type != OPTION_END; opts++) {
 		size_t pos;
 
 		if (opts->type == OPTION_GROUP) {
-			strbuf_addch(&sb, '\n');
+			fputc('\n', stderr);
 			if (*opts->help)
-				strbuf_addf(&sb, "%s\n", opts->help);
+				fprintf(stderr, "%s\n", opts->help);
 			continue;
 		}
 
-		pos = sb.len;
-		strbuf_addstr(&sb, "    ");
+		pos = fprintf(stderr, "    ");
 		if (opts->short_name)
-			strbuf_addf(&sb, "-%c", opts->short_name);
+			pos += fprintf(stderr, "-%c", opts->short_name);
 		if (opts->long_name && opts->short_name)
-			strbuf_addstr(&sb, ", ");
+			pos += fprintf(stderr, ", ");
 		if (opts->long_name)
-			strbuf_addf(&sb, "--%s", opts->long_name);
+			pos += fprintf(stderr, "--%s", opts->long_name);
 
 		switch (opts->type) {
 		case OPTION_INTEGER:
-			strbuf_addstr(&sb, " <n>");
+			pos += fprintf(stderr, " <n>");
 			break;
 		case OPTION_STRING:
 			if (opts->argh) {
-				strbuf_addf(&sb, " <%s>", opts->argh);
+				pos += fprintf(stderr, " <%s>", opts->argh);
 			} else {
-				strbuf_addstr(&sb, " ...");
+				pos += fprintf(stderr, " ...");
 			}
 			break;
 		default:
 			break;
 		}
 
-		if (sb.len - pos <= USAGE_OPTS_WIDTH) {
-			int pad = USAGE_OPTS_WIDTH - (sb.len - pos) + USAGE_GAP;
-			strbuf_addf(&sb, "%*s%s\n", pad, "", opts->help);
+		if (pos <= USAGE_OPTS_WIDTH) {
+			int pad = USAGE_OPTS_WIDTH - pos + USAGE_GAP;
+			fprintf(stderr, "%*s%s\n", pad, "", opts->help);
 		} else {
-			strbuf_addf(&sb, "\n%*s%s\n",
-			            USAGE_OPTS_WIDTH + USAGE_GAP,
-			            "", opts->help);
+			fprintf(stderr, "\n%*s%s\n", USAGE_OPTS_WIDTH + USAGE_GAP,
+			        "", opts->help);
 		}
 	}
-	usage(sb.buf);
+
+	exit(129);
 }
-- 
1.5.3.4.1231.g62b9a

-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux