diff options
author | Dmitry V. Levin <ldv@altlinux.org> | 2012-03-13 23:16:37 +0000 |
---|---|---|
committer | Dmitry V. Levin <ldv@altlinux.org> | 2012-03-13 23:16:37 +0000 |
commit | 371e1531469425b565d059b0ea402e7609f4f246 (patch) | |
tree | 487a985e8286bfda3abde6c276b31a162a7b6914 /file.c | |
parent | 297632be5cfba5d51fc027e518ad91cb40e71d0b (diff) | |
download | strace-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.c | 15 |
1 files changed, 14 insertions, 1 deletions
@@ -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; } |