]> granicus.if.org Git - strace/blobdiff - quota.c
Remove HAVE_STRUCT_TCB_EXT_ARG, ext_arg, and u_lrval
[strace] / quota.c
diff --git a/quota.c b/quota.c
index e08bd5fef0da7aa2248d43a103664a643364cce2..19f391f763cb0ca34bafe9eb01cec8793b25c997 100644 (file)
--- a/quota.c
+++ b/quota.c
@@ -158,8 +158,20 @@ struct fs_quota_statv {
        uint64_t qs_pad2[8];
 };
 
+#define PRINT_FIELD_D(prefix, where, field)    \
+       tprintf("%s%s=%lld", (prefix), #field,  \
+               sign_extend_unsigned_to_ll((where).field))
+
+#define PRINT_FIELD_U(prefix, where, field)    \
+       tprintf("%s%s=%llu", (prefix), #field,  \
+               zero_extend_signed_to_ull((where).field))
+
+#define PRINT_FIELD_X(prefix, where, field)    \
+       tprintf("%s%s=%#llx", (prefix), #field, \
+               zero_extend_signed_to_ull((where).field))
+
 static int
-decode_cmd_data(struct tcb *tcp, uint32_t id, uint32_t cmd, unsigned long data)
+decode_cmd_data(struct tcb *tcp, uint32_t id, uint32_t cmd, kernel_ulong_t data)
 {
        switch (cmd) {
        case Q_QUOTAOFF:
@@ -192,21 +204,22 @@ decode_cmd_data(struct tcb *tcp, uint32_t id, uint32_t cmd, unsigned long data)
 
                if (umove_or_printaddr(tcp, data, &dq))
                        break;
-               tprintf("{dqb_bhardlimit=%" PRIu64 ", ", dq.dqb_bhardlimit);
-               tprintf("dqb_bsoftlimit=%" PRIu64 ", ", dq.dqb_bsoftlimit);
-               tprintf("dqb_curspace=%" PRIu64 ", ", dq.dqb_curspace);
-               tprintf("dqb_ihardlimit=%" PRIu64 ", ", dq.dqb_ihardlimit);
-               tprintf("dqb_isoftlimit=%" PRIu64 ", ", dq.dqb_isoftlimit);
-               tprintf("dqb_curinodes=%" PRIu64 ", ", dq.dqb_curinodes);
+               PRINT_FIELD_U("{", dq, dqb_bhardlimit);
+               PRINT_FIELD_U(", ", dq, dqb_bsoftlimit);
+               PRINT_FIELD_U(", ", dq, dqb_curspace);
+               PRINT_FIELD_U(", ", dq, dqb_ihardlimit);
+               PRINT_FIELD_U(", ", dq, dqb_isoftlimit);
+               PRINT_FIELD_U(", ", dq, dqb_curinodes);
                if (!abbrev(tcp)) {
-                       tprintf("dqb_btime=%" PRIu64 ", ", dq.dqb_btime);
-                       tprintf("dqb_itime=%" PRIu64 ", ", dq.dqb_itime);
-                       tprints("dqb_valid=");
+                       PRINT_FIELD_U(", ", dq, dqb_btime);
+                       PRINT_FIELD_U(", ", dq, dqb_itime);
+                       tprints("dqb_valid=");
                        printflags(if_dqblk_valid,
                                   dq.dqb_valid, "QIF_???");
-                       tprints("}");
-               } else
-                       tprints("...}");
+               } else {
+                       tprints(", ...");
+               }
+               tprints("}");
                break;
        }
        case Q_GETNEXTQUOTA:
@@ -222,21 +235,24 @@ decode_cmd_data(struct tcb *tcp, uint32_t id, uint32_t cmd, unsigned long data)
 
                if (umove_or_printaddr(tcp, data, &dq))
                        break;
