Skip to content

Commit f389c80

Browse files
raalkmlgitster
authored andcommitted
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>
1 parent beb4743 commit f389c80

File tree

1 file changed

+22
-25
lines changed

1 file changed

+22
-25
lines changed

parse-options.c

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
#include "git-compat-util.h"
22
#include "parse-options.h"
3-
#include "strbuf.h"
43

54
#define OPT_SHORT 1
65
#define OPT_UNSET 2
@@ -172,59 +171,57 @@ int parse_options(int argc, const char **argv, const struct option *options,
172171
void usage_with_options(const char * const *usagestr,
173172
const struct option *opts)
174173
{
175-
struct strbuf sb;
176-
177-
strbuf_init(&sb, 4096);
178-
strbuf_addstr(&sb, *usagestr);
179-
strbuf_addch(&sb, '\n');
180-
while (*++usagestr)
181-
strbuf_addf(&sb, " %s\n", *usagestr);
174+
fprintf(stderr, "usage: %s\n", *usagestr++);
175+
while (*usagestr && **usagestr)
176+
fprintf(stderr, " or: %s\n", *usagestr++);
177+
while (*usagestr)
178+
fprintf(stderr, " %s\n", *usagestr++);
182179

183180
if (opts->type != OPTION_GROUP)
184-
strbuf_addch(&sb, '\n');
181+
fputc('\n', stderr);
185182

186183
for (; opts->type != OPTION_END; opts++) {
187184
size_t pos;
188185
int pad;
189186

190187
if (opts->type == OPTION_GROUP) {
191-
strbuf_addch(&sb, '\n');
188+
fputc('\n', stderr);
192189
if (*opts->help)
193-
strbuf_addf(&sb, "%s\n", opts->help);
190+
fprintf(stderr, "%s\n", opts->help);
194191
continue;
195192
}
196193

197-
pos = sb.len;
198-
strbuf_addstr(&sb, " ");
194+
pos = fprintf(stderr, " ");
199195
if (opts->short_name)
200-
strbuf_addf(&sb, "-%c", opts->short_name);
196+
pos += fprintf(stderr, "-%c", opts->short_name);
201197
if (opts->long_name && opts->short_name)
202-
strbuf_addstr(&sb, ", ");
198+
pos += fprintf(stderr, ", ");
203199
if (opts->long_name)
204-
strbuf_addf(&sb, "--%s", opts->long_name);
200+
pos += fprintf(stderr, "--%s", opts->long_name);
205201

206202
switch (opts->type) {
207203
case OPTION_INTEGER:
208-
strbuf_addstr(&sb, " <n>");
204+
pos += fprintf(stderr, " <n>");
209205
break;
210206
case OPTION_STRING:
211207
if (opts->argh)
212-
strbuf_addf(&sb, " <%s>", opts->argh);
208+
pos += fprintf(stderr, " <%s>", opts->argh);
213209
else
214-
strbuf_addstr(&sb, " ...");
210+
pos += fprintf(stderr, " ...");
215211
break;
216212
default:
217213
break;
218214
}
219215

220-
pad = sb.len - pos;
221-
if (pad <= USAGE_OPTS_WIDTH)
222-
pad = USAGE_OPTS_WIDTH - pad;
216+
if (pos <= USAGE_OPTS_WIDTH)
217+
pad = USAGE_OPTS_WIDTH - pos;
223218
else {
224-
strbuf_addch(&sb, '\n');
219+
fputc('\n', stderr);
225220
pad = USAGE_OPTS_WIDTH;
226221
}
227-
strbuf_addf(&sb, "%*s%s\n", pad + USAGE_GAP, "", opts->help);
222+
fprintf(stderr, "%*s%s\n", pad + USAGE_GAP, "", opts->help);
228223
}
229-
usage(sb.buf);
224+
fputc('\n', stderr);
225+
226+
exit(129);
230227
}

0 commit comments

Comments
 (0)