libbb: make user/group name cache strings longer (~27 chars)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/include/libbb.h b/include/libbb.h
index 65c3194..c26012c 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -839,14 +839,14 @@
char* xgid2group(gid_t gid) FAST_FUNC;
char* uid2uname(uid_t uid) FAST_FUNC;
char* gid2group(gid_t gid) FAST_FUNC;
-char* uid2uname_utoa(long uid) FAST_FUNC;
-char* gid2group_utoa(long gid) FAST_FUNC;
+char* uid2uname_utoa(uid_t uid) FAST_FUNC;
+char* gid2group_utoa(gid_t gid) FAST_FUNC;
/* versions which cache results (useful for ps, ls etc) */
const char* get_cached_username(uid_t uid) FAST_FUNC;
const char* get_cached_groupname(gid_t gid) FAST_FUNC;
void clear_username_cache(void) FAST_FUNC;
/* internally usernames are saved in fixed-sized char[] buffers */
-enum { USERNAME_MAX_SIZE = 16 - sizeof(int) };
+enum { USERNAME_MAX_SIZE = 32 - sizeof(uid_t) };
#if ENABLE_FEATURE_CHECK_NAMES
void die_if_bad_username(const char* name) FAST_FUNC;
#else
diff --git a/libbb/bb_pwd.c b/libbb/bb_pwd.c
index 32406cb..4829b72 100644
--- a/libbb/bb_pwd.c
+++ b/libbb/bb_pwd.c
@@ -72,13 +72,13 @@
return (gr) ? gr->gr_name : NULL;
}
-char* FAST_FUNC uid2uname_utoa(long uid)
+char* FAST_FUNC uid2uname_utoa(uid_t uid)
{
char *name = uid2uname(uid);
return (name) ? name : utoa(uid);
}
-char* FAST_FUNC gid2group_utoa(long gid)
+char* FAST_FUNC gid2group_utoa(gid_t gid)
{
char *name = gid2group(gid);
return (name) ? name : utoa(gid);
diff --git a/libbb/procps.c b/libbb/procps.c
index fb4c320..5833a1f 100644
--- a/libbb/procps.c
+++ b/libbb/procps.c
@@ -12,13 +12,13 @@
#include "libbb.h"
-typedef struct unsigned_to_name_map_t {
- long id;
+typedef struct id_to_name_map_t {
+ uid_t id;
char name[USERNAME_MAX_SIZE];
-} unsigned_to_name_map_t;
+} id_to_name_map_t;
typedef struct cache_t {
- unsigned_to_name_map_t *cache;
+ id_to_name_map_t *cache;
int size;
} cache_t;
@@ -39,7 +39,7 @@
#if 0 /* more generic, but we don't need that yet */
/* Returns -N-1 if not found. */
/* cp->cache[N] is allocated and must be filled in this case */
-static int get_cached(cache_t *cp, unsigned id)
+static int get_cached(cache_t *cp, uid_t id)
{
int i;
for (i = 0; i < cp->size; i++)
@@ -52,8 +52,8 @@
}
#endif
-static char* get_cached(cache_t *cp, long id,
- char* FAST_FUNC x2x_utoa(long id))
+static char* get_cached(cache_t *cp, uid_t id,
+ char* FAST_FUNC x2x_utoa(uid_t id))
{
int i;
for (i = 0; i < cp->size; i++)