summaryrefslogtreecommitdiffstats
path: root/man/man3/rtime.3
diff options
context:
space:
mode:
Diffstat (limited to 'man/man3/rtime.3')
-rw-r--r--man/man3/rtime.3152
1 files changed, 152 insertions, 0 deletions
diff --git a/man/man3/rtime.3 b/man/man3/rtime.3
new file mode 100644
index 0000000..f116831
--- /dev/null
+++ b/man/man3/rtime.3
@@ -0,0 +1,152 @@
+'\" t
+.\" Copyright 2003 walter harms (walter.harms@informatik.uni-oldenburg.de)
+.\"
+.\" SPDX-License-Identifier: GPL-1.0-or-later
+.\"
+.\" Modified 2003-04-04 Walter Harms
+.\" <walter.harms@informatik.uni-oldenburg.de>
+.\"
+.\" Slightly polished, aeb, 2003-04-06
+.\"
+.TH rtime 3 2024-05-02 "Linux man-pages (unreleased)"
+.SH NAME
+rtime \- get time from a remote machine
+.SH LIBRARY
+Standard C library
+.RI ( libc ", " \-lc )
+.SH SYNOPSIS
+.nf
+.B "#include <rpc/auth_des.h>"
+.P
+.BI "int rtime(struct sockaddr_in *" addrp ", struct rpc_timeval *" timep ,
+.BI " struct rpc_timeval *" timeout );
+.fi
+.SH DESCRIPTION
+This function uses the Time Server Protocol as described in
+RFC\ 868 to obtain the time from a remote machine.
+.P
+The Time Server Protocol gives the time in seconds since
+00:00:00 UTC, 1 Jan 1900,
+and this function subtracts the appropriate constant in order to
+convert the result to seconds since the
+Epoch, 1970-01-01 00:00:00 +0000 (UTC).
+.P
+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 to indicate the error.
+.SH ERRORS
+All errors for underlying functions
+.RB ( sendto (2),
+.BR poll (2),
+.BR recvfrom (2),
+.BR connect (2),
+.BR read (2))
+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 ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lbx lb lb
+l l l.
+Interface Attribute Value
+T{
+.na
+.nh
+.BR rtime ()
+T} Thread safety MT-Safe
+.TE
+.SH NOTES
+Only IPv4 is supported.
+.P
+Some
+.I in.timed
+versions support only TCP.
+Try the example program with
+.I use_tcp
+set to 1.
+.\" .P
+.\" Libc5 uses the prototype
+.\" .P
+.\" .nf
+.\" int rtime(struct sockaddr_in *, struct timeval *, struct timeval *);
+.\" .fi
+.\" .P
+.\" and requires
+.\" .I <sys/time.h>
+.\" instead of
+.\" .IR <rpc/auth_des.h> .
+.SH BUGS
+.BR rtime ()
+in glibc 2.2.5 and earlier does not work properly on 64-bit machines.
+.SH EXAMPLES
+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.
+.P
+The program connects to a computer called "linux".
+Using "localhost" does not work.
+The result is the localtime of the computer "linux".
+.P
+.\" SRC BEGIN (rtime.c)
+.EX
+#include <errno.h>
+#include <netdb.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+\&
+#include <rpc/auth_des.h>
+\&
+static int use_tcp = 0;
+static const char servername[] = "linux";
+\&
+int
+main(void)
+{
+ int ret;
+ time_t t;
+ struct hostent *hent;
+ struct rpc_timeval time1 = {0, 0};
+ struct rpc_timeval timeout = {1, 0};
+ struct sockaddr_in name;
+\&
+ memset(&name, 0, sizeof(name));
+ sethostent(1);
+ hent = gethostbyname(servername);
+ memcpy(&name.sin_addr, hent\->h_addr, hent\->h_length);
+\&
+ ret = rtime(&name, &time1, use_tcp ? NULL : &timeout);
+ if (ret < 0)
+ perror("rtime error");
+ else {
+ t = time1.tv_sec;
+ printf("%s\en", ctime(&t));
+ }
+\&
+ exit(EXIT_SUCCESS);
+}
+.EE
+.\" SRC END
+.SH SEE ALSO
+.\" .BR netdate (1),
+.BR ntpdate (1),
+.\" .BR rdate (1),
+.BR inetd (8)