-               tprintf("{dqb_bhardlimit=%" PRIu64 ", ", dq.dqb_bhardlimit);
-               tprintf("dqb_bsoftlimit=%" PRIu64 ", ", dq.dqb_bsoftlimit);
-               tprintf("dqb_curspace=%" PRIu64 ", ", dq.dqb_curspace);
-               tprintf("dqb_ihardlimit=%" PRIu64 ", ", dq.dqb_ihardlimit);
-               tprintf("dqb_isoftlimit=%" PRIu64 ", ", dq.dqb_isoftlimit);
-               tprintf("dqb_curinodes=%" PRIu64 ", ", dq.dqb_curinodes);
+               PRINT_FIELD_U("{", dq, dqb_bhardlimit);
+               PRINT_FIELD_U(", ", dq, dqb_bsoftlimit);
+               PRINT_FIELD_U(", ", dq, dqb_curspace);
+               PRINT_FIELD_U(", ", dq, dqb_ihardlimit);
+               PRINT_FIELD_U(", ", dq, dqb_isoftlimit);
+               PRINT_FIELD_U(", ", dq, dqb_curinodes);
                if (!abbrev(tcp)) {
-                       tprintf("dqb_btime=%" PRIu64 ", ", dq.dqb_btime);
-                       tprintf("dqb_itime=%" PRIu64 ", ", dq.dqb_itime);
-                       tprints("dqb_valid=");
+                       PRINT_FIELD_U(", ", dq, dqb_btime);
+                       PRINT_FIELD_U(", ", dq, dqb_itime);
+                       tprints("dqb_valid=");
                        printflags(if_dqblk_valid,
                                   dq.dqb_valid, "QIF_???");
-                       tprintf(", dqb_id=%u}", dq.dqb_id);
-               } else
-                       tprintf("dqb_id=%u, ...}", dq.dqb_id);
+                       PRINT_FIELD_U(", ", dq, dqb_id);
+               } else {
+                       PRINT_FIELD_U(", ", dq, dqb_id);
+                       tprints(", ...");
+               }
+               tprints("}");
                break;
        }
        case Q_XGETQUOTA:
@@ -260,32 +276,32 @@ decode_cmd_data(struct tcb *tcp, uint32_t id, uint32_t cmd, unsigned long data)
 
                if (umove_or_printaddr(tcp, data, &dq))
                        break;
-               tprintf("{d_version=%d, ", dq.d_version);
-               tprints("d_flags=");
+               PRINT_FIELD_D("{", dq, d_version);
+               tprints("d_flags=");
                printflags(xfs_dqblk_flags,
                           (uint8_t) dq.d_flags, "XFS_???_QUOTA");
-               tprintf(", d_fieldmask=%#x, ", dq.d_fieldmask);
-               tprintf("d_id=%u, ", dq.d_id);
-               tprintf("d_blk_hardlimit=%" PRIu64 ", ", dq.d_blk_hardlimit);
-               tprintf("d_blk_softlimit=%" PRIu64 ", ", dq.d_blk_softlimit);
-               tprintf("d_ino_hardlimit=%" PRIu64 ", ", dq.d_ino_hardlimit);
-               tprintf("d_ino_softlimit=%" PRIu64 ", ", dq.d_ino_softlimit);
-               tprintf("d_bcount=%" PRIu64 ", ", dq.d_bcount);
-               tprintf("d_icount=%" PRIu64 ", ", dq.d_icount);
+               PRINT_FIELD_X(", ", dq, d_fieldmask);
+               PRINT_FIELD_U(", ", dq, d_id);
+               PRINT_FIELD_U(", ", dq, d_blk_hardlimit);
+               PRINT_FIELD_U(", ", dq, d_blk_softlimit);
+               PRINT_FIELD_U(", ", dq, d_ino_hardlimit);
+               PRINT_FIELD_U(", ", dq, d_ino_softlimit);
+               PRINT_FIELD_U(", ", dq, d_bcount);
+               PRINT_FIELD_U(", ", dq, d_icount);
                if (!abbrev(tcp)) {
-                       tprintf("d_itimer=%d, ", dq.d_itimer);
-                       tprintf("d_btimer=%d, ", dq.d_btimer);
-                       tprintf("d_iwarns=%u, ", dq.d_iwarns);
-                       tprintf("d_bwarns=%u, ", dq.d_bwarns);
-                       tprintf("d_rtb_hardlimit=%" PRIu64 ", ",
-                               dq.d_rtb_hardlimit);
-                       tprintf("d_rtb_softlimit=%" PRIu64 ", ",
-                               dq.d_rtb_softlimit);
-                       tprintf("d_rtbcount=%" PRIu64 ", ", dq.d_rtbcount);
-                       tprintf("d_rtbtimer=%d, ", dq.d_rtbtimer);
-                       tprintf("d_rtbwarns=%u}", dq.d_rtbwarns);
-               } else
-                       tprints("...}");
+                       PRINT_FIELD_D(", ", dq, d_itimer);
+                       PRINT_FIELD_D(", ", dq, d_btimer);
+                       PRINT_FIELD_U(", ", dq, d_iwarns);
+                       PRINT_FIELD_U(", ", dq, d_bwarns);
+                       PRINT_FIELD_U(", ", dq, d_rtb_hardlimit);
+                       PRINT_FIELD_U(", ", dq, d_rtb_softlimit);
+                       PRINT_FIELD_U(", ", dq, d_rtbcount);
+                       PRINT_FIELD_D(", ", dq, d_rtbtimer);
+                       PRINT_FIELD_U(", ", dq, d_rtbwarns);
+               } else {
+                       tprints(", ...");
+               }
+               tprints("}");
                break;
        }
        case Q_GETFMT:
