return xlat;
}
+static const char *
+sprint_makedev(unsigned long long val)
+{
+ static char devid[256];
+ int ret;
+
+ if (verbose_xlat)
+ ret = snprintf(devid, sizeof(devid),
+ "%#llx /* makedev(%#x, %#x) */",
+ val, major(val), minor(val));
+ else
+ ret = snprintf(devid, sizeof(devid),
+ "makedev(%#x, %#x)", major(val), minor(val));
+
+ if (ret < 0)
+ perror_msg_and_fail("sprint_makedev(%llx)", val);
+ if ((unsigned) ret >= sizeof(devid))
+ error_msg_and_fail("sprint_makedev(%llx): buffer "
+ "overflow", val);
+ return devid;
+}
+
#define ioc(x_) sprint_xlat_(x_, #x_)
void
prfl_btrfs(btrfs_space_info_flags, args->profiles,
"BTRFS_BLOCK_GROUP_???");
print_uint64(", usage=", args->usage);
- printf(", devid=makedev(%#x, %#x)",
- major(args->devid), minor(args->devid));
+ printf(", devid=%s", sprint_makedev(args->devid));
print_uint64(", pstart=", args->pstart);
print_uint64(", pend=", args->pend);
print_uint64(", vstart=", args->vstart);
ioctl(-1, BTRFS_IOC_SCRUB_CANCEL, NULL);
printf("ioctl(-1, %s) = -1 EBADF (%m)\n", ioc(BTRFS_IOC_SCRUB_CANCEL));
- printf("ioctl(-1, %s, {devid=makedev(%#x, %#x)",
- ioc(BTRFS_IOC_SCRUB), major(args.devid), minor(args.devid));
+ printf("ioctl(-1, %s, {devid=%s",
+ ioc(BTRFS_IOC_SCRUB), sprint_makedev(args.devid));
print_uint64(", start=", args.start);
print_uint64(", end=", args.end);
printf(", flags=");
ioc(BTRFS_IOC_SCRUB_PROGRESS));
ioctl(-1, BTRFS_IOC_SCRUB_PROGRESS, &args);
- printf("ioctl(-1, %s, {devid=makedev(%#x, %#x)}) = -1 EBADF (%m)\n",
+ printf("ioctl(-1, %s, {devid=%s}) = -1 EBADF (%m)\n",
ioc(BTRFS_IOC_SCRUB_PROGRESS),
- major(args.devid), minor(args.devid));
+ sprint_makedev(args.devid));
}
/*
ioctl(-1, BTRFS_IOC_DEV_INFO, &args);
printf("ioctl(-1, %s, "
- "{devid=makedev(%#x, %#x), uuid=%s}) = -1 EBADF (%m)\n",
- ioc(BTRFS_IOC_DEV_INFO), major(args.devid), minor(args.devid),
+ "{devid=%s, uuid=%s}) = -1 EBADF (%m)\n",
+ ioc(BTRFS_IOC_DEV_INFO), sprint_makedev(args.devid),
uuid_reference_string);
}
.nr_items = 5,
.flags = max_flags_plus_one(0),
};
-
ioctl(-1, BTRFS_IOC_GET_DEV_STATS, NULL);
printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n", ioc(BTRFS_IOC_GET_DEV_STATS));
- printf("ioctl(-1, %s, {devid=makedev(%#x, %#x)"
+ printf("ioctl(-1, %s, {devid=%s"
", nr_items=%" PRI__u64 ", flags=",
ioc(BTRFS_IOC_GET_DEV_STATS),
- major(args.devid), minor(args.devid), args.nr_items);
+ sprint_makedev(args.devid), args.nr_items);
prfl_btrfs(btrfs_dev_stats_flags, args.flags,
"BTRFS_DEV_STATS_???");
ioctl(-1, BTRFS_IOC_GET_DEV_STATS, &args);
if (write_ok) {
unsigned int i;
args.flags = BTRFS_DEV_STATS_RESET;
- printf("ioctl(%d, %s, {devid=makedev(%#x, %#x)"
+ printf("ioctl(%d, %s, {devid=%s"
", nr_items=%" PRI__u64 ", flags=",
btrfs_test_dir_fd, ioc(BTRFS_IOC_GET_DEV_STATS),
- major(args.devid), minor(args.devid), args.nr_items);
+ sprint_makedev(args.devid), args.nr_items);
prfl_btrfs(btrfs_dev_stats_flags, args.flags,
"BTRFS_DEV_STATS_???");
ioctl(btrfs_test_dir_fd, BTRFS_IOC_GET_DEV_STATS, &args);
saved_errno = errno;
printf("ioctl(-1, %s, "
"{cmd=%sBTRFS_IOCTL_DEV_REPLACE_CMD_START%s"
- ", start={srcdevid=makedev(%#x, %#x)"
+ ", start={srcdevid=%s"
", cont_reading_from_srcdev_mode=",
ioc(BTRFS_IOC_DEV_REPLACE),
verbose_xlat ? "0 /* " : "", verbose_xlat ? " */" : "",
- major(args.start.srcdevid), minor(args.start.srcdevid));
+ sprint_makedev(args.start.srcdevid)
+ );
prxval_btrfs(btrfs_cont_reading_from_srcdev_mode,
args.start.cont_reading_from_srcdev_mode,
"BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV"
# define IS_STATX 0
# endif
+#if !XLAT_RAW /* Fixes -Wunused warning */
static void
print_ftype(const unsigned int mode)
{
{
printf("%#o", mode & ~S_IFMT);
}
+#endif
+
+static void
+print_st_mode(const unsigned int mode)
+{
+#if XLAT_RAW
+ printf("%#o", mode);
+#elif XLAT_VERBOSE
+ printf("%#o /* ", mode);
+ print_ftype(mode);
+ printf("|");
+ print_perms(mode);
+ printf(" */");
+#else
+ print_ftype(mode);
+ printf("|");
+ print_perms(mode);
+#endif
+}
# if !IS_STATX
+static const char *
+sprint_makedev(const unsigned long long val)
+{
+ static char devid[256];
+ int ret;
+
+#if XLAT_RAW
+ ret = snprintf(devid, sizeof(devid),
+ "%#llx", val);
+#elif XLAT_VERBOSE
+ ret = snprintf(devid, sizeof(devid),
+ "%#llx /* makedev(%#x, %#x) */",
+ val, major(val), minor(val));
+#else /* XLAT_ABBREV */
+ ret = snprintf(devid, sizeof(devid),
+ "makedev(%#x, %#x)",
+ major(val), minor(val));
+#endif
+ if (ret < 0)
+ perror_msg_and_fail("sprint_makedev(%llx)", val);
+ if ((unsigned) ret >= sizeof(devid))
+ error_msg_and_fail("sprint_makedev(%llx): buffer "
+ "overflow", val);
+ return devid;
+}
+
+
static void
print_stat(const STRUCT_STAT *st)
{
- printf("{st_dev=makedev(%#x, %#x)",
- (unsigned int) major(zero_extend_signed_to_ull(st->st_dev)),
- (unsigned int) minor(zero_extend_signed_to_ull(st->st_dev)));
+ unsigned long long dev, rdev;
+
+ dev = zero_extend_signed_to_ull(st->st_dev);
+ rdev = zero_extend_signed_to_ull(st->st_rdev);
+ printf("{st_dev=%s", sprint_makedev(dev));
printf(", st_ino=%llu", zero_extend_signed_to_ull(st->st_ino));
printf(", st_mode=");
- print_ftype(st->st_mode);
- printf("|");
- print_perms(st->st_mode);
+ print_st_mode(st->st_mode);
printf(", st_nlink=%llu", zero_extend_signed_to_ull(st->st_nlink));
printf(", st_uid=%llu", zero_extend_signed_to_ull(st->st_uid));
printf(", st_gid=%llu", zero_extend_signed_to_ull(st->st_gid));
switch (st->st_mode & S_IFMT) {
case S_IFCHR: case S_IFBLK:
- printf(", st_rdev=makedev(%#x, %#x)",
- (unsigned int) major(zero_extend_signed_to_ull(st->st_rdev)),
- (unsigned int) minor(zero_extend_signed_to_ull(st->st_rdev)));
+ printf(", st_rdev=%s", sprint_makedev(rdev));
break;
default:
printf(", st_size=%llu", zero_extend_signed_to_ull(st->st_size));
PRINT_FIELD_U32_UID(stx_gid);
printf(", stx_mode=");
- print_ftype(st->stx_mode);
- printf("|");
- print_perms(st->stx_mode);
+ print_st_mode(st->stx_mode);
PRINT_FIELD_U(", ", *st, stx_ino);
PRINT_FIELD_U(", ", *st, stx_size);