[PATCH] libexec/fingerd WARNS=6 cleanup
Joe Talbott
josepht at cstone.net
Wed Apr 27 07:04:57 PDT 2005
I'm working on cleaning up libexec/fingerd. Attached is a patch in
progress. I am having trouble with constness of these variables:
av
comp
prog
Any help is appreciated.
Joe
Index: Makefile
===================================================================
RCS file: /home/dcvs/src/libexec/fingerd/Makefile,v
retrieving revision 1.2
diff -u -r1.2 Makefile
--- Makefile 17 Jun 2003 04:27:07 -0000 1.2
+++ Makefile 27 Apr 2005 13:03:37 -0000
@@ -6,5 +6,6 @@
DPADD= ${LIBUTIL}
LDADD= -lutil
MAN= fingerd.8
+WARNS?= 6
.include <bsd.prog.mk>
Index: fingerd.c
===================================================================
RCS file: /home/dcvs/src/libexec/fingerd/fingerd.c,v
retrieving revision 1.3
diff -u -r1.3 fingerd.c
--- fingerd.c 14 Nov 2003 03:54:29 -0000 1.3
+++ fingerd.c 27 Apr 2005 13:35:37 -0000
@@ -51,22 +51,28 @@
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
+#include <sysexits.h>
#include "pathnames.h"
void logerr (const char *, ...);
int
-main(argc, argv)
- int argc;
- char *argv[];
+main(int argc, char *argv[])
{
- register FILE *fp;
- register int ch;
- register char *lp;
+ FILE *fp;
+ int ch;
+ char *lp;
struct sockaddr_storage ss;
- int p[2], logging, secure, sval;
+ int p[2];
+ int logging;
+ int secure;
+ int sval;
#define ENTRIES 50
- char **ap, *av[ENTRIES + 1], **comp, line[1024], *prog;
+ char **ap;
+ char *av[ENTRIES + 1];
+ char ** volatile comp;
+ char line[1024];
+ const char * volatile prog;
char rhost[MAXHOSTNAMELEN];
prog = _PATH_FINGER;
@@ -85,6 +91,7 @@
secure = 1;
break;
case '?':
+ /* FALLTHROUGH */
default:
logerr("illegal option -- %c", optopt);
}
@@ -95,13 +102,13 @@
{
int one = 1;
if (setsockopt(STDOUT_FILENO, IPPROTO_TCP, TCP_NOPUSH, &one,
- sizeof one) < 0) {
+ sizeof(one)) < 0) {
logerr("setsockopt(TCP_NOPUSH) failed: %m");
}
}
if (!fgets(line, sizeof(line), stdin))
- exit(1);
+ exit(EX_IOERR);
if (logging) {
char *t;
@@ -133,16 +140,16 @@
av[2] = "--";
for (lp = line, ap = &av[3];;) {
*ap = strtok(lp, " \t\r\n");
- if (!*ap) {
+ if (*ap != NULL) {
if (secure && ap == &av[3]) {
- puts("must provide username\r\n");
- exit(1);
+ printf("must provide username\r\n");
+ exit(EX_USAGE);
}
break;
}
if (secure && strchr(*ap, '@')) {
- puts("forwarding service denied\r\n");
- exit(1);
+ printf("forwarding service denied\r\n");
+ exit(EX_NOPERM);
}
/* RFC742: "/[Ww]" == "-l" */
@@ -157,7 +164,7 @@
lp = NULL;
}
- if (lp = strrchr(prog, '/'))
+ if ((lp = strrchr(prog, '/')) != NULL)
*comp = ++lp;
else
*comp = prog;
@@ -166,18 +173,18 @@
switch(vfork()) {
case 0:
- (void)close(p[0]);
+ close(p[0]);
if (p[1] != 1) {
- (void)dup2(p[1], 1);
- (void)close(p[1]);
+ dup2(p[1], 1);
+ close(p[1]);
}
execv(prog, comp);
logerr("execv: %s: %s", prog, strerror(errno));
- _exit(1);
+ _exit(EX_UNAVAILABLE);
case -1:
logerr("fork: %s", strerror(errno));
}
- (void)close(p[1]);
+ close(p[1]);
if (!(fp = fdopen(p[0], "r")))
logerr("fdopen: %s", strerror(errno));
while ((ch = getc(fp)) != EOF) {
@@ -185,32 +192,18 @@
putchar('\r');
putchar(ch);
}
- exit(0);
+ exit(EX_OK);
}
-#if __STDC__
#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
void
-#if __STDC__
logerr(const char *fmt, ...)
-#else
-logerr(fmt, va_alist)
- char *fmt;
- va_dcl
-#endif
{
va_list ap;
-#if __STDC__
va_start(ap, fmt);
-#else
- va_start(ap);
-#endif
- (void)vsyslog(LOG_ERR, fmt, ap);
+ vsyslog(LOG_ERR, fmt, ap);
va_end(ap);
- exit(1);
+ exit(EX_UNAVAILABLE);
/* NOTREACHED */
}
More information about the Submit
mailing list