lsipc: differentiate between UID and USER names

Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
Karel Zak 2015-07-01 12:12:08 +02:00
parent c8b47062ab
commit 7458c061db
1 changed files with 99 additions and 50 deletions

View File

@ -62,9 +62,13 @@ enum {
COL_OWNER,
COL_PERMS,
COL_CUID,
COL_CUSER,
COL_CGID,
COL_CGROUP,
COL_UID,
COL_USER,
COL_GID,
COL_GROUP,
COL_CTIME,
COLDESC_IDX_GEN_LAST = COL_CTIME,
@ -152,10 +156,14 @@ static const struct lsipc_coldesc coldescs[] =
[COL_ID] = { "ID", N_("Resource ID"), N_("ID"), 1},
[COL_OWNER] = { "OWNER", N_("Owner"), N_("Owner"), 1, SCOLS_FL_RIGHT},
[COL_PERMS] = { "PERMS", N_("Permissions"), N_("Permissions"), 1, SCOLS_FL_RIGHT},
[COL_CUID] = { "CUID", N_("Creator UID"), N_("CUID"), 1, SCOLS_FL_RIGHT},
[COL_CGID] = { "CGID", N_("Creator GID"), N_("CGID"), 1, SCOLS_FL_RIGHT},
[COL_CUID] = { "CUID", N_("Creator UID"), N_("Creator UID"), 1, SCOLS_FL_RIGHT},
[COL_CUSER] = { "CUSER", N_("Creator user"), N_("Creator user"), 1 },
[COL_CGID] = { "CGID", N_("Creator GID"), N_("Creator GID"), 1, SCOLS_FL_RIGHT},
[COL_CGROUP] = { "CGROUP", N_("Creator group"), N_("Creator group"), 1 },
[COL_UID] = { "UID", N_("User ID"), N_("UID"), 1, SCOLS_FL_RIGHT},
[COL_USER] = { "USER", N_("User name"), N_("User name"), 1},
[COL_GID] = { "GID", N_("Group ID"), N_("GID"), 1, SCOLS_FL_RIGHT},
[COL_GROUP] = { "GROUP", N_("Group name"), N_("Group name"), 1},
[COL_CTIME] = { "CTIME", N_("Time of the last change"), N_("Last change"), 1, SCOLS_FL_RIGHT},
/* msgq-specific */
@ -555,26 +563,35 @@ static void do_sem(int id, struct lsipc_control *ctl, struct libscols_table *tb)
rc = scols_line_set_data(ln, n, arg);
break;
case COL_CUID:
if (cpw)
xasprintf(&arg, "%s", cpw->pw_name);
else
xasprintf(&arg, "%u", semdsp->sem_perm.cuid);
xasprintf(&arg, "%u", semdsp->sem_perm.cuid);
rc = scols_line_set_data(ln, n, arg);
break;
case COL_CUSER:
if (cpw) {
xasprintf(&arg, "%s", cpw->pw_name);
rc = scols_line_set_data(ln, n, arg);
}
break;
case COL_CGID:
if (cgr)
xasprintf(&arg, "%s", cgr->gr_name);
else
xasprintf(&arg, "%u", semdsp->sem_perm.cuid);
xasprintf(&arg, "%u", semdsp->sem_perm.cuid);
rc = scols_line_set_data(ln, n, arg);
break;
case COL_CGROUP:
if (cgr) {
xasprintf(&arg, "%s", cgr->gr_name);
rc = scols_line_set_data(ln, n, arg);
}
break;
case COL_UID:
if (pw)
xasprintf(&arg, "%s", pw->pw_name);
else
xasprintf(&arg, "%u", semdsp->sem_perm.uid);
xasprintf(&arg, "%u", semdsp->sem_perm.uid);
rc = scols_line_set_data(ln, n, arg);
break;
case COL_USER:
if (pw) {
xasprintf(&arg, "%u", semdsp->sem_perm.uid);
rc = scols_line_set_data(ln, n, arg);
}
break;
case COL_GID:
if (gr)
xasprintf(&arg, "%s", gr->gr_name);
@ -582,6 +599,12 @@ static void do_sem(int id, struct lsipc_control *ctl, struct libscols_table *tb)
xasprintf(&arg, "%u", semdsp->sem_perm.gid);
rc = scols_line_set_data(ln, n, arg);
break;
case COL_GROUP:
if (gr) {
xasprintf(&arg, "%s", gr->gr_name);
rc = scols_line_set_data(ln, n, arg);
}
break;
case COL_CTIME:
if (semdsp->sem_ctime != 0) {
rc = scols_line_set_data(ln, n,
@ -705,35 +728,49 @@ static void do_msg(int id, struct lsipc_control *ctl, struct libscols_table *tb)
}
break;
case COL_CUID:
if (msgdsp->msg_perm.cuid == msgdsp->msg_perm.uid
|| (pw = getpwuid(msgdsp->msg_perm.cuid)))
xasprintf(&arg, "%s", pw->pw_name);
else
xasprintf(&arg, "%u", msgdsp->msg_perm.cuid);
xasprintf(&arg, "%u", msgdsp->msg_perm.cuid);
rc = scols_line_set_data(ln, n, arg);
break;
case COL_CUSER:
if (msgdsp->msg_perm.cuid == msgdsp->msg_perm.uid
|| (pw = getpwuid(msgdsp->msg_perm.cuid))) {
xasprintf(&arg, "%s", pw->pw_name);
rc = scols_line_set_data(ln, n, arg);
}
break;
case COL_CGID:
if (msgdsp->msg_perm.cgid == msgdsp->msg_perm.gid
|| (gr = getgrgid(msgdsp->msg_perm.cgid)))
xasprintf(&arg, "%s", gr->gr_name);
else
xasprintf(&arg, "%u", msgdsp->msg_perm.cuid);
xasprintf(&arg, "%u", msgdsp->msg_perm.cuid);
rc = scols_line_set_data(ln, n, arg);
break;
case COL_CGROUP:
if (msgdsp->msg_perm.cgid == msgdsp->msg_perm.gid
|| (gr = getgrgid(msgdsp->msg_perm.cgid))) {
xasprintf(&arg, "%s", gr->gr_name);
rc = scols_line_set_data(ln, n, arg);
}
break;
case COL_UID:
if (pw)
xasprintf(&arg, "%s", pw->pw_name);
else
xasprintf(&arg, "%u", msgdsp->msg_perm.uid);
xasprintf(&arg, "%u", msgdsp->msg_perm.uid);
rc = scols_line_set_data(ln, n, arg);
break;
case COL_USER:
if (pw) {
xasprintf(&arg, "%s", pw->pw_name);
rc = scols_line_set_data(ln, n, arg);
}
break;
case COL_GID:
if (gr)
xasprintf(&arg, "%s", gr->gr_name);
else
xasprintf(&arg, "%u", msgdsp->msg_perm.gid);
xasprintf(&arg, "%u", msgdsp->msg_perm.gid);
rc = scols_line_set_data(ln, n, arg);
break;
case COL_GROUP:
if (gr) {
xasprintf(&arg, "%s", gr->gr_name);
rc = scols_line_set_data(ln, n, arg);
}
break;
case COL_CTIME:
if (msgdsp->q_ctime != 0) {
rc = scols_line_set_data(ln, n,
@ -864,35 +901,47 @@ static void do_shm(int id, struct lsipc_control *ctl, struct libscols_table *tb)
rc = scols_line_set_data(ln, n, arg);
break;
case COL_CUID:
if (shmdsp->shm_perm.cuid == shmdsp->shm_perm.uid
|| (pw = getpwuid(shmdsp->shm_perm.cuid)))
xasprintf(&arg, "%s", pw->pw_name);
else
xasprintf(&arg, "%u", shmdsp->shm_perm.cuid);
xasprintf(&arg, "%u", shmdsp->shm_perm.cuid);
rc = scols_line_set_data(ln, n, arg);
break;
case COL_CUSER:
if (shmdsp->shm_perm.cuid == shmdsp->shm_perm.uid
|| (pw = getpwuid(shmdsp->shm_perm.cuid))) {
xasprintf(&arg, "%s", pw->pw_name);
rc = scols_line_set_data(ln, n, arg);
}
break;
case COL_CGID:
if (shmdsp->shm_perm.cgid == shmdsp->shm_perm.gid
|| (gr = getgrgid(shmdsp->shm_perm.cgid)))
xasprintf(&arg, "%s", gr->gr_name);
else
xasprintf(&arg, "%u", shmdsp->shm_perm.cuid);
xasprintf(&arg, "%u", shmdsp->shm_perm.cuid);
rc = scols_line_set_data(ln, n, arg);
break;
case COL_CGROUP:
if (shmdsp->shm_perm.cgid == shmdsp->shm_perm.gid
|| (gr = getgrgid(shmdsp->shm_perm.cgid))) {
xasprintf(&arg, "%s", gr->gr_name);
rc = scols_line_set_data(ln, n, arg);
}
break;
case COL_UID:
if (pw)
xasprintf(&arg, "%s", pw->pw_name);
else
xasprintf(&arg, "%u", shmdsp->shm_perm.uid);
xasprintf(&arg, "%u", shmdsp->shm_perm.uid);
rc = scols_line_set_data(ln, n, arg);
break;
case COL_USER:
if (pw) {
xasprintf(&arg, "%s", pw->pw_name);
rc = scols_line_set_data(ln, n, arg);
}
break;
case COL_GID:
if (gr)
xasprintf(&arg, "%s", gr->gr_name);
else
xasprintf(&arg, "%u", shmdsp->shm_perm.gid);
xasprintf(&arg, "%u", shmdsp->shm_perm.gid);
rc = scols_line_set_data(ln, n, arg);
break;
case COL_GROUP:
if (gr) {
xasprintf(&arg, "%s", gr->gr_name);
rc = scols_line_set_data(ln, n, arg);
}
break;
case COL_CTIME:
if (shmdsp->shm_ctim != 0) {
rc = scols_line_set_data(ln, n,