[23561] in Source-Commits
/svn/athena r23202 - trunk/athena/etc/gettime
daemon@ATHENA.MIT.EDU (rbasch@MIT.EDU)
Fri Oct 10 17:37:50 2008
Date: Fri, 10 Oct 2008 17:37:20 -0400 (EDT)
From: rbasch@MIT.EDU
Message-Id: <200810102137.RAA23064@drugstore.mit.edu>
To: source-commits@MIT.EDU
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Author: rbasch
Date: 2008-10-10 17:37:19 -0400 (Fri, 10 Oct 2008)
New Revision: 23202
Modified:
trunk/athena/etc/gettime/gettime.c
Log:
In gettime:
* Fix for 64-bit systems, where a time_t is 64 bits.
Modified: trunk/athena/etc/gettime/gettime.c
===================================================================
--- trunk/athena/etc/gettime/gettime.c 2008-10-07 22:54:23 UTC (rev 23201)
+++ trunk/athena/etc/gettime/gettime.c 2008-10-10 21:37:19 UTC (rev 23202)
@@ -47,7 +47,7 @@
struct hostent *host_info = NULL;
struct sockaddr_in time_address;
char *time_hostname;
- unsigned char buffer[20];
+ uint32_t rfc868_time;
int tries, time_socket, result;
fd_set read_set;
struct timeval timeout, current_time;
@@ -155,7 +155,7 @@
for (tries = 0; tries < MAX_TRIES; tries++)
{
/* Just send an empty packet. */
- send(time_socket, buffer, 0, 0);
+ send(time_socket, NULL, 0, 0);
/* Wait a little while for a reply. */
FD_SET(time_socket, &read_set);
@@ -173,7 +173,7 @@
}
/* There must be data available. */
- result = recv(time_socket, buffer, sizeof(buffer), 0);
+ result = recv(time_socket, &rfc868_time, sizeof(rfc868_time), 0);
if (result < 0)
{
fprintf(stderr, "%s: receive failed: %s\n", program_name,
@@ -198,9 +198,8 @@
}
/* Convert RFC868 time to Unix time, and print it. */
- now = (time_t)(((buffer[0] << 24) | (buffer[1] << 16) |
- (buffer[2] << 8) | buffer[3])
- - UNIX_OFFSET_TO_1900);
+ now = (time_t)(ntohl(rfc868_time) - UNIX_OFFSET_TO_1900);
+
fprintf(stdout, "%s", ctime(&now));
/* Set the time if requested. */