diff options
Diffstat (limited to 'source/n/netdate/netdate.diff')
-rw-r--r-- | source/n/netdate/netdate.diff | 272 |
1 files changed, 272 insertions, 0 deletions
diff --git a/source/n/netdate/netdate.diff b/source/n/netdate/netdate.diff new file mode 100644 index 00000000..63144afa --- /dev/null +++ b/source/n/netdate/netdate.diff @@ -0,0 +1,272 @@ +--- ./Makefile.orig Wed Aug 14 12:19:54 1996 ++++ ./Makefile Wed Aug 4 19:50:55 1999 +@@ -1,14 +1,20 @@ +-LDFLAGS += -N +-CFLAGS = $(O) -Wall ++ ++CC = gcc ++ ++WARNINGS=-Wall -W -Wpointer-arith -Wbad-function-cast -Wcast-qual \ ++ -Wstrict-prototypes -Wmissing-prototypes \ ++ -Wmissing-declarations -Wnested-externs -Winline -Wcast-align ++ ++CFLAGS = -g $(WARNINGS) + + all: netdate + + netdate: netdate.o + + install: netdate +- install -s -m 0755 netdate /sbin/netdate +- install -m 0644 netdate.8 /usr/man/man8 ++ install -s netdate /usr/sbin/ ++ install -m 0644 netdate.8 /usr/man/man8/ + + clean: +- rm -f netdate *.o core ++ rm -f netdate *~ *.o core + +--- ./netdate.8.orig Wed Aug 14 12:19:54 1996 ++++ ./netdate.8 Wed Aug 4 19:50:55 1999 +@@ -53,40 +53,41 @@ + if that host supplies it. + .SH EXAMPLE + The most accurate hosts are named first in each example. +-Some such call on \fInetdate\fP should be put at the end of \fB/etc/rc.local\fP, ++Some such call on \fInetdate\fP should be put at the end of ++\fB/etc/rc.d/rc.local\fP, + so that the time will be set properly on system startup. +-It is also useful to have a shell script, e.g., \fB/etc/timehosts\fP, ++It is also useful to have a shell script, e.g., \fB/sbin/timehosts\fP, + which contains a call on \fInetdate\fP with arguments appropriate + to the local system, so that it is easy to set the time manually. +-.SH "netdate -l 30 udp dcn\-gateway tcp neighbor" +-\fIDcn\-gateway\fP is a hypothetical host which usually keeps time ++.SH "netdate -l 30 udp dcn\-gate tcp neighbor" ++\fIDcn\-gate\fP is a hypothetical host which usually keeps time + accurate to within milliseconds of Coordinated Universal Time, + but may occasionally be eight hours off. + \fINeighbor\fP is a neighbor of the local host which keeps time + with moderate accuracy. +-The time will be set to that of \fIdcn\-gateway\fP if that and \fIneighbor\fP ++The time will be set to that of \fIdcn\-gate\fP if that and \fIneighbor\fP + agree to within thirty seconds, else it will not be set at all. + This is almost good enough for most circumstances, but won't do + when the local host's time is known to be wrong (e.g., after + a long downtime or a bad crash) and must be set to something. + If one of the hosts named is inaccurate or not responding, there is a problem. +-.SH "netdate -l 30 udp dcn\-gateway tcp neighbor neighbor2" ++.SH "netdate -l 30 udp dcn\-gate tcp neighbor neighbor2" + Only two of the three hosts named must agree on the time. + The time will still be set (to that of the first neighbor), +-even if \fIdcn\-gateway\fP is far off as long as the two neighbors agree. ++even if \fIdcn\-gate\fP is far off as long as the two neighbors agree. + This is probably good enough for most cases. + One can arbitrarily gerrymander the vote for more insurance + (and less clarity), as in the following example. +-.SH "netdate\ udp\ dcn\-gateway\ dcn1\ tcp\ bbn\-unix\ localhost\ neighbor" ++.SH "netdate\ udp\ dcn\-gate\ dcn1\ tcp\ bbn\-unix\ localhost\ neighbor" + Here \fIdcn1\fP and \fIbbn\-unix\fP are more hypothetical very accurate + timekeepers, at least one of which keeps time independently from +-\fIdcn\-gateway\fP, one hopes. ++\fIdcn\-gate\fP, one hopes. + It is very likely that the time will be set to that one of those three + very accurate hosts, as long as at least two of them agree, or at least + one of them agrees with the neighbor or the local host's time. + If all the foreign hosts disagree, the time will not be set, + since \fBlocalhost\fP will be chosen as best. +-.SH "netdate\ \-l\ 3\ localhost\ localhost\ udp\ dcn\-gateway\ dcn1\ tcp\ bbn\-unix" ++.SH "netdate\ \-l\ 3\ localhost\ localhost\ udp\ dcn\-gate\ dcn1\ tcp\ bbn\-unix" + This example gives \fBlocalhost\fP two votes and declares it to usually + have the most accurate time. + All three foreign hosts must agree within three seconds +@@ -95,9 +96,9 @@ + Thus the time will be set only if it really needs to be. + .SH FILES + .nf +-/etc/inet/services for the time service port number +-/etc/inet/protocols for the protocol numbers +-/etc/wtmp to record time-setting ++/etc/services for the time service port number ++/etc/protocols for the protocol numbers ++/var/log/wtmp to record time-setting + .SH SEE ALSO + ARPANET Request for Comments 868, gettimeofday(2), date(1), + WWV (USA): +--- ./netdate.c.orig Wed Aug 14 12:19:54 1996 ++++ ./netdate.c Wed Aug 4 19:50:55 1999 +@@ -1,4 +1,4 @@ +-/* ++/* + NO WARRANTY + + THERE IS NO WARRANTY FOR THIS PROGRAM, TO THE EXTENT PERMITTED BY +@@ -8,8 +8,8 @@ + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM + IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +- ALL NECESSARY SERVICING, REPAIR OR CORRECTION. +- ++ ALL NECESSARY SERVICING, REPAIR OR CORRECTION. ++ + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL + ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR + REDISTRIBUTE THE PROGRAM, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +@@ -18,8 +18,8 @@ + DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD + PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), + EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +- SUCH DAMAGES. +- ++ SUCH DAMAGES. ++ + */ + + #ifndef lint +@@ -42,17 +42,24 @@ + #include <setjmp.h> + #include <signal.h> + #include <utmp.h> +-#define WTMP "/etc/wtmp" ++#define WTMP "/var/log/wtmp" + ++#ifndef __GLIBC__ + struct utmp wtmp[2] = { + { 0, 0, "|", "", 0, "", "", 0}, + { 0, 0, "{", "", 0, "", "", 0} + }; ++#else ++struct utmp wtmp[2] = { ++ { 0, 0, "|", "", "", "", {0, 0}, 0, {0, 0}, {0, 0, 0, 0}, "" }, ++ { 0, 0, "|", "", "", "", {0, 0}, 0, {0, 0}, {0, 0, 0, 0}, "" }, ++}; ++#endif + + char *service = "time"; + char *defaultproto = "udp"; + /* difference between 1900 (RFC868) and 1970 (UNIX) base times */ +-#define NETBASE 2208988800 ++#define NETBASE 2208988800u + + long limit = 5; + #define MAXHOSTS 20 +@@ -78,7 +85,6 @@ + + void usage (void); + int setproto (char *, struct timehost *); +-void main (int, char **); + int getdiff (struct timehost *); + int getdate (struct timehost *); + void printit (struct timehost *); +@@ -98,7 +104,7 @@ + fprintf (stderr, + "usage: %s [ -l limit ] host ...\n" + "%s tries to find a group of at least two hosts whose times agree\n" +-"within %d seconds, and sets the time to that of the first host in the group.\n", ++"within %ld seconds, and sets the time to that of the first host in the group.\n", + whoami, whoami, limit); + fprintf (stderr, + "The limit may be set with the -l option. Setting it to zero (or supplying\n" +@@ -112,7 +118,7 @@ + int verbose = 0; + int debug = 0; + +-void ++int + main (int argc, char **argv) + { + extern char *rindex(); +@@ -155,7 +161,7 @@ + if (*argv == NULL) + usage(); + if (debug) +- fprintf (stderr, "%s: rdate %d; verbose %d; limit %d.\n", ++ fprintf (stderr, "%s: rdate %d; verbose %d; limit %ld.\n", + whoami, rdate, verbose, limit); + for (thishost = &timehosts[0]; *argv != NULL; argv++) { + if (thishost >= tophost) { +@@ -189,7 +195,7 @@ + exit(1); + if ((thishost = mungediffs(thishost)) == NULL) { + fprintf (stderr, +- "No two hosts agree on the time within %d seconds\n", ++ "No two hosts agree on the time within %ld seconds\n", + limit); + exit(1); + } +@@ -258,7 +264,7 @@ + and return the first of that group. If no two hosts agree, + give up. + */ +- ++ + struct timehost * + mungediffs(struct timehost *tophost) + { +@@ -284,7 +290,7 @@ + } + } + if (verbose) { +- printf (" %d\n", thishost -> count); ++ printf (" %ld\n", thishost -> count); + (void)fflush(stdout); + } + if (thishost -> count > goodhost -> count) +@@ -312,13 +318,13 @@ + && abs((thishost -> then.tv_sec - now.tv_sec) - thishost -> difference) + > limit) { + fprintf (stderr, +- "Time from %s has varied more than the limit of %d seconds\n", ++ "Time from %s has varied more than the limit of %ld seconds\n", + thishost -> hostname, limit); + printit(thishost); + exit(1); + } + if (settimeofday (&thishost -> then, (struct timezone *)0) == -1) +- perror ("netdate; settimeofday"); ++ perror ("netdate: settimeofday"); + else { + int wf; + if ((wf = open(WTMP, 1)) >= 0) { +@@ -348,12 +354,12 @@ + (void)sprintf(newstring, "%s ", thishost -> hostname); + tvsub(&diff, &thishost -> then, &now); + printdiff(&newstring[strlen(newstring)], &diff); +- printf ("%-24s %.19s.%03d", newstring, ++ printf ("%-24s %.19s.%03ld", newstring, + ctime((unsigned long *)&thishost -> then.tv_sec), + thishost -> then.tv_usec / 1000); + if (verbose) { + tp = localtime((unsigned long *)&thishost -> acked); +- printf(" at %02d:%02d:%02d.%03d", ++ printf(" at %02d:%02d:%02d.%03ld", + tp -> tm_hour, tp -> tm_min, tp -> tm_sec, + thishost -> acked.tv_usec / 1000); + tvsub(&diff, &thishost -> acked, &thishost -> asked); +@@ -446,20 +452,23 @@ + perror("netdate: connect"); + goto bad; + } ++ + if (thishost -> socktype == SOCK_DGRAM) { +- if (write (s, "\n", 1) < 0) { ++ if (send (s, "\n", 1, 0) < 0) { + perror ("netdate: send"); + goto bad; + } + } +- nread = read (s, (char *)&thishost -> then, sizeof (thishost -> then)); ++ nread = recv (s, (char *)&thishost -> then, sizeof (thishost -> then), 0); + (void)gettimeofday (&thishost -> acked, (struct timezone *)0); + (void)alarm(0); + now = thishost -> acked; +- if (nread < sizeof(thishost -> then.tv_sec)) { ++ ++ if (nread != 4) { + perror ("netdate: read"); + goto bad; + } ++ + /* RFC 868 only allows seconds, but what the hell */ + if (nread == sizeof(thishost -> then)) + thishost -> then.tv_usec = ntohl(thishost -> then.tv_usec); |