file.c: move link, linkat, unlinkat, and symlinkat parsers to a separate file
* link.c: New file. * Makefile.am (strace_SOURCES): Add it. * file.c: Move sys_link, sys_linkat, sys_unlinkat, sys_symlinkat, and related code to link.c.
This commit is contained in:
parent
46245b3541
commit
231b19fca0
@ -40,6 +40,7 @@ strace_SOURCES = \
|
||||
kexec.c \
|
||||
keyctl.c \
|
||||
ldt.c \
|
||||
link.c \
|
||||
loop.c \
|
||||
mem.c \
|
||||
mknod.c \
|
||||
|
68
file.c
68
file.c
@ -1102,24 +1102,6 @@ sys_stat64(struct tcb *tcp)
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef AT_SYMLINK_NOFOLLOW
|
||||
# define AT_SYMLINK_NOFOLLOW 0x100
|
||||
#endif
|
||||
#ifndef AT_REMOVEDIR
|
||||
# define AT_REMOVEDIR 0x200
|
||||
#endif
|
||||
#ifndef AT_SYMLINK_FOLLOW
|
||||
# define AT_SYMLINK_FOLLOW 0x400
|
||||
#endif
|
||||
#ifndef AT_NO_AUTOMOUNT
|
||||
# define AT_NO_AUTOMOUNT 0x800
|
||||
#endif
|
||||
#ifndef AT_EMPTY_PATH
|
||||
# define AT_EMPTY_PATH 0x1000
|
||||
#endif
|
||||
|
||||
#include "xlat/at_flags.h"
|
||||
|
||||
int
|
||||
sys_newfstatat(struct tcb *tcp)
|
||||
{
|
||||
@ -1269,53 +1251,3 @@ sys_chdir(struct tcb *tcp)
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
sys_link(struct tcb *tcp)
|
||||
{
|
||||
if (entering(tcp)) {
|
||||
printpath(tcp, tcp->u_arg[0]);
|
||||
tprints(", ");
|
||||
printpath(tcp, tcp->u_arg[1]);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
sys_linkat(struct tcb *tcp)
|
||||
{
|
||||
if (entering(tcp)) {
|
||||
print_dirfd(tcp, tcp->u_arg[0]);
|
||||
printpath(tcp, tcp->u_arg[1]);
|
||||
tprints(", ");
|
||||
print_dirfd(tcp, tcp->u_arg[2]);
|
||||
printpath(tcp, tcp->u_arg[3]);
|
||||
tprints(", ");
|
||||
printflags(at_flags, tcp->u_arg[4], "AT_???");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
sys_unlinkat(struct tcb *tcp)
|
||||
{
|
||||
if (entering(tcp)) {
|
||||
print_dirfd(tcp, tcp->u_arg[0]);
|
||||
printpath(tcp, tcp->u_arg[1]);
|
||||
tprints(", ");
|
||||
printflags(at_flags, tcp->u_arg[2], "AT_???");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
sys_symlinkat(struct tcb *tcp)
|
||||
{
|
||||
if (entering(tcp)) {
|
||||
printpath(tcp, tcp->u_arg[0]);
|
||||
tprints(", ");
|
||||
print_dirfd(tcp, tcp->u_arg[1]);
|
||||
printpath(tcp, tcp->u_arg[2]);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
71
link.c
Normal file
71
link.c
Normal file
@ -0,0 +1,71 @@
|
||||
#include "defs.h"
|
||||
|
||||
#include <fcntl.h>
|
||||
|
||||
#ifndef AT_SYMLINK_NOFOLLOW
|
||||
# define AT_SYMLINK_NOFOLLOW 0x100
|
||||
#endif
|
||||
#ifndef AT_REMOVEDIR
|
||||
# define AT_REMOVEDIR 0x200
|
||||
#endif
|
||||
#ifndef AT_SYMLINK_FOLLOW
|
||||
# define AT_SYMLINK_FOLLOW 0x400
|
||||
#endif
|
||||
#ifndef AT_NO_AUTOMOUNT
|
||||
# define AT_NO_AUTOMOUNT 0x800
|
||||
#endif
|
||||
#ifndef AT_EMPTY_PATH
|
||||
# define AT_EMPTY_PATH 0x1000
|
||||
#endif
|
||||
|
||||
#include "xlat/at_flags.h"
|
||||
|
||||
int
|
||||
sys_link(struct tcb *tcp)
|
||||
{
|
||||
if (entering(tcp)) {
|
||||
printpath(tcp, tcp->u_arg[0]);
|
||||
tprints(", ");
|
||||
printpath(tcp, tcp->u_arg[1]);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
sys_linkat(struct tcb *tcp)
|
||||
{
|
||||
if (entering(tcp)) {
|
||||
print_dirfd(tcp, tcp->u_arg[0]);
|
||||
printpath(tcp, tcp->u_arg[1]);
|
||||
tprints(", ");
|
||||
print_dirfd(tcp, tcp->u_arg[2]);
|
||||
printpath(tcp, tcp->u_arg[3]);
|
||||
tprints(", ");
|
||||
printflags(at_flags, tcp->u_arg[4], "AT_???");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
sys_unlinkat(struct tcb *tcp)
|
||||
{
|
||||
if (entering(tcp)) {
|
||||
print_dirfd(tcp, tcp->u_arg[0]);
|
||||
printpath(tcp, tcp->u_arg[1]);
|
||||
tprints(", ");
|
||||
printflags(at_flags, tcp->u_arg[2], "AT_???");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
sys_symlinkat(struct tcb *tcp)
|
||||
{
|
||||
if (entering(tcp)) {
|
||||
printpath(tcp, tcp->u_arg[0]);
|
||||
tprints(", ");
|
||||
print_dirfd(tcp, tcp->u_arg[1]);
|
||||
printpath(tcp, tcp->u_arg[2]);
|
||||
}
|
||||
return 0;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user