Remove stime() function calls
authorAlistair Francis <alistair.francis@wdc.com>
Tue, 19 Nov 2019 12:06:40 +0000 (13:06 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Tue, 19 Nov 2019 12:08:25 +0000 (13:08 +0100)
stime() has been deprecated in glibc 2.31 and replaced with
clock_settime(). Let's replace the stime() function calls with
clock_settime() in preperation.

function                                             old     new   delta
rdate_main                                           197     224     +27
clock_settime                                          -      27     +27
date_main                                            926     941     +15
stime                                                 37       -     -37
------------------------------------------------------------------------------
(add/remove: 2/2 grow/shrink: 2/0 up/down: 69/-37)             Total: 32 bytes

Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
coreutils/date.c
libbb/missing_syscalls.c
util-linux/rdate.c

index f7e9a8d0ea310e28492f2b725d0cc4e0b8047626..b9b7fd2cbde9abda099a60274e313a48f15eb47e 100644 (file)
@@ -276,6 +276,9 @@ int date_main(int argc UNUSED_PARAM, char **argv)
                time(&ts.tv_sec);
 #endif
        }
+#if !ENABLE_FEATURE_DATE_NANO
+       ts.tv_nsec = 0;
+#endif
        localtime_r(&ts.tv_sec, &tm_time);
 
        /* If date string is given, update tm_time, and maybe set date */
@@ -298,9 +301,10 @@ int date_main(int argc UNUSED_PARAM, char **argv)
                if (date_str[0] != '@')
                        tm_time.tm_isdst = -1;
                ts.tv_sec = validate_tm_time(date_str, &tm_time);
+               ts.tv_nsec = 0;
 
                /* if setting time, set it */
-               if ((opt & OPT_SET) && stime(&ts.tv_sec) < 0) {
+               if ((opt & OPT_SET) && clock_settime(CLOCK_REALTIME, &ts) < 0) {
                        bb_simple_perror_msg("can't set date");
                }
        }
index 87cf59b3d4cc1cf3b41c81ea1c36dc9c3a1c7392..dc40d91552f176cafd7d93eaafe9a8db6ee171c5 100644 (file)
@@ -15,14 +15,6 @@ pid_t getsid(pid_t pid)
        return syscall(__NR_getsid, pid);
 }
 
-int stime(const time_t *t)
-{
-       struct timeval tv;
-       tv.tv_sec = *t;
-       tv.tv_usec = 0;
-       return settimeofday(&tv, NULL);
-}
-
 int sethostname(const char *name, size_t len)
 {
        return syscall(__NR_sethostname, name, len);
index 41aade5ea67ace14000396e8e474e214a5d4d3dc..bb1dc519a28ffcca4b0ba658f9403adc809f2933 100644 (file)
@@ -95,9 +95,13 @@ int rdate_main(int argc UNUSED_PARAM, char **argv)
        if (!(flags & 2)) { /* no -p (-s may be present) */
                if (time(NULL) == remote_time)
                        bb_simple_error_msg("current time matches remote time");
-               else
-                       if (stime(&remote_time) < 0)
+               else {
+                       struct timespec ts;
+                       ts.tv_sec = remote_time;
+                       ts.tv_nsec = 0;
+                       if (clock_settime(CLOCK_REALTIME, &ts) < 0)
                                bb_simple_perror_msg_and_die("can't set time of day");
+               }
        }
 
        if (flags != 1) /* not lone -s */