Skip to content

Commit 9976735

Browse files
committed
Support F_DUPFD_CLOEXEC for fcntl()
1 parent e7fae79 commit 9976735

File tree

1 file changed

+5
-7
lines changed

1 file changed

+5
-7
lines changed

lib/recorder-posix.c

+5-7
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ void* RECORDER_POSIX_DECL(mmap)(void *addr, size_t length, int prot, int flags,
117117
char** args = assemble_args_list(6, ptoa(addr), itoa(length), itoa(prot), itoa(flags), itoa(fd), itoa(offset));
118118
RECORDER_INTERCEPTOR(6, args);
119119
}
120+
120121
int RECORDER_POSIX_DECL(msync)(void *addr, size_t length, int flags) {
121122
RECORDER_INTERCEPTOR_NOIO(int, msync, (addr, length, flags));
122123
char** args = assemble_args_list(3, ptoa(addr), itoa(length), itoa(flags));
@@ -441,13 +442,8 @@ int RECORDER_POSIX_DECL(closedir)(DIR *dir) {
441442
/*
442443
void RECORDER_POSIX_DECL(rewinddir)(DIR *dir) {
443444
// TODO
444-
char log_text[TRACE_LEN];
445-
sprintf(log_text, "rewinddir (%p)", dir);
446-
RECORDER_INTERCEPTOR(rewinddir, NULL, (dir), NULL, 0, 0, log_text)
447445
448446
}
449-
*/
450-
/*
451447
int RECORDER_POSIX_DECL(__xmknod)(int ver, const char *path, mode_t mode, dev_t dev) {
452448
RECORDER_INTERCEPTOR_NOIO(int, __xmknod, (ver, path, mode, dev));
453449
char** args = assemble_args_list(4, itoa(ver), realrealpath(path), itoa(mode), itoa(dev));
@@ -459,11 +455,12 @@ int RECORDER_POSIX_DECL(__xmknodat)(int ver, int fd, const char *path, mode_t mo
459455
RECORDER_INTERCEPTOR(5, args);
460456
}
461457
*/
458+
462459
// Advanced File Operations
463460
// TODO: third argument
464461
#ifndef DISABLE_FCNTL_TRACE
465462
int RECORDER_POSIX_DECL(fcntl)(int fd, int cmd, ...) {
466-
if(cmd==F_DUPFD || cmd==F_SETFD || cmd==F_SETFL || cmd==F_SETOWN) { // arg: int
463+
if(cmd==F_DUPFD || cmd==F_DUPFD_CLOEXEC || cmd==F_SETFD || cmd==F_SETFL || cmd==F_SETOWN) { // arg: int
467464
va_list arg;
468465
va_start(arg, cmd);
469466
int val = va_arg(arg, int);
@@ -483,7 +480,7 @@ int RECORDER_POSIX_DECL(fcntl)(int fd, int cmd, ...) {
483480
RECORDER_INTERCEPTOR_NOIO(int, fcntl, (fd, cmd, lk));
484481
char** args = assemble_args_list(3, itoa(fd), itoa(cmd), itoa(lk->l_type));
485482
RECORDER_INTERCEPTOR(3, args);
486-
} else { // assume arg: void
483+
} else { // assume arg: void, cmd==F_GETOWN_EX || cmd==F_SETOWN_EX ||cmd==F_GETSIG || cmd==F_SETSIG)
487484
RECORDER_INTERCEPTOR_NOIO(int, fcntl, (fd, cmd));
488485
char** args = assemble_args_list(2, itoa(fd), itoa(cmd));
489486
RECORDER_INTERCEPTOR(2, args);
@@ -519,6 +516,7 @@ mode_t RECORDER_POSIX_DECL(umask)(mode_t mask) {
519516
char** args = assemble_args_list(1, itoa(mask));
520517
RECORDER_INTERCEPTOR(1, args);
521518
}
519+
522520
FILE* RECORDER_POSIX_DECL(fdopen)(int fd, const char *mode) {
523521
RECORDER_INTERCEPTOR_NOIO(FILE*, fdopen, (fd, mode));
524522
record->res = stream2fd(res);

0 commit comments

Comments
 (0)