mirror of
https://github.com/opnsense/src.git
synced 2026-05-04 17:05:14 -04:00
install: Fix METALOG ouptut for numeric -o and -g args
install's -o and -g flags both accept a name or a numeric argument. In -U -M (non-root METALOG) mode it always emitted uname= and gname= in the METALOG, but these are not appropriate for numeric IDs. If the -o and/or -u arguments parse as an ID, emit uid= and/or gid= respectively. Note that if an argument is valid as both a name and numeric ID we will prefer the name in normal (non -U -M) mode and the ID in -U -M mode. We don't want to require a passwd db in non-root mode, and entirely-numeric user or group names are a terrible idea so just accept this discrepancy. PR: 284119 Reviewed by: jlduran Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D48504 (cherry picked from commit 4b04f5d7e8a2bb0488ad5804ecaf45cef5b1d46f)
This commit is contained in:
parent
8921c82b76
commit
90702fb5de
1 changed files with 16 additions and 4 deletions
|
|
@ -1444,10 +1444,22 @@ metadata_log(const char *path, const char *type, struct timespec *ts,
|
|||
p = buf;
|
||||
/* Print details. */
|
||||
fprintf(metafp, ".%s%s type=%s", *p ? "/" : "", p, type);
|
||||
if (owner)
|
||||
fprintf(metafp, " uname=%s", owner);
|
||||
if (group)
|
||||
fprintf(metafp, " gname=%s", group);
|
||||
if (owner) {
|
||||
id_t id;
|
||||
|
||||
if (parseid(owner, &id))
|
||||
fprintf(metafp, " uid=%jd", (intmax_t)id);
|
||||
else
|
||||
fprintf(metafp, " uname=%s", owner);
|
||||
}
|
||||
if (group) {
|
||||
id_t id;
|
||||
|
||||
if (parseid(group, &id))
|
||||
fprintf(metafp, " gid=%jd", (intmax_t)id);
|
||||
else
|
||||
fprintf(metafp, " gname=%s", group);
|
||||
}
|
||||
fprintf(metafp, " mode=%#o", mode);
|
||||
if (slink) {
|
||||
strsnvis(buf, buflen, slink, VIS_CSTYLE, extra);
|
||||
|
|
|
|||
Loading…
Reference in a new issue