svn commit: trunk/busybox: coreutils include libbb

vda at busybox.net vda at busybox.net
Fri Jan 19 21:24:18 UTC 2007


Author: vda
Date: 2007-01-19 13:24:17 -0800 (Fri, 19 Jan 2007)
New Revision: 17391

Log:
ls: use get_cached_username/groupname


Modified:
   trunk/busybox/coreutils/ls.c
   trunk/busybox/include/libbb.h
   trunk/busybox/libbb/procps.c


Changeset:
Modified: trunk/busybox/coreutils/ls.c
===================================================================
--- trunk/busybox/coreutils/ls.c	2007-01-19 21:19:35 UTC (rev 17390)
+++ trunk/busybox/coreutils/ls.c	2007-01-19 21:24:17 UTC (rev 17391)
@@ -291,7 +291,7 @@
 	free(dnp);			/* free the array holding the dnode pointers */
 }
 #else
-#define dfree(...) do {} while (0)
+#define dfree(...) ((void)0)
 #endif
 
 static struct dnode **splitdnarray(struct dnode **dn, int nfiles, int which)
@@ -375,7 +375,7 @@
 	qsort(dn, size, sizeof(*dn), sortcmp);
 }
 #else
-#define dnsort(dn, size) do {} while (0)
+#define dnsort(dn, size) ((void)0)
 #endif
 
 
@@ -541,9 +541,6 @@
 {
 	int i, column = 0;
 
-#if ENABLE_FEATURE_LS_USERNAME
-	char scratch[16];
-#endif
 #if ENABLE_FEATURE_LS_TIMESTAMPS
 	char *filetime;
 	time_t ttime, age;
@@ -584,10 +581,9 @@
 			break;
 		case LIST_ID_NAME:
 #if ENABLE_FEATURE_LS_USERNAME
-			bb_getpwuid(scratch, dn->dstat.st_uid, sizeof(scratch));
-			printf("%-8.8s ", scratch);
-			bb_getgrgid(scratch, dn->dstat.st_gid, sizeof(scratch));
-			printf("%-8.8s", scratch);
+			printf("%-8.8s %-8.8s",
+				get_cached_username(dn->dstat.st_uid),
+				get_cached_groupname(dn->dstat.st_gid));
 			column += 17;
 			break;
 #endif

Modified: trunk/busybox/include/libbb.h
===================================================================
--- trunk/busybox/include/libbb.h	2007-01-19 21:19:35 UTC (rev 17390)
+++ trunk/busybox/include/libbb.h	2007-01-19 21:24:17 UTC (rev 17391)
@@ -223,7 +223,6 @@
 extern int sysinfo(struct sysinfo* info);
 
 
-
 extern void chomp(char *s);
 extern void trim(char *s);
 extern char *skip_whitespace(const char *);
@@ -410,20 +409,26 @@
 /* These parse entries in /etc/passwd and /etc/group.  This is desirable
  * for BusyBox since we want to avoid using the glibc NSS stuff, which
  * increases target size and is often not needed on embedded systems.  */
-extern long xuname2uid(const char *name);
-extern long xgroup2gid(const char *name);
+long xuname2uid(const char *name);
+long xgroup2gid(const char *name);
 /* wrapper: allows string to contain numeric uid or gid */
-extern unsigned long get_ug_id(const char *s, long (*xname2id)(const char *));
+unsigned long get_ug_id(const char *s, long (*xname2id)(const char *));
 /* from chpst. Does not die, returns 0 on failure */
 struct bb_uidgid_t {
 	uid_t uid;
 	gid_t gid;
 };
-extern int get_uidgid(struct bb_uidgid_t*, const char*, int numeric_ok);
+int get_uidgid(struct bb_uidgid_t*, const char*, int numeric_ok);
 /* what is this? */
 /*extern char *bb_getug(char *buffer, char *idname, long id, int bufsize, char prefix);*/
-extern char *bb_getpwuid(char *name, long uid, int bufsize);
-extern char *bb_getgrgid(char *group, long gid, int bufsize);
+char *bb_getpwuid(char *name, long uid, int bufsize);
+char *bb_getgrgid(char *group, long gid, int bufsize);
+/* versions which cache results (useful for ps, ls etc) */
+const char* get_cached_username(uid_t uid);
+const char* get_cached_groupname(gid_t gid);
+void clear_username_cache(void);
+/* internally usernames are saved in fixed-sized char[] buffers */
+enum { USERNAME_MAX_SIZE = 16 - sizeof(int) };
 
 
 enum { BB_GETOPT_ERROR = 0x80000000 };
@@ -626,9 +631,6 @@
 procps_status_t* procps_scan(procps_status_t* sp, int flags);
 pid_t *find_pid_by_name(const char* procName);
 pid_t *pidlist_reverse(pid_t *pidList);
-void clear_username_cache(void);
-const char* get_cached_username(uid_t uid);
-const char* get_cached_groupname(gid_t gid);
 
 
 extern const char bb_uuenc_tbl_base64[];

Modified: trunk/busybox/libbb/procps.c
===================================================================
--- trunk/busybox/libbb/procps.c	2007-01-19 21:19:35 UTC (rev 17390)
+++ trunk/busybox/libbb/procps.c	2007-01-19 21:24:17 UTC (rev 17391)
@@ -13,7 +13,7 @@
 
 typedef struct unsigned_to_name_map_t {
 	unsigned id;
-	char name[12];
+	char name[USERNAME_MAX_SIZE];
 } unsigned_to_name_map_t;
 
 typedef struct cache_t {
@@ -137,7 +137,7 @@
 		if (flags & PSSCAN_UIDGID) {
 			if (stat(filename, &sb))
 				break;
-			/* Need comment - is this effective or read UID/GID? */
+			/* Need comment - is this effective or real UID/GID? */
 			sp->uid = sb.st_uid;
 			sp->gid = sb.st_gid;
 		}
@@ -209,7 +209,7 @@
 				if ((unsigned char)(buf[n]) < ' ')
 					buf[n] = ' ';
 			} while (n);
-			sp->cmd = strdup(buf);
+			sp->cmd = xstrdup(buf);
 		}
 		break;
 	}




More information about the busybox-cvs mailing list