proposed changes to eliminate P macro

Ken Pizzini tz_ at
Wed Nov 14 02:10:51 UTC 2007

I just noticed a bug in my previous patch: my test-run compiling
logwtmp.c failed to notice that I botched the strncpy() prototype,
because my <utmp.h> file defines the OLD_TIME macro which bypasses
the branch of the source code where logwtmp() is defined.

Below is a better fix for this: #include the relevant system headers
which declare these functions, rather than inserting the prototypes
explicitly in the code.  I've also cleaned up the function declaration
for logwtmp() itself while I was at it.

		--Ken Pizzini

diff -ru tzcode2007-cleancast/logwtmp.c tzcode2007-foo/logwtmp.c
--- tzcode2007-cleancast/logwtmp.c	2007-11-13 15:08:32.000000000 -0800
+++ tzcode2007-foo/logwtmp.c	2007-11-13 17:52:54.000000000 -0800
@@ -39,20 +39,20 @@
 #ifndef OLD_TIME
+#include <string.h>
+#include <time.h>
 #include <sys/file.h>
 #include <sys/time.h>
 #include <sys/stat.h>
 #define WTMPFILE	"/usr/adm/wtmp"
-logwtmp(line, name, host)
-	char *line, *name, *host;
+logwtmp(const char *line, const char *name, const char *host)
 	struct utmp ut;
 	struct stat buf;
 	int fd;
-	time_t time(time_t *);
-	char *strncpy(char *, const char *);
 	if ((fd = open(WTMPFILE, O_WRONLY|O_APPEND, 0)) < 0)
diff -ru tzcode2007-cleancast/date.c tzcode2007-foo/date.c
--- tzcode2007-cleancast/date.c	2007-11-13 17:26:02.000000000 -0800
+++ tzcode2007-foo/date.c	2007-11-13 17:53:29.000000000 -0800
@@ -440,7 +440,7 @@
 #define TSPTYPES
 #include <protocols/timed.h>
-extern int		logwtmp();
+extern void	logwtmp(const char *line, const char *name, const char *host);
 #define settimeofday(t, tz) (settimeofday)(t)

More information about the tz mailing list