@@ -322,9 +338,9 @@ decode_cmd_data(struct tcb *tcp, uint32_t id, uint32_t cmd, unsigned long data)
 
                if (umove_or_printaddr(tcp, data, &dq))
                        break;
-               tprintf("{dqi_bgrace=%" PRIu64 ", ", dq.dqi_bgrace);
-               tprintf("dqi_igrace=%" PRIu64 ", ", dq.dqi_igrace);
-               tprints("dqi_flags=");
+               PRINT_FIELD_U("{", dq, dqi_bgrace);
+               PRINT_FIELD_U(", ", dq, dqi_igrace);
+               tprints("dqi_flags=");
                printflags(if_dqinfo_flags, dq.dqi_flags, "DQF_???");
                tprints(", dqi_valid=");
                printflags(if_dqinfo_valid, dq.dqi_valid, "IIF_???");
@@ -343,28 +359,27 @@ decode_cmd_data(struct tcb *tcp, uint32_t id, uint32_t cmd, unsigned long data)
 
                if (umove_or_printaddr(tcp, data, &dq))
                        break;
-               tprintf("{qs_version=%d, ", dq.qs_version);
-               if (abbrev(tcp)) {
-                       tprints("...}");
-                       break;
+               PRINT_FIELD_D("{", dq, qs_version);
+               if (!abbrev(tcp)) {
+                       tprints(", qs_flags=");
+                       printflags(xfs_quota_flags,
+                                  dq.qs_flags, "XFS_QUOTA_???");
+                       PRINT_FIELD_U(", ", dq, qs_incoredqs);
+                       PRINT_FIELD_U(", qs_uquota={", dq.qs_uquota, qfs_ino);
+                       PRINT_FIELD_U(", ", dq.qs_uquota, qfs_nblks);
+                       PRINT_FIELD_U(", ", dq.qs_uquota, qfs_nextents);
+                       PRINT_FIELD_U("}, qs_gquota={", dq.qs_gquota, qfs_ino);
+                       PRINT_FIELD_U(", ", dq.qs_gquota, qfs_nblks);
+                       PRINT_FIELD_U(", ", dq.qs_gquota, qfs_nextents);
+                       PRINT_FIELD_D("}, ", dq, qs_btimelimit);
+                       PRINT_FIELD_D(", ", dq, qs_itimelimit);
+                       PRINT_FIELD_D(", ", dq, qs_rtbtimelimit);
+                       PRINT_FIELD_U(", ", dq, qs_bwarnlimit);
+                       PRINT_FIELD_U(", ", dq, qs_iwarnlimit);
+               } else {
+                       tprints(", ...");
                }
-               tprints("qs_flags=");
-               printflags(xfs_quota_flags,
-                          dq.qs_flags, "XFS_QUOTA_???");
-               tprintf(", qs_incoredqs=%u, ", dq.qs_incoredqs);
-               tprints("qs_uquota={");
-               tprintf("qfs_ino=%" PRIu64 ", ", dq.qs_uquota.qfs_ino);
-               tprintf("qfs_nblks=%" PRIu64 ", ", dq.qs_uquota.qfs_nblks);
-               tprintf("qfs_nextents=%u}, ", dq.qs_uquota.qfs_nextents);
-               tprints("qs_gquota={");
-               tprintf("qfs_ino=%" PRIu64 ", ", dq.qs_gquota.qfs_ino);
-               tprintf("qfs_nblks=%" PRIu64 ", ", dq.qs_gquota.qfs_nblks);
-               tprintf("qfs_nextents=%u}, ", dq.qs_gquota.qfs_nextents);
-               tprintf("qs_btimelimit=%d, ", dq.qs_btimelimit);
-               tprintf("qs_itimelimit=%d, ", dq.qs_itimelimit);
-               tprintf("qs_rtbtimelimit=%d, ", dq.qs_rtbtimelimit);
-               tprintf("qs_bwarnlimit=%u, ", dq.qs_bwarnlimit);
-               tprintf("qs_iwarnlimit=%u}", dq.qs_iwarnlimit);
+               tprints("}");
                break;
        }
        case Q_XGETQSTATV:
