aboutsummaryrefslogtreecommitdiff
path: root/util-linux/rdate.c
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2012-06-11 02:06:11 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2012-06-11 02:06:11 +0200
commit93c32f2dd2b9d7c06bc46be8adac704c08929da8 (patch)
treea05060b2ac7f70d1069bb4d84ac1b9b3eb3c8b26 /util-linux/rdate.c
parent605f2641d83f4294147bede9403a590a29a6674a (diff)
downloadbusybox-w32-93c32f2dd2b9d7c06bc46be8adac704c08929da8.tar.gz
busybox-w32-93c32f2dd2b9d7c06bc46be8adac704c08929da8.tar.bz2
busybox-w32-93c32f2dd2b9d7c06bc46be8adac704c08929da8.zip
rdate: code shrink
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'util-linux/rdate.c')
-rw-r--r--util-linux/rdate.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/util-linux/rdate.c b/util-linux/rdate.c
index 1f36d8f37..2ca585fec 100644
--- a/util-linux/rdate.c
+++ b/util-linux/rdate.c
@@ -1,7 +1,7 @@
1/* vi: set sw=4 ts=4: */ 1/* vi: set sw=4 ts=4: */
2/* 2/*
3 * The Rdate command will ask a time server for the RFC 868 time 3 * The Rdate command will ask a time server for the RFC 868 time
4 * and optionally set the system time. 4 * and optionally set the system time.
5 * 5 *
6 * by Sterling Huxley <sterling@europa.com> 6 * by Sterling Huxley <sterling@europa.com>
7 * 7 *
@@ -11,9 +11,9 @@
11//usage:#define rdate_trivial_usage 11//usage:#define rdate_trivial_usage
12//usage: "[-sp] HOST" 12//usage: "[-sp] HOST"
13//usage:#define rdate_full_usage "\n\n" 13//usage:#define rdate_full_usage "\n\n"
14//usage: "Get and possibly set the system date and time from a remote HOST\n" 14//usage: "Get and possibly set the system date/time from a remote HOST\n"
15//usage: "\n -s Set the system date and time (default)" 15//usage: "\n -s Set the system date/time (default)"
16//usage: "\n -p Print the date and time" 16//usage: "\n -p Print the date/time"
17 17
18#include "libbb.h" 18#include "libbb.h"
19 19
@@ -35,15 +35,16 @@ static time_t askremotedate(const char *host)
35 35
36 fd = create_and_connect_stream_or_die(host, bb_lookup_port("time", "tcp", 37)); 36 fd = create_and_connect_stream_or_die(host, bb_lookup_port("time", "tcp", 37));
37 37
38 if (safe_read(fd, (void *)&nett, 4) != 4) /* read time from server */ 38 if (safe_read(fd, &nett, 4) != 4) /* read time from server */
39 bb_error_msg_and_die("%s did not send the complete time", host); 39 bb_error_msg_and_die("%s did not send the complete time", host);
40 close(fd); 40 if (ENABLE_FEATURE_CLEAN_UP)
41 close(fd);
41 42
42 /* convert from network byte order to local byte order. 43 /* Convert from network byte order to local byte order.
43 * RFC 868 time is the number of seconds 44 * RFC 868 time is the number of seconds
44 * since 00:00 (midnight) 1 January 1900 GMT 45 * since 00:00 (midnight) 1 January 1900 GMT
45 * the RFC 868 time 2,208,988,800 corresponds to 00:00 1 Jan 1970 GMT 46 * the RFC 868 time 2,208,988,800 corresponds to 00:00 1 Jan 1970 GMT
46 * Subtract the RFC 868 time to get Linux epoch 47 * Subtract the RFC 868 time to get Linux epoch.
47 */ 48 */
48 49
49 return ntohl(nett) - RFC_868_BIAS; 50 return ntohl(nett) - RFC_868_BIAS;
@@ -53,14 +54,14 @@ int rdate_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
53int rdate_main(int argc UNUSED_PARAM, char **argv) 54int rdate_main(int argc UNUSED_PARAM, char **argv)
54{ 55{
55 time_t remote_time; 56 time_t remote_time;
56 unsigned long flags; 57 unsigned flags;
57 58
58 opt_complementary = "-1"; 59 opt_complementary = "-1";
59 flags = getopt32(argv, "sp"); 60 flags = getopt32(argv, "sp");
60 61
61 remote_time = askremotedate(argv[optind]); 62 remote_time = askremotedate(argv[optind]);
62 63
63 if ((flags & 2) == 0) { 64 if (!(flags & 2)) {
64 time_t current_time; 65 time_t current_time;
65 66
66 time(&current_time); 67 time(&current_time);
@@ -71,7 +72,7 @@ int rdate_main(int argc UNUSED_PARAM, char **argv)
71 bb_perror_msg_and_die("can't set time of day"); 72 bb_perror_msg_and_die("can't set time of day");
72 } 73 }
73 74
74 if ((flags & 1) == 0) 75 if ((flags & 2) || !(flags & 1))
75 printf("%s", ctime(&remote_time)); 76 printf("%s", ctime(&remote_time));
76 77
77 return EXIT_SUCCESS; 78 return EXIT_SUCCESS;