aboutsummaryrefslogtreecommitdiff
path: root/file.c
diff options
context:
space:
mode:
authorDmitry V. Levin <ldv@altlinux.org>2012-03-13 23:16:37 +0000
committerDmitry V. Levin <ldv@altlinux.org>2012-03-13 23:16:37 +0000
commit371e1531469425b565d059b0ea402e7609f4f246 (patch)
tree487a985e8286bfda3abde6c276b31a162a7b6914 /file.c
parent297632be5cfba5d51fc027e518ad91cb40e71d0b (diff)
downloadstrace-371e1531469425b565d059b0ea402e7609f4f246.tar.gz
Fix linkat flags decoding
* file.c (linkat_flags): New xlat structure. (sys_linkat): Decode flags using linkat_flags.
Diffstat (limited to 'file.c')
-rw-r--r--file.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/file.c b/file.c
index e90a90bbe..1c830f6d8 100644
--- a/file.c
+++ b/file.c
@@ -1853,6 +1853,19 @@ sys_link(struct tcb *tcp)
return 0;
}
+#ifndef AT_SYMLINK_FOLLOW
+# define AT_SYMLINK_FOLLOW 0x400
+#endif
+#ifndef AT_EMPTY_PATH
+# define AT_EMPTY_PATH 0x1000
+#endif
+
+static const struct xlat linkat_flags[] = {
+ { AT_SYMLINK_FOLLOW, "AT_SYMLINK_FOLLOW" },
+ { AT_EMPTY_PATH, "AT_EMPTY_PATH" },
+ { 0, NULL }
+};
+
int
sys_linkat(struct tcb *tcp)
{
@@ -1863,7 +1876,7 @@ sys_linkat(struct tcb *tcp)
print_dirfd(tcp, tcp->u_arg[2]);
printpath(tcp, tcp->u_arg[3]);
tprints(", ");
- printfd(tcp, tcp->u_arg[4]);
+ printflags(linkat_flags, tcp->u_arg[4], "AT_???");
}
return 0;
}