svn commit: trunk/busybox/coreutils

vda at busybox.net vda at busybox.net
Fri Jan 19 22:03:07 UTC 2007


Author: vda
Date: 2007-01-19 14:03:06 -0800 (Fri, 19 Jan 2007)
New Revision: 17393

Log:
ls: stop doing time() for each file in "ls -l"
ls: use fully-buffered stdout (can it be problematic
on VERY slow/hanging NFS mounts?)


Modified:
   trunk/busybox/coreutils/ls.c


Changeset:
Modified: trunk/busybox/coreutils/ls.c
===================================================================
--- trunk/busybox/coreutils/ls.c	2007-01-19 21:33:19 UTC (rev 17392)
+++ trunk/busybox/coreutils/ls.c	2007-01-19 22:03:06 UTC (rev 17393)
@@ -537,6 +537,12 @@
 }
 
 
+#if ENABLE_FEATURE_LS_TIMESTAMPS
+/* Do time() just once. Saves one syscall per file for "ls -l" */
+/* Initialized in main() */
+static time_t current_time_t;
+#endif
+
 static int list_single(struct dnode *dn)
 {
 	int i, column = 0;
@@ -611,7 +617,8 @@
 			break;
 		case LIST_DATE_TIME:
 			if ((all_fmt & LIST_FULLTIME) == 0) {
-				age = time(NULL) - ttime;
+				/* current_time_t ~== time(NULL) */
+				age = current_time_t - ttime;
 				printf("%6.6s ", filetime + 4);
 				if (age < 3600L * 24 * 365 / 2 && age > -15 * 60) {
 					/* hh:mm if less than 6 months old */
@@ -785,6 +792,12 @@
 	USE_FEATURE_AUTOWIDTH(char *terminal_width_str = NULL;)
 	USE_FEATURE_LS_COLOR(char *color_opt;)
 
+	setvbuf(stdout, bb_common_bufsiz1, _IOFBF, BUFSIZ);
+
+#if ENABLE_FEATURE_LS_TIMESTAMPS
+	time(&current_time_t);
+#endif
+
 	all_fmt = LIST_SHORT |
 		(ENABLE_FEATURE_LS_SORTFILES * (SORT_NAME | SORT_FORWARD));
 




More information about the busybox-cvs mailing list