id argument is not used for Q_QUOTAOFF, Q_GETFMT, Q_V2_GETINFO,
Q_GETINFO, Q_V2_SEETINFO, Q_SETINFO, Q_SYNC, Q_XQUOTAON, Q_XQUOTAOFF,
Q_XQUOTARM, Q_XGETQSTAT, Q_XGETQSTATV, Q_XQUOTASYNC, Q_V1_GETSTATS,
Q_V2_GETSTATS subcommands, so it makes sense to avoid printing it.

* quota.c (decode_cmd_data): Add id argument parameter, add printing of
  id argument for Q_GETQUOTA, Q_SETQUOTA, Q_GETNEXTQUOTA, Q_V1_GETQUOTA,
  Q_V1_SETQUOTA, Q_V2_GETQUOTA, Q_V2_SETQUOTA, Q_XGETQUOTA,
  Q_XGETNEXTQUOTA, Q_XSETQLIM subcommands and the default case;
  (SYS_FUNC(quotactl)): remove printing of id argument, add id argument
  to decode_cmd_data call.
---
 quota.c |  115 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 100 insertions(+), 15 deletions(-)

diff --git a/quota.c b/quota.c
index efef4ed..495bd5f 100644
--- a/quota.c
+++ b/quota.c
@@ -212,16 +212,29 @@ struct fs_quota_statv {
 };
 
 static int
