From: Pierre Habouzit <madcoder@debian.org>
To: Alex Riesen <raa.lkml@gmail.com>
Cc: git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCH] Add a simple option parser.
Date: Sat, 13 Oct 2007 22:54:04 +0200 [thread overview]
Message-ID: <20071013205404.GK7110@artemis.corp> (raw)
In-Reply-To: <20071013191655.GA2875@steel.home>
[-- Attachment #1: Type: text/plain, Size: 2206 bytes --]
On Sat, Oct 13, 2007 at 07:16:55PM +0000, Alex Riesen wrote:
> Pierre Habouzit, Sat, Oct 13, 2007 15:29:03 +0200:
> > [...]
>
> "const struct option *opts"?
>
> Why not "const char *const *usagestr"? Especially if you change
> "usagestr" (the pointer itself) later. "[]" is sometimes a hint that
> the pointer itself should not be changed, being an array.
>
> And you want make opts const.
Ok.
> BTW, it does not "make" usage. It calls the usage() or prints a usage
> description. "make" implies it creates the "usage", which according to
> the prototype is later nowhere to be found.
Yes this has been spotted and fixed already.
>
> > +{
> > + struct strbuf sb;
> > +
> > + strbuf_init(&sb, 4096);
> > + do {
> > + strbuf_addstr(&sb, *usagestr++);
> > + strbuf_addch(&sb, '\n');
> > + } while (*usagestr);
>
> This will crash for empty usagestr, like "{ NULL }". Was it
> deliberately? (I'd make it deliberately, if I were you. I'd even used
> cnt of opts, to force people to document all options).
Yes this is intentional, there should be at least on string in the
usagestr array.
> > + strbuf_addf(&sb, "\n%*s%s\n", USAGE_OPTS_WIDTH + USAGE_GAP, "",
> > + opts->help);
> ....
> > + usage(sb.buf);
>
> BTW, if you just printed the usage message out (it is about usage of a
> program, isn't it?) and called exit() everyone would be just as happy.
> And you wouldn't have to include strbuf (it is the only use of it),
> less code, too. It'd make simplier to stea^Wcopy your implementation,
> which I like :)
the reason is that usage() is a wrapper around a callback, and I
suppose it's used by some GUI's or anything like that.
FWIW you can rework the .c like this:
pos = 0; /* and not pos = sb.len */
replace the strbuf_add* by the equivalents:
pos += printf("....");
and tada, you're done.
Note that in the most recent version, I also deal with a
OPTION_CALLBACK that passes the value to a callback.
Cheers,
--
·O· Pierre Habouzit
··O madcoder@debian.org
OOO http://www.madism.org
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
next prev parent reply other threads:[~2007-10-13 20:54 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-13 13:29 [RFC] CLI option parsing and usage generation for porcelains Pierre Habouzit
[not found] ` <1192282153-26684-2-git-send-email-madcoder@debian.org>
2007-10-13 14:39 ` [PATCH] Add a simple option parser Johannes Schindelin
2007-10-13 14:58 ` Pierre Habouzit
[not found] ` <1192282153-26684-3-git-send-email-madcoder@debian.org>
2007-10-13 14:47 ` [PATCH] Port builtin-add.c to use the new " Johannes Schindelin
2007-10-13 15:03 ` Pierre Habouzit
2007-10-13 19:22 ` Alex Riesen
2007-10-13 20:27 ` Pierre Habouzit
[not found] ` <1192282153-26684-4-git-send-email-madcoder@debian.org>
[not found] ` <1192282153-26684-5-git-send-email-madcoder@debian.org>
[not found] ` <1192282153-26684-6-git-send-email-madcoder@debian.org>
[not found] ` <1192282153-26684-7-git-send-email-madcoder@debian.org>
[not found] ` <1192282153-26684-8-git-send-email-madcoder@debian.org>
[not found] ` <1192282153-26684-9-git-send-email-madcoder@debian.org>
[not found] ` <1192282153-26684-10-git-send-email-madcoder@debian.org>
2007-10-14 14:01 ` [PATCH] Simplify usage string printing Jonas Fonseca
2007-10-14 16:26 ` Pierre Habouzit
2007-10-13 19:16 ` [PATCH] Add a simple option parser Alex Riesen
2007-10-13 20:54 ` Pierre Habouzit [this message]
2007-10-13 22:14 ` Alex Riesen
2007-10-14 7:02 ` Pierre Habouzit
2007-10-14 14:10 ` [PATCH] Update manpages to reflect new short and long option aliases Jonas Fonseca
2007-10-14 16:26 ` Pierre Habouzit
2007-10-13 14:53 ` [RFC] CLI option parsing and usage generation for porcelains Wincent Colaiuta
2007-10-14 9:18 ` Eric Wong
2007-10-14 9:57 ` Pierre Habouzit
2007-10-14 16:54 ` [PATCH] parse-options: Allow abbreviated options when unambiguous Johannes Schindelin
2007-10-14 18:02 ` Johannes Schindelin
2007-10-14 18:08 ` Pierre Habouzit
2007-10-14 21:01 ` Eric Wong
2007-10-14 22:12 ` Johannes Schindelin
2007-10-14 22:49 ` Eric Wong
2007-10-14 22:59 ` git-svn and submodules, was " Johannes Schindelin
2007-10-15 7:07 ` git-svn and submodules Benoit SIGOURE
2007-10-15 10:00 ` Andreas Ericsson
2007-10-15 10:51 ` Benoit SIGOURE
2007-10-15 10:14 ` David Kastrup
2007-10-15 10:53 ` Benoit SIGOURE
2007-10-15 16:27 ` Andreas Ericsson
2007-10-15 14:45 ` Karl Hasselström
2007-10-15 15:14 ` .gitignore and svn:ignore [WAS: git-svn and submodules] Chris Shoemaker
2007-10-16 7:58 ` Eric Wong
2007-10-16 9:43 ` Karl Hasselström
2007-10-16 13:05 ` Chris Shoemaker
2007-10-15 15:53 ` git-svn and submodules Linus Torvalds
2007-10-15 16:17 ` Performance issue with excludes (was: Re: git-svn and submodules) Benoit SIGOURE
2007-10-15 16:34 ` Linus Torvalds
2007-10-15 16:51 ` Benoit SIGOURE
2007-10-15 17:10 ` Linus Torvalds
2007-10-15 17:38 ` Benoit SIGOURE
-- strict thread matches above, loose matches on Subject: below --
2007-10-03 21:45 [PATCH] Add a simple option parser Kristian Høgsberg
2007-10-03 23:11 ` Pierre Habouzit
2007-10-04 14:57 ` Kristian Høgsberg
2007-10-04 15:15 ` Pierre Habouzit
2007-10-04 16:31 ` Pierre Habouzit
2007-10-04 16:39 ` Johannes Schindelin
2007-10-05 10:08 ` Pierre Habouzit
2007-10-05 14:21 ` Pierre Habouzit
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20071013205404.GK7110@artemis.corp \
--to=madcoder@debian.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=raa.lkml@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.