Loading ifs/include/preload/passthrough.hpp +2 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,8 @@ extern void* libc_fgetc; extern void* libc_fgets; extern void* libc_ungetc; extern void* libc_fseek; extern void* libc_mkdir; extern void* libc_mkdirat; extern void* libc_unlink; Loading ifs/src/preload/intcp_functions.cpp +16 −0 Original line number Diff line number Diff line Loading @@ -479,6 +479,22 @@ int ungetc(int c, FILE *stream) { return LIBC_FUNC(ungetc, c, stream); } int fseek(FILE *stream, long offset, int whence) { init_passthrough_if_needed(); if(CTX->initialized() && (stream != nullptr)) { auto fd = file_to_fd(stream); if(CTX->file_map()->exist(fd)) { CTX->log()->trace("{}() called [fd: {}, offset: {}, whence: {}"); if(adafs_lseek(fd, offset, whence) == -1) { return -1; } else { return 0; } } } return LIBC_FUNC(fseek, stream, offset, whence); } /****** FILE OPS ******/ #undef creat Loading ifs/src/preload/passthrough.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,8 @@ void* libc_fgetc; void* libc_fgets; void* libc_ungetc; void* libc_fseek; void* libc_mkdir; void* libc_mkdirat; void* libc_unlink; Loading Loading @@ -152,6 +154,8 @@ void init_passthrough_() { libc_fgets = dlsym(libc, "fgets"); libc_ungetc = dlsym(libc, "ungetc"); libc_fseek = dlsym(libc, "fseek"); libc_mkdir = dlsym(libc, "mkdir"); libc_mkdirat = dlsym(libc, "mkdirat"); Loading Loading
ifs/include/preload/passthrough.hpp +2 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,8 @@ extern void* libc_fgetc; extern void* libc_fgets; extern void* libc_ungetc; extern void* libc_fseek; extern void* libc_mkdir; extern void* libc_mkdirat; extern void* libc_unlink; Loading
ifs/src/preload/intcp_functions.cpp +16 −0 Original line number Diff line number Diff line Loading @@ -479,6 +479,22 @@ int ungetc(int c, FILE *stream) { return LIBC_FUNC(ungetc, c, stream); } int fseek(FILE *stream, long offset, int whence) { init_passthrough_if_needed(); if(CTX->initialized() && (stream != nullptr)) { auto fd = file_to_fd(stream); if(CTX->file_map()->exist(fd)) { CTX->log()->trace("{}() called [fd: {}, offset: {}, whence: {}"); if(adafs_lseek(fd, offset, whence) == -1) { return -1; } else { return 0; } } } return LIBC_FUNC(fseek, stream, offset, whence); } /****** FILE OPS ******/ #undef creat Loading
ifs/src/preload/passthrough.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,8 @@ void* libc_fgetc; void* libc_fgets; void* libc_ungetc; void* libc_fseek; void* libc_mkdir; void* libc_mkdirat; void* libc_unlink; Loading Loading @@ -152,6 +154,8 @@ void init_passthrough_() { libc_fgets = dlsym(libc, "fgets"); libc_ungetc = dlsym(libc, "ungetc"); libc_fseek = dlsym(libc, "fseek"); libc_mkdir = dlsym(libc, "mkdir"); libc_mkdirat = dlsym(libc, "mkdirat"); Loading