svn commit: r286267 - head/usr.bin/ypcat
Bruce Evans
brde at optusnet.com.au
Tue Aug 4 05:33:15 UTC 2015
On Tue, 4 Aug 2015, Marcelo Araujo wrote:
> Log:
> Remove the 3rd clause of BSD LICENSE.
> Sync the code with the OpenBSD version.
> Small style(9) fix up.
This has many style(9) fix downs.
> Differential Revision: D3212
> Reviewed by: rodrigc, bapt
> Obtained from: OpenBSD
> Sponsored by: gandi.net
>
> Modified:
> head/usr.bin/ypcat/ypcat.c
>
> Modified: head/usr.bin/ypcat/ypcat.c
> ==============================================================================
> --- head/usr.bin/ypcat/ypcat.c Tue Aug 4 02:34:51 2015 (r286266)
> +++ head/usr.bin/ypcat/ypcat.c Tue Aug 4 02:41:14 2015 (r286267)
> @@ -34,18 +33,20 @@ __FBSDID("$FreeBSD$");
> #include <sys/param.h>
> #include <sys/types.h>
> #include <sys/socket.h>
> +#include <unistd.h>
> +#include <string.h>
> +#include <stdio.h>
> +#include <stdlib.h>
> +#include <ctype.h>
> +#include <err.h>
>
> #include <rpc/rpc.h>
> #include <rpc/xdr.h>
> -#include <rpcsvc/yp_prot.h>
> +#include <rpcsvc/yp.h>
> #include <rpcsvc/ypclnt.h>
>
> -#include <ctype.h>
> -#include <err.h>
> -#include <stdio.h>
> -#include <stdlib.h>
> -#include <string.h>
> -#include <unistd.h>
Unsorting. The old organization was almost perfect except for including
both sys/types and sys/param.h. Now there isn't even a blank line
separating one pair of the 3 groupes of headers.
> +void usage(void);
> +int printit(u_long, char *, int, char *, int, void *);
Unsorted declarations.
Lost staticization.
usage() was misplaced early in the file, so that since it was static,
it didn't need a forward declaration, except style(9) requires one.
usage() is its main example.
>
> static const struct ypalias {
> char *alias, *name;
> @@ -64,17 +65,18 @@ static const struct ypalias {
>
> static int key;
>
> -static void
> +void
Lost staticization.
> usage(void)
> {
> - fprintf(stderr, "%s\n%s\n",
> - "usage: ypcat [-kt] [-d domainname] mapname",
> - " ypcat -x");
> + fprintf(stderr,
> + "usage: ypcat [-kt] [-d domainname] mapname\n"
> + " ypcat -x\n");
This fixes the indentation, but breaks the string using C90 string
concatenation. style(9) doesn't specify using the "%s\n%s\n..."
for printing multiple strings on multiple line by example, but
almost all FreeBSD utilities including the old version of this one
provide an example of this.
> exit(1);
> }
>
> -static int
> -printit(unsigned long instatus, char *inkey, int inkeylen, char *inval, int invallen, void *dummy __unused)
> +int
> +printit(u_long instatus, char *inkey, int inkeylen, char *inval, int invallen,
> + void *indata)
Lost staticization.
> {
> if (instatus != YP_TRUE)
> return (instatus);
> @@ -87,31 +89,29 @@ printit(unsigned long instatus, char *in
> int
> main(int argc, char *argv[])
> {
> - char *domainname = NULL;
> + char *domain = NULL, *inmap;
> struct ypall_callback ypcb;
> - char *inmap;
> - int notrans;
> - int c, r;
> + extern char *optarg;
> + extern int optind;
Extern declarations belong in a header file. Broken programs sometimes
declare them directly to hide the bug that they don't include the correct
header file, but this program still includes the correct header file
(unistd.h>). Compilers are directed to warn about nested externs at
a not very high WARNS.
> + int notrans, c, r;
Combining the declaration is good, but the variables are still unsorted.
> u_int i;
>
> notrans = key = 0;
> -
> while ((c = getopt(argc, argv, "xd:kt")) != -1)
> switch (c) {
> case 'x':
> - for (i = 0; i<sizeof ypaliases/sizeof ypaliases[0]; i++)
> + for (i=0; i<sizeof ypaliases/sizeof ypaliases[0]; i++)
Further away from KNF. The code is squished up to avoid line splitting,
but the old version only squished 2 of 3 binary operations and that made
the line length exactly 80.
> ...
> @@ -120,24 +120,29 @@ main(int argc, char *argv[])
> if (optind + 1 != argc)
> usage();
>
> - if (!domainname)
> - yp_get_default_domain(&domainname);
> + if (!domain)
> + yp_get_default_domain(&domain);
Still uses '!' on pointers.
>
> inmap = argv[optind];
> - for (i = 0; (!notrans) && i<sizeof ypaliases/sizeof ypaliases[0]; i++)
> - if (strcmp(inmap, ypaliases[i].alias) == 0)
> - inmap = ypaliases[i].name;
> + if (!notrans) {
> + for (i=0; i<sizeof ypaliases/sizeof ypaliases[0]; i++)
Squished as above, but now the squishing is not even needed to avoid
line-splitting.
> case YPERR_YPBIND:
> - errx(1, "not running ypbind");
> + errx(1, "ypcat: not running ypbind\n");
> + exit(1);
Large regressions. Now the program name is printed twice, and the
newline at the end of the message is printed twice, and there are 2
exits, with the new one unreachable.
> default:
> - errx(1, "no such map %s. reason: %s", inmap, yperr_string(r));
> + errx(1, "No such map %s. Reason: %s\n",
> + inmap, yperr_string(r));
> + exit(1);
As above, except the program name is not printed twice, plus
- the first word after the program name is now capitalized. This is part
of a sentence beginning with the program name and a colon. There are
various style guides for capitilization after a colon. FreeBSD uses the
following inconsistent rules in error messages:
- don't capitalize
- however, if the error message is from strerror(), then it capitalizes.
Keep this.
- the spacing and phrasing for the second sentence is not so good and is
not improved by capitalization. It is more normal to use further
punctuation in the same sentence.
> }
> exit(0);
> }
Bruce
More information about the svn-src-head
mailing list