Style question: writing multi-line usage messages
Gary Jennejohn
gljennjohn at googlemail.com
Tue May 4 10:58:16 UTC 2010
On Tue, 4 May 2010 19:17:49 +1000
Peter Jeremy <peterjeremy at acm.org> wrote:
> I would appreciate some input on the preferred style for writing
> multi-line usage messages. Should:
> 1) printf() print a series of 1-line strings
> 2) should string gluing be used to turn multiple strings into one for printing
> 3) should continuation lines be used to create a single string
>
> I can't see anything in style(9) to cover this.
>
> Variants of the tunefs(8) usage() function follow as examples:
>
> void
> usage(void)
> {
>
> fprintf(stderr, "%s\n%s\n%s\n%s\n%s\n%s\n",
> "usage: tunefs [-A] [-a enable | disable] [-e maxbpg] [-f avgfilesize]",
> " [-J enable | disable] [-j enable | disable]",
> " [-L volname] [-l enable | disable] [-m minfree]",
> " [-N enable | disable] [-n enable | disable]",
> " [-o space | time] [-p] [-S size] [-s avgfpdir]",
> " special | filesystem");
> exit(2);
> }
>
This version requires you to remmeber to add %s\n to the format if you
add a new line, something which I personally forget to do all the time.
> void
> usage(void)
> {
>
> fprintf(stderr,
> "usage: tunefs [-A] [-a enable | disable] [-e maxbpg] [-f avgfilesize]\n"
> " [-J enable | disable] [-j enable | disable]\n"
> " [-L volname] [-l enable | disable] [-m minfree]\n"
> " [-N enable | disable] [-n enable | disable]\n"
> " [-o space | time] [-p] [-S size] [-s avgfpdir]\n"
> " special | filesystem\n");
> exit(2);
> }
>
> void
> usage(void)
> {
>
> fprintf(stderr,
> "usage: tunefs [-A] [-a enable | disable] [-e maxbpg] [-f avgfilesize]\n\
> [-J enable | disable] [-j enable | disable]\n\
> [-L volname] [-l enable | disable] [-m minfree]\n\
> [-N enable | disable] [-n enable | disable]\n\
> [-o space | time] [-p] [-S size] [-s avgfpdir]\n\
> special | filesystem\n");
> exit(2);
> }
>
I personally don't see all that much difference between these. The first variant
has the advantage that it's very clear that you're looking at strings, which might
be a good thing.
I vote for 2.
Couldn't you replace all the leading spaces with \t's?
--
Gary Jennejohn
More information about the freebsd-arch
mailing list