]> git.ipfire.org Git - thirdparty/man-pages.git/blob - man3/rtime.3
err.3: EXAMPLES: use EXIT_FAILURE rather than 1 as exit status
[thirdparty/man-pages.git] / man3 / rtime.3
1 .\" Copyright 2003 walter harms (walter.harms@informatik.uni-oldenburg.de)
2 .\"
3 .\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
4 .\" Distributed under GPL
5 .\" %%%LICENSE_END
6 .\"
7 .\" Modified 2003-04-04 Walter Harms
8 .\" <walter.harms@informatik.uni-oldenburg.de>
9 .\"
10 .\" Slightly polished, aeb, 2003-04-06
11 .\"
12 .TH RTIME 3 2019-03-06 "GNU" "Linux Programmer's Manual"
13 .SH NAME
14 rtime \- get time from a remote machine
15 .SH SYNOPSIS
16 .nf
17 .B "#include <rpc/auth_des.h>"
18 .PP
19 .BI "int rtime(struct sockaddr_in *" addrp ", struct rpc_timeval *" timep ,
20 .BI " struct rpc_timeval *" timeout );
21 .fi
22 .SH DESCRIPTION
23 This function uses the Time Server Protocol as described in
24 RFC\ 868 to obtain the time from a remote machine.
25 .PP
26 The Time Server Protocol gives the time in seconds since
27 00:00:00 UTC, 1 Jan 1900,
28 and this function subtracts the appropriate constant in order to
29 convert the result to seconds since the
30 Epoch, 1970-01-01 00:00:00 +0000 (UTC).
31 .PP
32 When
33 .I timeout
34 is non-NULL, the udp/time socket (port 37) is used.
35 Otherwise, the tcp/time socket (port 37) is used.
36 .SH RETURN VALUE
37 On success, 0 is returned, and the obtained 32-bit time value is stored in
38 .IR timep\->tv_sec .
39 In case of error \-1 is returned, and
40 .I errno
41 is set appropriately.
42 .SH ERRORS
43 All errors for underlying functions
44 .RB ( sendto (2),
45 .BR poll (2),
46 .BR recvfrom (2),
47 .BR connect (2),
48 .BR read (2))
49 can occur.
50 Moreover:
51 .TP
52 .B EIO
53 The number of returned bytes is not 4.
54 .TP
55 .B ETIMEDOUT
56 The waiting time as defined in timeout has expired.
57 .SH ATTRIBUTES
58 For an explanation of the terms used in this section, see
59 .BR attributes (7).
60 .TS
61 allbox;
62 lb lb lb
63 l l l.
64 Interface Attribute Value
65 T{
66 .BR rtime ()
67 T} Thread safety MT-Safe
68 .TE
69 .SH NOTES
70 Only IPv4 is supported.
71 .PP
72 Some
73 .I in.timed
74 versions support only TCP.
75 Try the example program with
76 .I use_tcp
77 set to 1.
78 .PP
79 Libc5 uses the prototype
80 .PP
81 .nf
82 int rtime(struct sockaddr_in *, struct timeval *, struct timeval *);
83 .fi
84 .PP
85 and requires
86 .I <sys/time.h>
87 instead of
88 .IR <rpc/auth_des.h> .
89 .SH BUGS
90 .BR rtime ()
91 in glibc 2.2.5 and earlier does not work properly on 64-bit machines.
92 .SH EXAMPLES
93 This example requires that port 37 is up and open.
94 You may check
95 that the time entry within
96 .I /etc/inetd.conf
97 is not commented out.
98 .PP
99 The program connects to a computer called "linux".
100 Using "localhost" does not work.
101 The result is the localtime of the computer "linux".
102 .PP
103 .EX
104 #include <stdio.h>
105 #include <stdlib.h>
106 #include <errno.h>
107 #include <string.h>
108 #include <time.h>
109 #include <rpc/auth_des.h>
110 #include <netdb.h>
111
112 static int use_tcp = 0;
113 static char *servername = "linux";
114
115 int
116 main(void)
117 {
118 struct sockaddr_in name;
119 struct rpc_timeval time1 = {0,0};
120 struct rpc_timeval timeout = {1,0};
121 struct hostent *hent;
122 int ret;
123
124 memset(&name, 0, sizeof(name));
125 sethostent(1);
126 hent = gethostbyname(servername);
127 memcpy(&name.sin_addr, hent\->h_addr, hent\->h_length);
128
129 ret = rtime(&name, &time1, use_tcp ? NULL : &timeout);
130 if (ret < 0)
131 perror("rtime error");
132 else {
133 time_t t = time1.tv_sec;
134 printf("%s\en", ctime(&t));
135 }
136
137 exit(EXIT_SUCCESS);
138 }
139 .EE
140 .SH SEE ALSO
141 .\" .BR netdate (1),
142 .BR ntpdate (1),
143 .\" .BR rdate (1),
144 .BR inetd (8)