@@ -379,32 +394,30 @@ decode_cmd_data(struct tcb *tcp, uint32_t id, uint32_t cmd, unsigned long data)
 
                if (umove_or_printaddr(tcp, data, &dq))
                        break;
-               tprintf("{qs_version=%d, ", dq.qs_version);
-               if (abbrev(tcp)) {
-                       tprints("...}");
-                       break;
+               PRINT_FIELD_D("{", dq, qs_version);
+               if (!abbrev(tcp)) {
+                       tprints(", qs_flags=");
+                       printflags(xfs_quota_flags,
+                                  dq.qs_flags, "XFS_QUOTA_???");
+                       PRINT_FIELD_U(", ", dq, qs_incoredqs);
+                       PRINT_FIELD_U(", qs_uquota={", dq.qs_uquota, qfs_ino);
+                       PRINT_FIELD_U(", ", dq.qs_uquota, qfs_nblks);
+                       PRINT_FIELD_U(", ", dq.qs_uquota, qfs_nextents);
+                       PRINT_FIELD_U("}, qs_gquota={", dq.qs_gquota, qfs_ino);
+                       PRINT_FIELD_U(", ", dq.qs_gquota, qfs_nblks);
+                       PRINT_FIELD_U(", ", dq.qs_gquota, qfs_nextents);
+                       PRINT_FIELD_U("}, qs_pquota={", dq.qs_pquota, qfs_ino);
+                       PRINT_FIELD_U(", ", dq.qs_pquota, qfs_nblks);
+                       PRINT_FIELD_U(", ", dq.qs_pquota, qfs_nextents);
+                       PRINT_FIELD_D("}, ", dq, qs_btimelimit);
+                       PRINT_FIELD_D(", ", dq, qs_itimelimit);
+                       PRINT_FIELD_D(", ", dq, qs_rtbtimelimit);
+                       PRINT_FIELD_U(", ", dq, qs_bwarnlimit);
+                       PRINT_FIELD_U(", ", dq, qs_iwarnlimit);
+               } else {
+                       tprints(", ...");
                }
-               tprints("qs_flags=");
-               printflags(xfs_quota_flags,
-                          dq.qs_flags, "XFS_QUOTA_???");
-               tprintf(", qs_incoredqs=%u, ", dq.qs_incoredqs);
-               tprints("qs_uquota={");
-               tprintf("qfs_ino=%" PRIu64 ", ", dq.qs_uquota.qfs_ino);
-               tprintf("qfs_nblks=%" PRIu64 ", ", dq.qs_uquota.qfs_nblks);
-               tprintf("qfs_nextents=%u}, ", dq.qs_uquota.qfs_nextents);
-               tprints("qs_gquota={");
-               tprintf("qfs_ino=%" PRIu64 ", ", dq.qs_gquota.qfs_ino);
-               tprintf("qfs_nblks=%" PRIu64 ", ", dq.qs_gquota.qfs_nblks);
-               tprintf("qfs_nextents=%u}, ", dq.qs_gquota.qfs_nextents);
-               tprints("qs_pquota={");
-               tprintf("qfs_ino=%" PRIu64 ", ", dq.qs_pquota.qfs_ino);
-               tprintf("qfs_nblks=%" PRIu64 ", ", dq.qs_pquota.qfs_nblks);
-               tprintf("qfs_nextents=%u}, ", dq.qs_pquota.qfs_nextents);
-               tprintf("qs_btimelimit=%d, ", dq.qs_btimelimit);
-               tprintf("qs_itimelimit=%d, ", dq.qs_itimelimit);
-               tprintf("qs_rtbtimelimit=%d, ", dq.qs_rtbtimelimit);
-               tprintf("qs_bwarnlimit=%u, ", dq.qs_bwarnlimit);
-               tprintf("qs_iwarnlimit=%u}", dq.qs_iwarnlimit);
+               tprints("}");
                break;
        }
        case Q_XQUOTAON: