Re: [PATCH 00/13] usage cleanup part 1

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

 



On Mon, Jun 26, 2017 at 04:44:59PM +0200, Rüdiger Meier wrote:
> 
> 
> On 06/26/2017 04:07 PM, Karel Zak wrote:
> > On Mon, Jun 26, 2017 at 03:04:30PM +0200, Rüdiger Meier wrote:
> > > On 06/22/2017 04:37 AM, Ruediger Meier wrote:
> > > > From: Ruediger Meier <ruediger.meier@xxxxxxxxxxx>
> > > > 
> > > > This is pull request #467 on github
> > > > https://github.com/karelzak/util-linux/pull/467
> > > 
> > > > The major goal is to avoid printing usage/help messages on stderr.
> > > > 
> > > > This is the preparing first part of a bigger patch-set. There are
> > > > some minor bug fixes and finally we add --help options to all our
> > > > commands (just 5 commands were missing it).
> > > > 
> > > > The next completing patch-set (part 2) will be more invasive but
> > > > even more trivial.
> > > 
> > > Thanks for merging.
> > > 
> > > FYI I've PR'ed the second part on github only because it's almost
> > > trivial but invasive.
> > >     https://github.com/karelzak/util-linux/pull/471
> > 
> > Merged, thanks!
> > 
> > It seems we have many places with "not enough arguments" or "device no
> > specified" or "bad usage". What about to create some inline function
> > for these things?
> > 
> > static inline err_usage(int eval, char *msg)
> > {
> >      warnx(msg);
> >      errtryhelp(eval);
> > }
> > 
> > #define errnoargs(x)    err_usage(x, _("not enough arguments"))
> > #define errnodevice(x)  err_usage(x, _("no device specified"))
> > #define errbadusage(x)  err_usage(x, _("bad usage"))
> 
> > 
> > Maybe it seems like over-engineering, but it's pretty common in the
> > code and some consolidation to avoid creativity would be nice. The current
> > solution requires
> > 
> >      if (argv < 2) {
> >          warnx(_("not enough arguments")));
> >          errtryhelp(EXIT_FAILURE);
> >      }
> > 
> > I think
> > 
> >     if (argv < 2)
> >         errnoargs(EXIT_FAILURE);
> > 
> > is shorter, seems better and provides control on the messages
> > (errtryhelp() call, etc).
> > 
> > Comments?
> 
> I was already playing around with something like this
> 
> #define werrtryhelp(eval, s...) __extension__ ({ \
>     warnx(s); \
>     errtryhelp(eval); \
> })
> 
> This would make things 1simple in about 100 cases, for example
> 
>   -       if (argc > 0) {
>   -               warnx(_("%d too many arguments given"), argc);
>   -               errtryhelp(EXIT_FAILURE);
>   -       }
>   +       if (argc > 0)
>   +               werrtryhelp(EXIT_FAILURE, _("%d too many arguments given"), argc);
> 
> 
> For the standard errors we would only need defines like:
> 
> 
> #define ERR_MSG_NOARGS _("not enough arguments"))
> 
>   if (argv < 2)
>       errtryhelp(EXIT_FAILURE, ERR_MSG_NOARGS);

 I'd like to avoid things like ERR_MSG_NOARGS in the standard code 
 for basic messages. 

    if (argv < 2)
        errnoargs(EXIT_FAILURE);

 seems as a way how to keep it simple and stupid. It's fine to have
 ERR_MSG_* somewhere in the header files, but details for standard
 things should be hidden by errxxxxx() macros.
 
> Funny, I've had already deleted my werrtryhelp branch because I got
> already tired of this cleanup. I just got it back from git-reflog
> and safe it for later ;)

 I understand :-) It's nothing critical -- just idea.

    Karel

-- 
 Karel Zak  <kzak@xxxxxxxxxx>
 http://karelzak.blogspot.com
--
To unsubscribe from this list: send the line "unsubscribe util-linux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux