This patch adds a config option which makes touch set timestamps to the
current microsecond, instead of the current second.

Signed-off-by: Peter D <urmu...@snopyta.org>
---
This patch should be applied on top of Xabier Oneca's patches to add the
-a and -m options to busybox

 coreutils/touch.c | 22 ++++++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)

diff --git a/coreutils/touch.c b/coreutils/touch.c
index e80720982..ac9e233ad 100644
--- a/coreutils/touch.c
+++ b/coreutils/touch.c
@@ -33,6 +33,13 @@
 //config:      depends on TOUCH
 //config:      help
 //config:      Enable touch to use a reference file or a given date/time 
argument.
+//config:
+//config:config FEATURE_TOUCH_MICROSECONDS
+//config:      bool "Add support for setting microsecond timestamps"
+//config:      default y
+//config:      depends on TOUCH
+//config:      help
+//config:      Enable touch to set timestamps to the current microsecond
 
 //applet:IF_TOUCH(APPLET_NOFORK(touch, touch, BB_DIR_BIN, BB_SUID_DROP, touch))
 
@@ -142,10 +149,11 @@ int touch_main(int argc UNUSED_PARAM, char **argv)
                xstat(reference_file, &stbuf);
                timebuf[0].tv_sec = stbuf.st_atime;
                timebuf[1].tv_sec = stbuf.st_mtime;
-               /* Can use .st_mtim.tv_nsec
-                * (or is it .st_mtimensec?? see date.c)
-                * to set microseconds too.
-                */
+#if ENABLE_FEATURE_TOUCH_MICROSECONDS
+               /* divide nanoseconds by 1000 to get microseconds */
+               timebuf[0].tv_usec = stbuf.st_atim.tv_nsec / 1000;
+               timebuf[1].tv_usec = stbuf.st_mtim.tv_nsec / 1000;
+#endif
                newtime = timebuf;
        }
 
@@ -190,8 +198,14 @@ int touch_main(int argc UNUSED_PARAM, char **argv)
                                 */
                                if (!(opts & OPT_a))
                                        timebuf[0].tv_sec = stbuf.st_atime;
+#if ENABLE_FEATURE_TOUCH_MICROSECONDS
+                                       timebuf[0].tv_usec = 
stbuf.st_atim.tv_nsec / 1000;
+#endif
                                if (!(opts & OPT_m))
                                        timebuf[1].tv_sec = stbuf.st_mtime;
+#if ENABLE_FEATURE_TOUCH_MICROSECONDS
+                                       timebuf[1].tv_usec = 
stbuf.st_mtim.tv_nsec / 1000;
+#endif
                        }
                }
 
-- 
2.31.1

_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to