Eric Blake wrote: > I noticed this during my audit for stderr vs. exec. We've made previous > cleanups along these lines, but usages have crept back in. OK to commit? ... > Subject: [PATCH] maint: avoid exiting with magic number > > * cfg.mk (sc_prohibit_magic_number_exit) > (sc_prohibit_error_success): New rules. > * .x-sc_prohibit_magic_number_exit: Add exemptions. > * Makefile.am (syntax_check_exceptions): Distribute it. > * lib/euidaccess-stat.c (main): Fix culprits. > * src/chcon.c (main): Likewise. > * src/runcon.c (main): Likewise. > * src/setuidgid.c (main): Likewise.
Nice! ... > diff --git a/cfg.mk b/cfg.mk > index 1e5108b..cce945a 100644 > --- a/cfg.mk > +++ b/cfg.mk > @@ -203,6 +203,18 @@ sc_prohibit_stat_macro_address: > msg='stat() and lstat() may be function-like macros' \ > $(_prohibit_regexp) > > +# Pass EXIT_*, not number, to usage, exit, and error > +sc_prohibit_magic_number_exit: > + @re='\<(usage|exit) \([0-9]|\<error \([1-9][0-9]*,' \ Please allow 0 or one space between the function name and the opening parenthesis, so this rule will also be useful to projects with different code formatting conventions. > + msg='use EXIT_* values rather than magic number' \ > + $(_prohibit_regexp) > + > +# error (0) is preferred over error (EXIT_SUCCESS), since it does not exit > +sc_prohibit_error_success: > + @re='\<error \(EXIT_SUCCESS,' \ same here > + msg='use error(0) rather than error(EXIT_SUCCESS)' \ which means you'll want to obfuscate the above, e.g., to msg='use error''(0) rather than error(EXIT_SUCCESS)' \ These seem generally useful enough for gnulib's maint.mk.