diff options
Diffstat (limited to 'man3/rtime.3')
-rw-r--r-- | man3/rtime.3 | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/man3/rtime.3 b/man3/rtime.3 new file mode 100644 index 000000000..e78695a9a --- /dev/null +++ b/man3/rtime.3 @@ -0,0 +1,112 @@ +.\" Copyright 2003 walter harms (walter.harms@informatik.uni-oldenburg.de) +.\" Distributed under GPL +.\" Modified 2003-04-04 Walter Harms +.\" <walter.harms@informatik.uni-oldenburg.de> +.\" +.\" Slightly polished, aeb, 2003-04-06 +.\" +.TH RTIME 3 2003-04-04 "sunrpc" "RPC time function" +.SH NAME +rtime \- get time from a remote machine +.SH SYNOPSIS +.sp +.B "#include <rpc/des_crypt.h>" +.sp +.BI "int rtime(struct sockaddr_in *" addrp , +.BI "struct rpc_timeval *" timep , +.BI "struct rpc_timeval *" timeout ); +.sp +.SH DESCRIPTION +This function uses the Time Server Protocol as described in +RFC 868 to obtain the time from a remote machine. +.LP +The Time Server Protocol gives the time in seconds since midnight 1900-01-01, +and this function subtracts the appropriate constant in order to +convert the result to seconds since midnight 1970-01-01, the Unix epoch. +.LP +When +.I timeout +is non-NULL, the udp/time socket (port 37) is used. +Otherwise, the tcp/time socket (port 37) is used. +.SH "RETURN VALUE" +On success, 0 is returned, and the obtained 32-bit time value is stored in +.IR timep->tv_sec . +In case of error -1 is returned, and +.I errno +is set appropriately. +.SH ERRORS +All errors for underlying functions (sendto, poll, recvfrom, connect, read) +can occur. Moreover: +.TP +.B EIO +The number of returned bytes is not 4. +.TP +.B ETIMEDOUT +The waiting time as defined in timeout has expired. +.SH "EXAMPLE" +This example requires that port 37 is up and open. You may check +that the time entry within +.I /etc/inetd.conf +is not commented out. +.br +The program connects to a computer called 'linux'. +Using 'localhost' does not work. +The result is the localtime of the computer 'linux'. +.sp +.nf +#include <stdio.h> +#include <errno.h> +#include <string.h> +#include <time.h> +#include <rpc/auth_des.h> +#include <netdb.h> + +int use_tcp = 0; +char *servername = "linux"; + +int main() { + struct sockaddr_in name; + struct rpc_timeval time1 = {0,0}; + struct rpc_timeval timeout = {1,0}; + struct hostent *hent; + int ret; + + memset((char *)&name, 0, sizeof(name)); + sethostent(1); + hent = gethostbyname(servername); + memcpy((char *)&name.sin_addr, hent->h_addr, hent->h_length); + + ret = rtime(&name, &time1, use_tcp ? NULL : &timeout); + if (ret < 0) + perror("rtime error"); + else + printf("%s", ctime((time_t *)&time1.tv_sec)); + + return 0; +} +.fi +.SH "NOTES" +Only IPV4 is supported. +.LP +Some +.I in.timed +versions only support TCP. Try the above example program with +.I use_tcp +set to 1. +.LP +Libc5 uses the prototype +.br +int rtime(struct sockaddr_in *, struct timeval *, struct timeval *); +.br +and requires +.I <sys/time.h> +instead of +.IR <rpc/auth_des.h> . + +.SH "BUGS" +rtime() in glibc <= 2.2.5 does not work properly on 64bit machines. +.SH "SEE ALSO" +.BR netdate (1), +.BR ntpdate (1), +.BR rdate (1), +.BR inetd (8) |