]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
lsipc: differentiate between UID and USER names
authorKarel Zak <kzak@redhat.com>
Wed, 1 Jul 2015 10:12:08 +0000 (12:12 +0200)
committerKarel Zak <kzak@redhat.com>
Mon, 20 Jul 2015 09:48:09 +0000 (11:48 +0200)
Signed-off-by: Karel Zak <kzak@redhat.com>
sys-utils/lsipc.c

index a013b0d133f975799d2eccf9bb2fcfaa25998dd9..f648bf615c7994ceb735b9ffb4f6b23c48329f3e 100644 (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:
+                                       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)))
+                                           || (pw = getpwuid(msgdsp->msg_perm.cuid))) {
                                                xasprintf(&arg, "%s", pw->pw_name);
-                                       else
-                                               xasprintf(&arg, "%u", msgdsp->msg_perm.cuid);
-                                       rc = scols_line_set_data(ln, n, arg);
+                                               rc = scols_line_set_data(ln, n, arg);
+                                       }
                                        break;
                                case COL_CGID:
+                                       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)))
+                                           || (gr = getgrgid(msgdsp->msg_perm.cgid))) {
                                                xasprintf(&arg, "%s", gr->gr_name);
-                                       else
-                                               xasprintf(&arg, "%u", msgdsp->msg_perm.cuid);
-                                       rc = scols_line_set_data(ln, n, arg);
+                                               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:
+                                       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)))
+                                                       || (pw = getpwuid(shmdsp->shm_perm.cuid))) {
                                                xasprintf(&arg, "%s", pw->pw_name);
-                                       else
-                                               xasprintf(&arg, "%u", shmdsp->shm_perm.cuid);
-                                       rc = scols_line_set_data(ln, n, arg);
+                                               rc = scols_line_set_data(ln, n, arg);
+                                       }
                                        break;
                                case COL_CGID:
+                                       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)))
+                                                       || (gr = getgrgid(shmdsp->shm_perm.cgid))) {
                                                xasprintf(&arg, "%s", gr->gr_name);
-                                       else
-                                               xasprintf(&arg, "%u", shmdsp->shm_perm.cuid);
-                                       rc = scols_line_set_data(ln, n, arg);
+                                               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,