From: Dmitry V. Levin Date: Sun, 24 Apr 2016 23:54:52 +0000 (+0000) Subject: statfs: decode f_flags field of struct statfs X-Git-Tag: v4.12~294 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b4a478dbfab2e0bb4ddcd0c600d59efaa7519e07;p=strace statfs: decode f_flags field of struct statfs * xlat/statfs_flags.in: New file. * statfs.c: Include "xlat/statfs_flags.h". (printstatfs) [_STATFS_F_FLAGS]: Print statbuf.f_flags as flags. (printstatfs64) [_STATFS_F_FLAGS]: Likewise. (printcompat_statfs64): Likewise. * tests/statfs.expected: Update. --- diff --git a/statfs.c b/statfs.c index 882ee9c1..706e0990 100644 --- a/statfs.c +++ b/statfs.c @@ -36,6 +36,7 @@ # include #endif #include "xlat/fsmagic.h" +#include "xlat/statfs_flags.h" static const char * sprintfstype(const unsigned int magic) @@ -72,7 +73,8 @@ printstatfs(struct tcb *tcp, const long addr) tprintf(", f_frsize=%lu", (unsigned long)statbuf.f_frsize); #endif #ifdef _STATFS_F_FLAGS - tprintf(", f_flags=%lu", (unsigned long)statbuf.f_flags); + tprints(", f_flags="); + printflags(statfs_flags, statbuf.f_flags, "ST_???"); #endif tprints("}"); } @@ -122,7 +124,8 @@ printstatfs64(struct tcb *tcp, long addr) tprintf(", f_frsize=%llu", (unsigned long long)statbuf.f_frsize); #endif #ifdef _STATFS_F_FLAGS - tprintf(", f_flags=%llu", (unsigned long long)statbuf.f_flags); + tprints(", f_flags="); + printflags(statfs_flags, statbuf.f_flags, "ST_???"); #endif tprints("}"); } @@ -169,7 +172,9 @@ printcompat_statfs64(struct tcb *tcp, const long addr) statbuf.f_fsid.__val[0], statbuf.f_fsid.__val[1]); tprintf(", f_namelen=%lu", (unsigned long)statbuf.f_namelen); tprintf(", f_frsize=%lu", (unsigned long)statbuf.f_frsize); - tprintf(", f_flags=%lu}", (unsigned long)statbuf.f_frsize); + tprints(", f_flags="); + printflags(statfs_flags, statbuf.f_flags, "ST_???"); + tprints("}"); } static int diff --git a/tests/statfs.expected b/tests/statfs.expected index f39013b8..9decc1ab 100644 --- a/tests/statfs.expected +++ b/tests/statfs.expected @@ -1 +1 @@ -statfs(64)?\("/proc/self/status"(, [1-9][0-9]*)?, \{f_type=PROC_SUPER_MAGIC, f_bsize=[1-9][0-9]*, f_blocks=[0-9]+, f_bfree=[0-9]+, f_bavail=[0-9]+, f_files=[0-9]+, f_ffree=[0-9]+, f_fsid=\{[0-9]+, [0-9]+\}, f_namelen=[1-9][0-9]*(, f_frsize=[0-9]+)?(, f_flags=[0-9]+)?\}\) += 0 +statfs(64)?\("/proc/self/status"(, [1-9][0-9]*)?, \{f_type=PROC_SUPER_MAGIC, f_bsize=[1-9][0-9]*, f_blocks=[0-9]+, f_bfree=[0-9]+, f_bavail=[0-9]+, f_files=[0-9]+, f_ffree=[0-9]+, f_fsid=\{[0-9]+, [0-9]+\}, f_namelen=[1-9][0-9]*(, f_frsize=[0-9]+)?(, f_flags=(0|ST_[A-Z]+(\|ST_[A-Z]+)*))?\}\) += 0 diff --git a/xlat/statfs_flags.in b/xlat/statfs_flags.in new file mode 100644 index 00000000..2b427c3d --- /dev/null +++ b/xlat/statfs_flags.in @@ -0,0 +1,10 @@ +ST_RDONLY 0x0001 +ST_NOSUID 0x0002 +ST_NODEV 0x0004 +ST_NOEXEC 0x0008 +ST_SYNCHRONOUS 0x0010 +ST_VALID 0x0020 +ST_MANDLOCK 0x0040 +ST_NOATIME 0x0400 +ST_NODIRATIME 0x0800 +ST_RELATIME 0x1000