@@ -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+
120121int 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/*
442443void 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- /*
451447int 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
465462int 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+
522520FILE * 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