-decode_cmd_data(struct tcb *tcp, uint32_t cmd, unsigned long data)
+decode_cmd_data(struct tcb *tcp, uint32_t id, uint32_t cmd, unsigned long data)
 {
        switch (cmd) {
+               case Q_QUOTAOFF:
+                       break;
                case Q_GETQUOTA:
-                       if (entering(tcp))
+                       if (entering(tcp)) {
+                               printuid(", ", id);
+                               tprints(", ");
+
                                return 0;
+                       }
+
+                       /* Fall-through */
                case Q_SETQUOTA:
                {
                        struct if_dqblk dq;
 
+                       if (entering(tcp)) {
+                               printuid(", ", id);
+                               tprints(", ");
+                       }
+
                        if (umove_or_printaddr(tcp, data, &dq))
                                break;
                        tprintf("{bhardlimit=%" PRIu64 ", ", dq.dqb_bhardlimit);
@@ -245,8 +258,13 @@ decode_cmd_data(struct tcb *tcp, uint32_t cmd, unsigned 
long data)
                {
                        struct if_nextdqblk dq;
 
-                       if (entering(tcp))
+                       if (entering(tcp)) {
+                               printuid(", ", id);
+                               tprints(", ");
+
                                return 0;
+                       }
+
                        if (umove_or_printaddr(tcp, data, &dq))
                                break;
                        tprintf("{bhardlimit=%" PRIu64 ", ", dq.dqb_bhardlimit);
@@ -267,12 +285,23 @@ decode_cmd_data(struct tcb *tcp, uint32_t cmd, unsigned 
long data)
                        break;
                }
                case Q_V1_GETQUOTA:
-                       if (entering(tcp))
+                       if (entering(tcp)) {
+                               printuid(", ", id);
+                               tprints(", ");
+
                                return 0;
+                       }
+
+                       /* Fall-through */
                case Q_V1_SETQUOTA:
                {
                        struct v1_dqblk dq;
 
+                       if (entering(tcp)) {
+                               printuid(", ", id);
+                               tprints(", ");
+                       }
+
                        if (umove_or_printaddr(tcp, data, &dq))
                                break;
                        tprintf("{bhardlimit=%u, ", dq.dqb_bhardlimit);
@@ -286,12 +315,23 @@ decode_cmd_data(struct tcb *tcp, uint32_t cmd, unsigned 
long data)
                        break;
                }
                case Q_V2_GETQUOTA:
-                       if (entering(tcp))
+                       if (entering(tcp)) {
+                               printuid(", ", id);
+                               tprints(", ");
+
                                return 0;
+                       }
+
+                       /* Fall-through */
                case Q_V2_SETQUOTA:
                {
                        struct v2_dqblk dq;
 
+                       if (entering(tcp)) {
+                               printuid(", ", id);
+                               tprints(", ");
+                       }
+
                        if (umove_or_printaddr(tcp, data, &dq))
                                break;
                        tprintf("{ihardlimit=%u, ", dq.dqb_ihardlimit);
@@ -306,12 +346,23 @@ decode_cmd_data(struct tcb *tcp, uint32_t cmd, unsigned 
long data)
                }
                case Q_XGETQUOTA:
                case Q_XGETNEXTQUOTA:
-                       if (entering(tcp))
+                       if (entering(tcp)) {
+                               printuid(", ", id);
+                               tprints(", ");
+
                                return 0;
+                       }
+
+                       /* Fall-through */
                case Q_XSETQLIM:
                {
                        struct xfs_dqblk dq;
 
+                       if (entering(tcp)) {
+                               printuid(", ", id);
+                               tprints(", ");
+                       }
+
                        if (umove_or_printaddr(tcp, data, &dq))
                                break;
                        tprintf("{version=%d, ", dq.d_version);
@@ -342,8 +393,12 @@ decode_cmd_data(struct tcb *tcp, uint32_t cmd, unsigned 
long data)
                {
                        uint32_t fmt;
 
-                       if (entering(tcp))
+                       if (entering(tcp)) {
+                               tprints(", ");
+
                                return 0;
+                       }
+
                        if (umove_or_printaddr(tcp, data, &fmt))
                                break;
                        tprints("[");
@@ -352,12 +407,20 @@ decode_cmd_data(struct tcb *tcp, uint32_t cmd, unsigned 
long data)
                        break;
                }
                case Q_GETINFO:
-                       if (entering(tcp))
+                       if (entering(tcp)) {
+                               tprints(", ");
+
                                return 0;
+                       }
+
+                       /* Fall-through */
                case Q_SETINFO:
                {
                        struct if_dqinfo dq;
 
+                       if (entering(tcp))
+                               tprints(", ");
+
                        if (umove_or_printaddr(tcp, data, &dq))
                                break;
                        tprintf("{bgrace=%" PRIu64 ", ", dq.dqi_bgrace);
@@ -370,12 +433,20 @@ decode_cmd_data(struct tcb *tcp, uint32_t cmd, unsigned 
long data)
                        break;
                }
                case Q_V2_GETINFO:
-                       if (entering(tcp))
+                       if (entering(tcp)) {
+                               tprints(", ");
+
                                return 0;
+                       }
+
+                       /* Fall-through */
                case Q_V2_SETINFO:
                {
                        struct v2_dqinfo dq;
 
+                       if (entering(tcp))
+                               tprints(", ");
+
                        if (umove_or_printaddr(tcp, data, &dq))
                                break;
                        tprintf("{bgrace=%u, ", dq.dqi_bgrace);
@@ -391,6 +462,8 @@ decode_cmd_data(struct tcb *tcp, uint32_t cmd, unsigned 
long data)
                {
                        struct v1_dqstats dq;
 
+                       tprints(", ");
+
                        if (entering(tcp))
                                return 0;
                        if (umove_or_printaddr(tcp, data, &dq))
@@ -409,6 +482,8 @@ decode_cmd_data(struct tcb *tcp, uint32_t cmd, unsigned 
long data)
                {
                        struct v2_dqstats dq;
 
+                       tprints(", ");
+
                        if (entering(tcp))
                                return 0;
                        if (umove_or_printaddr(tcp, data, &dq))
@@ -428,8 +503,12 @@ decode_cmd_data(struct tcb *tcp, uint32_t cmd, unsigned 
long data)
                {
                        struct xfs_dqstats dq;
 
-                       if (entering(tcp))
+                       if (entering(tcp)) {
+                               tprints(", ");
+
                                return 0;
+                       }
+
                        if (umove_or_printaddr(tcp, data, &dq))
                                break;
                        tprintf("{version=%d, ", dq.qs_version);
@@ -458,8 +537,12 @@ decode_cmd_data(struct tcb *tcp, uint32_t cmd, unsigned 
long data)
                {
                        struct fs_quota_statv dq;
 
-                       if (entering(tcp))
+                       if (entering(tcp)) {
+                               tprints(", ");
+
                                return 0;
+                       }
+
                        if (umove_or_printaddr(tcp, data, &dq))
                                break;
                        tprintf("{version=%d, ", dq.qs_version);
@@ -492,6 +575,8 @@ decode_cmd_data(struct tcb *tcp, uint32_t cmd, unsigned 
long data)
                {
                        uint32_t flag;
 
+                       tprints(", ");
+
                        if (umove_or_printaddr(tcp, data, &flag))
                                break;
                        tprints("[");
@@ -500,6 +585,8 @@ decode_cmd_data(struct tcb *tcp, uint32_t cmd, unsigned 
long data)
                        break;
                }
                default:
+                       printuid(", ", id);
+                       tprints(", ");
                        printaddr(data);
                        break;
        }
@@ -526,17 +613,15 @@ SYS_FUNC(quotactl)
                printxval(quotatypes, type, "???QUOTA");
                tprints("), ");
                printpath(tcp, tcp->u_arg[1]);
-               tprints(", ");
                switch (cmd) {
                        case Q_QUOTAON:
                        case Q_V1_QUOTAON:
+                               tprints(", ");
                                printxval(quota_formats, id, "QFMT_VFS_???");
                                tprints(", ");
                                printpath(tcp, tcp->u_arg[3]);
                                return RVAL_DECODED;
                }
-               printuid("", id);
-               tprints(", ");
        }
-       return decode_cmd_data(tcp, cmd, tcp->u_arg[3]);
+       return decode_cmd_data(tcp, id, cmd, tcp->u_arg[3]);
 }
-- 
1.7.10.4


------------------------------------------------------------------------------
_______________________________________________
Strace-devel mailing list
Strace-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/strace-devel

Reply via email to