]> granicus.if.org Git - strace/blobdiff - btrfs.c
travis: add build environment information to the travis log
[strace] / btrfs.c
diff --git a/btrfs.c b/btrfs.c
index 01340a4ad3da11db7179a53ccfddd7b4492697c8..8bffba8b6604072dcb4b79a0a9e3249607d5465d 100644 (file)
--- a/btrfs.c
+++ b/btrfs.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Jeff Mahoney <jeffm@suse.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -51,6 +52,7 @@ typedef struct btrfs_ioctl_vol_args_v2
 
 #ifdef HAVE_LINUX_BTRFS_H
 
+#include "print_fields.h"
 #include <linux/fs.h>
 
 /*
@@ -180,7 +182,7 @@ print_u64(const char *name, uint64_t value)
 {
        tprintf(", %s=%" PRIu64, name, value);
        if (value == UINT64_MAX)
-               tprints(" /* UINT64_MAX */");
+               tprints_comment("UINT64_MAX");
 }
 
 #define print_member_u64(obj, name) print_u64(#name, obj->name)
@@ -204,7 +206,7 @@ btrfs_print_balance_args(const char *name, const struct btrfs_balance_args *bba)
 }
 
 static void
-btrfs_print_balance(struct tcb *const tcp, const kernel_ureg_t arg, bool out)
+btrfs_print_balance(struct tcb *const tcp, const kernel_ulong_t arg, bool out)
 {
        struct btrfs_ioctl_balance_args balance_args;
 
@@ -261,19 +263,15 @@ btrfs_print_qgroup_limit(const struct btrfs_qgroup_limit *lim)
 static void
 btrfs_print_key_type(uint32_t type)
 {
-       const char *str = xlookup(btrfs_key_types, type);
        tprintf("%u", type);
-       if (str)
-               tprintf(" /* %s */", str);
+       tprints_comment(xlookup(btrfs_key_types, type));
 }
 
 static void
 btrfs_print_objectid(uint64_t objectid)
 {
-       const char *str = xlookup(btrfs_tree_objectids, objectid);
        tprintf("%" PRIu64, objectid);
-       if (str)
-               tprintf(" /* %s */", str);
+       tprints_comment(xlookup(btrfs_tree_objectids, objectid));
 }
 
 static void
@@ -370,13 +368,13 @@ btrfs_print_ino_path_container(struct tcb *tcp,
 static bool
 print_uint64(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
 {
-       tprintf("%" PRIu64, * (uint64_t *) elem_buf);
+       tprintf("%" PRIu64, *(uint64_t *) elem_buf);
 
        return true;
 }
 
 static void
-btrfs_print_qgroup_inherit(struct tcb *const tcp, const kernel_ureg_t qgi_addr)
+btrfs_print_qgroup_inherit(struct tcb *const tcp, const kernel_ulong_t qgi_addr)
 {
        struct btrfs_qgroup_inherit inherit;
 
@@ -412,7 +410,7 @@ print_key_value_internal(struct tcb *tcp, const char *name, uint64_t value)
        if (value) {
                tprintf(", %s=%" PRIu64, name, value);
                if (value == UINT64_MAX)
-                       tprints(" /* UINT64_MAX */");
+                       tprints_comment("UINT64_MAX");
        }
 }
 #define print_key_value(tcp, key, name)                                        \
@@ -491,7 +489,7 @@ static bool
 print_objectid_callback(struct tcb *tcp, void *elem_buf,
                        size_t elem_size, void *data)
 {
-       btrfs_print_objectid(* (uint64_t *) elem_buf);
+       btrfs_print_objectid(*(uint64_t *) elem_buf);
 
        return true;
 }
@@ -513,7 +511,7 @@ print_btrfs_ioctl_space_info(struct tcb *tcp, void *elem_buf,
 
 MPERS_PRINTER_DECL(int, btrfs_ioctl,
                   struct tcb *const tcp, const unsigned int code,
-                  const kernel_ureg_t arg)
+                  const kernel_ulong_t arg)
 {
        switch (code) {
        /* Take no arguments; command only. */
@@ -610,7 +608,7 @@ MPERS_PRINTER_DECL(int, btrfs_ioctl,
 
                tprintf("%" PRIu64, (uint64_t) args.len);
                if (args.len == UINT64_MAX)
-                       tprints(" /* UINT64_MAX */");
+                       tprints_comment("UINT64_MAX");
 
                tprints(", flags=");
                printflags64(btrfs_defrag_flags, args.flags,
@@ -649,10 +647,9 @@ MPERS_PRINTER_DECL(int, btrfs_ioctl,
                if (valid)
                        tprintf("uuid=%s, ", uuid);
                tprintf("bytes_used=%" PRI__u64
-                       ", total_bytes=%" PRI__u64 ", path=",
+                       ", total_bytes=%" PRI__u64,
                        args.bytes_used, args.total_bytes);
-               print_quoted_string((const char *)args.path, sizeof(args.path),
-                                   QUOTE_0_TERMINATED);
+               PRINT_FIELD_CSTRING(", ", args, path);
                tprints("}");
                break;
        }
@@ -682,12 +679,12 @@ MPERS_PRINTER_DECL(int, btrfs_ioctl,
                                   (uint64_t) args.start.srcdevid,
                                   (uint64_t) args.start.cont_reading_from_srcdev_mode);
 
-                               str = (const char*) args.start.srcdev_name;
+                               str = (const char *) args.start.srcdev_name;
                                print_quoted_string(str,
                                                sizeof(args.start.srcdev_name),
                                                QUOTE_0_TERMINATED);
                                tprints(", tgtdev_name=");
-                               str = (const char*) args.start.tgtdev_name;
+                               str = (const char *) args.start.tgtdev_name;
                                print_quoted_string(str,
                                                sizeof(args.start.tgtdev_name),
                                                QUOTE_0_TERMINATED);
@@ -702,35 +699,27 @@ MPERS_PRINTER_DECL(int, btrfs_ioctl,
                printxval64(btrfs_dev_replace_results, args.result,
                            "BTRFS_IOCTL_DEV_REPLACE_RESULT_???");
                if (args.cmd == BTRFS_IOCTL_DEV_REPLACE_CMD_STATUS) {
-                       char buf[sizeof("HH:MM:SS") + 1];
-                       time_t time;
                        tprints(", ");
                        printxval64(btrfs_dev_replace_state,
                                   args.status.replace_state,
                                   "BTRFS_IOCTL_DEV_REPLACE_STATE_???");
-                       tprintf(", progress_1000=%" PRIu64 " /* ",
+                       tprintf(", progress_1000=%" PRIu64,
                                (uint64_t) args.status.progress_1000);
+
                        if (args.status.progress_1000 <= 1000)
-                               tprintf("%" PRIu64 ".%.2" PRIu64 "%%",
-                                       (uint64_t) args.status.progress_1000 / 10,
-                                       (uint64_t) args.status.progress_1000 % 10);
-                       else
-                               tprints("???");
-                       tprints(" */ ,");
-
-                       time = args.status.time_started;
-                       strftime(buf, sizeof(buf), "%T",
-                                localtime(&time));
-                       tprintf("time_started=%" PRIu64" /* %s */, ",
-                               (uint64_t) args.status.time_started, buf);
-
-                       time = args.status.time_stopped;
-                       strftime(buf, sizeof(buf), "%T",
-                                localtime(&time));
-                       tprintf("time_stopped=%" PRIu64" /* %s */, ",
-                               (uint64_t) args.status.time_stopped, buf);
-
-                       tprintf("num_write_errors=%" PRIu64
+                               tprintf_comment("%u.%u%%",
+                                       (unsigned) args.status.progress_1000 / 10,
+                                       (unsigned) args.status.progress_1000 % 10);
+
+                       tprintf(", time_started=%" PRIu64,
+                               (uint64_t) args.status.time_started);
+                       tprints_comment(sprinttime(args.status.time_started));
+
+                       tprintf(", time_stopped=%" PRIu64,
+                               (uint64_t) args.status.time_stopped);
+                       tprints_comment(sprinttime(args.status.time_stopped));
+
+                       tprintf(", num_write_errors=%" PRIu64
                                ", num_uncorrectable_read_errors=%" PRIu64,
                                (uint64_t) args.status.num_write_errors,
                                (uint64_t) args.status.num_uncorrectable_read_errors);
@@ -779,14 +768,17 @@ MPERS_PRINTER_DECL(int, btrfs_ioctl,
                if (umove_or_printaddr(tcp, arg, &flarg))
                        break;
 
-               tprints("[ /* supported */ ");
+               tprints("[");
                btrfs_print_features(&flarg[0]);
+               tprints_comment("supported");
 
-               tprints(", /* safe to set */ ");
+               tprints(", ");
                btrfs_print_features(&flarg[1]);
+               tprints_comment("safe to set");
 
-               tprints(", /* safe to clear */ ");
+               tprints(", ");
                btrfs_print_features(&flarg[2]);
+               tprints_comment("safe to clear");
                tprints("]");
 
                break;
@@ -869,10 +861,8 @@ MPERS_PRINTER_DECL(int, btrfs_ioctl,
                                tprints("...");
                                break;
                        }
-                       const char *name = xlookup(btrfs_dev_stats_values, i);
-                       if (name)
-                               tprintf("/* %s */ ", name);
                        tprintf("%" PRI__u64, args.values[i]);
+                       tprints_comment(xlookup(btrfs_dev_stats_values, i));
                }
                tprints("]}");
                break;
@@ -911,9 +901,7 @@ MPERS_PRINTER_DECL(int, btrfs_ioctl,
                        tprints(", ");
                }
 
-               tprints("name=");
-               print_quoted_string(args.name, sizeof(args.name),
-                                   QUOTE_0_TERMINATED);
+               PRINT_FIELD_CSTRING("", args, name);
                tprints("}");
                break;
        }
@@ -1108,7 +1096,7 @@ MPERS_PRINTER_DECL(int, btrfs_ioctl,
                                        args.start);
                                tprintf("%" PRI__u64, args.end);
                                if (args.end == UINT64_MAX)
-                                       tprints(" /* UINT64_MAX */");
+                                       tprints_comment("UINT64_MAX");
                                tprints(", flags=");
                                printflags64(btrfs_scrub_flags, args.flags,
                                             "BTRFS_SCRUB_???");
@@ -1217,7 +1205,7 @@ MPERS_PRINTER_DECL(int, btrfs_ioctl,
                        tprints("...");
                else {
                        uint64_t record;
-                       print_array(tcp, (kernel_ureg_t) args.clone_sources,
+                       print_array(tcp, ptr_to_kulong(args.clone_sources),
                                    args.clone_sources_count,
                                    &record, sizeof(record),
                                    umoven_or_printaddr,
@@ -1289,9 +1277,7 @@ MPERS_PRINTER_DECL(int, btrfs_ioctl,
 
                tprints("{fd=");
                printfd(tcp, args.fd);
-               tprints(", name=");
-               print_quoted_string(args.name, sizeof(args.name),
-                                   QUOTE_0_TERMINATED);
+               PRINT_FIELD_CSTRING(", ", args, name);
                tprints("}");
                break;
        }
@@ -1321,11 +1307,9 @@ MPERS_PRINTER_DECL(int, btrfs_ioctl,
                                        (uint64_t) args.size);
 
                                btrfs_print_qgroup_inherit(tcp,
-                                       (kernel_ureg_t) args.qgroup_inherit);
+                                       ptr_to_kulong(args.qgroup_inherit));
                        }
-                       tprints(", name=");
-                       print_quoted_string(args.name, sizeof(args.name),
-                                           QUOTE_0_TERMINATED);
+                       PRINT_FIELD_CSTRING(", ", args, name);
                        tprints("}");
                        return 0;
                }