Allow uid and uname or gid and gname to both be printed while preserving the behavior of falling back to [ug]id when the name is not resolvable. ------------------------------------------------------------------------ Index: create.c =================================================================== --- create.c (revision 240784) +++ create.c (revision 240785) @@ -167,7 +167,7 @@ { u_int32_t len, val; int fd, offset; - const char *name; + const char *name = NULL; #if !defined(NO_MD5) || !defined(NO_RMD160) || !defined(NO_SHA1) || !defined(NO_SHA2) char *digestbuf; #endif @@ -187,14 +187,14 @@ if (keys & F_UNAME && (name = user_from_uid(p->fts_statp->st_uid, 1)) != NULL) output(indent, &offset, "uname=%s", name); - else /* if (keys & F_UID) */ + if (keys & F_UID || (keys & F_UNAME && name == NULL)) output(indent, &offset, "uid=%u", p->fts_statp->st_uid); } if (keys & (F_GID | F_GNAME) && p->fts_statp->st_gid != gid) { if (keys & F_GNAME && (name = group_from_gid(p->fts_statp->st_gid, 1)) != NULL) output(indent, &offset, "gname=%s", name); - else /* if (keys & F_GID) */ + if (keys & F_GID || (keys & F_GNAME && name == NULL)) output(indent, &offset, "gid=%u", p->fts_statp->st_gid); } if (keys & F_MODE && (p->fts_statp->st_mode & MBITS) != mode) @@ -314,7 +314,7 @@ uid_t suid; mode_t smode; u_long sflags = 0; - const char *name; + const char *name = NULL; gid_t savegid; uid_t saveuid; mode_t savemode; @@ -385,14 +385,14 @@ if (keys & F_UNAME && (name = user_from_uid(saveuid, 1)) != NULL) printf(" uname=%s", name); - else /* if (keys & F_UID) */ + if (keys & F_UID || (keys & F_UNAME && name == NULL)) printf(" uid=%lu", (u_long)saveuid); } if (keys & (F_GID | F_GNAME)) { if (keys & F_GNAME && (name = group_from_gid(savegid, 1)) != NULL) printf(" gname=%s", name); - else /* if (keys & F_UID) */ + if (keys & F_GID || (keys & F_GNAME && name == NULL)) printf(" gid=%lu", (u_long)savegid); } if (keys & F_MODE)