summaryrefslogtreecommitdiff
path: root/parse-options.c
diff options
context:
space:
mode:
authorAlex Riesen <raa.lkml@gmail.com>2007-10-13 22:10:51 (GMT)
committerJunio C Hamano <gitster@pobox.com>2007-10-30 04:03:30 (GMT)
commitf389c808b6774fb0a1fc54cf2563a7b3038dd1d4 (patch)
tree4164fe5c28c3aa9cc2f7be896dfba5df24e94a89 /parse-options.c
parentbeb474379315654566e78eea8a0e39c66ebcbb8a (diff)
downloadgit-f389c808b6774fb0a1fc54cf2563a7b3038dd1d4.zip
git-f389c808b6774fb0a1fc54cf2563a7b3038dd1d4.tar.gz
git-f389c808b6774fb0a1fc54cf2563a7b3038dd1d4.tar.bz2
Rework make_usage to print the usage message immediately
Signed-off-by: Alex Riesen <raa.lkml@gmail.com> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Diffstat (limited to 'parse-options.c')
-rw-r--r--parse-options.c47
1 files changed, 22 insertions, 25 deletions
diff --git a/parse-options.c b/parse-options.c
index 57a2a11..89c5f52 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
@@ -172,59 +171,57 @@ 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;
int pad;
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;
}
- pad = sb.len - pos;
- if (pad <= USAGE_OPTS_WIDTH)
- pad = USAGE_OPTS_WIDTH - pad;
+ if (pos <= USAGE_OPTS_WIDTH)
+ pad = USAGE_OPTS_WIDTH - pos;
else {
- strbuf_addch(&sb, '\n');
+ fputc('\n', stderr);
pad = USAGE_OPTS_WIDTH;
}
- strbuf_addf(&sb, "%*s%s\n", pad + USAGE_GAP, "", opts->help);
+ fprintf(stderr, "%*s%s\n", pad + USAGE_GAP, "", opts->help);
}
- usage(sb.buf);
+ fputc('\n', stderr);
+
+ exit(129);
}