X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=util-linux%2Frdate.c;h=04a76129a3f62d2e199ad042c8d412bc4313deb0;hb=ace02dc9cd3ca0c95db5b5ebe87b9d6cd6ca1733;hp=5f31282fc8abf4ac7416757a7cba96abcc95909d;hpb=40eaa9f0bb2c689552e39890592ed773d870c1fa;p=oweals%2Fbusybox.git diff --git a/util-linux/rdate.c b/util-linux/rdate.c index 5f31282fc..04a76129a 100644 --- a/util-linux/rdate.c +++ b/util-linux/rdate.c @@ -40,25 +40,24 @@ static const int RFC_868_BIAS = 2208988800UL; static time_t askremotedate(const char *host) { struct hostent *h; - struct sockaddr_in sin; + struct sockaddr_in s_in; struct servent *tserv; unsigned long int nett, localt; int fd; - if (!(h = gethostbyname(host))) /* get the IP addr */ - perror_msg_and_die("%s", host); + h = xgethostbyname(host); /* get the IP addr */ + memcpy(&s_in.sin_addr, h->h_addr, sizeof(s_in.sin_addr)); - if ((tserv = getservbyname("time", "tcp")) == NULL) /* find port # */ - perror_msg_and_die("%s", "time"); + s_in.sin_port = htons(37); /* find port # */ + if ((tserv = getservbyname("time", "tcp")) != NULL) + s_in.sin_port = tserv->s_port; - if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) /* get net connection */ - perror_msg_and_die("%s", "socket"); + s_in.sin_family = AF_INET; - memcpy(&sin.sin_addr, h->h_addr, sizeof(sin.sin_addr)); - sin.sin_port= tserv->s_port; - sin.sin_family = AF_INET; + if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) /* get net connection */ + perror_msg_and_die("socket"); - if (connect(fd, (struct sockaddr *)&sin, sizeof(sin)) < 0) /* connect to time server */ + if (connect(fd, (struct sockaddr *)&s_in, sizeof(s_in)) < 0) /* connect to time server */ perror_msg_and_die("%s", host); if (read(fd, (void *)&nett, 4) != 4) /* read time from server */ @@ -79,47 +78,39 @@ static time_t askremotedate(const char *host) int rdate_main(int argc, char **argv) { - time_t time; + time_t remote_time; int opt; - int setdate = 0; - int printdate= 0; + int setdate = 1; + int printdate = 1; /* Interpret command line args */ - /* do special-case option parsing */ - if (argv[1] && (strcmp(argv[1], "--help") == 0)) - show_usage(); - - /* do normal option parsing */ - while ((opt = getopt(argc, argv, "Hsp")) > 0) { + while ((opt = getopt(argc, argv, "sp")) > 0) { switch (opt) { - default: - case 'H': - show_usage(); - break; case 's': - setdate++; + printdate = 0; + setdate = 1; break; case 'p': - printdate++; + printdate = 1; + setdate = 0; break; + default: + show_usage(); } } - /* the default action is to set the date */ - if (printdate==0 && setdate==0) setdate++; - if (optind == argc) show_usage(); - time = askremotedate(argv[optind]); + remote_time = askremotedate(argv[optind]); if (setdate) { - if (stime(&time) < 0) + if (stime(&remote_time) < 0) perror_msg_and_die("Could not set time of day"); } if (printdate) - printf("%s", ctime(&time)); + printf("%s", ctime(&remote_time)); return EXIT_SUCCESS; }