/*
* Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2017 The strace developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
#include "xlat/statfs_flags.h"
#define PRINT_NUM(arg) \
- if (sizeof(b->arg) == sizeof(int)) \
- printf(", %s=%u", #arg, (unsigned int) b->arg); \
- else if (sizeof(b->arg) == sizeof(long)) \
- printf(", %s=%lu", #arg, (unsigned long) b->arg); \
- else \
- printf(", %s=%llu", #arg, (unsigned long long) b->arg)
+ do { \
+ if (sizeof(b->arg) == sizeof(int)) \
+ printf(", %s=%u", #arg, \
+ (unsigned int) b->arg); \
+ else if (sizeof(b->arg) == sizeof(long)) \
+ printf(", %s=%lu", #arg, \
+ (unsigned long) b->arg); \
+ else \
+ printf(", %s=%llu", #arg, \
+ (unsigned long long) b->arg); \
+ } while (0)
static void
print_statfs_type(const char *const prefix, const unsigned int magic)
{
int fd = open(sample, O_RDONLY);
if (fd < 0)
- perror_msg_and_fail("open: %s", sample);
+ perror_msg_and_skip("open: %s", sample);
- STRUCT_STATFS *const b = tail_alloc(sizeof(*b));
+ TAIL_ALLOC_OBJECT_CONST_PTR(STRUCT_STATFS, b);
long rc = SYSCALL_INVOKE(sample, fd, b, sizeof(*b));
if (rc)
perror_msg_and_skip(SYSCALL_NAME);
PRINT_NUM(f_files);
PRINT_NUM(f_ffree);
#ifdef PRINT_F_FSID
- printf(", f_fsid={%u, %u}", b->PRINT_F_FSID[0], b->PRINT_F_FSID[1]);
+ printf(", f_fsid={val=[%u, %u]}",
+ (unsigned) b->PRINT_F_FSID[0], (unsigned) b->PRINT_F_FSID[1]);
#endif
PRINT_NUM(f_namelen);
#ifdef PRINT_F_FRSIZE
print_statfs(".", NULL);
long rc = SYSCALL_INVOKE("", -1, 0, sizeof(STRUCT_STATFS));
+ const char *errstr = sprintrc(rc);
PRINT_SYSCALL_HEADER("", -1, sizeof(STRUCT_STATFS));
- printf("NULL) = %ld %s (%m)\n", rc, errno2name());
+ printf("NULL) = %s\n", errstr);
#ifdef CHECK_ODD_SIZE
- const unsigned long addr = (unsigned long) 0xfacefeeddeadbeef;
+ const unsigned long addr = (unsigned long) 0xfacefeeddeadbeefULL;
rc = SYSCALL_INVOKE("", -1, addr, sizeof(STRUCT_STATFS) + 1);
+ errstr = sprintrc(rc);
PRINT_SYSCALL_HEADER("", -1, sizeof(STRUCT_STATFS) + 1);
- printf("%#lx) = %ld %s (%m)\n", addr, rc, errno2name());
+ printf("%#lx) = %s\n", addr, errstr);
#endif
puts("+++ exited with 0 +++");