Loading ifs/include/preload/passthrough.hpp +3 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,9 @@ extern void* libc_ferror; extern void* libc_fileno; extern void* libc_fflush; extern void* libc_putc; extern void* libc_fputc; extern void* libc_mkdir; extern void* libc_mkdirat; extern void* libc_unlink; Loading ifs/src/preload/intcp_functions.cpp +26 −1 Original line number Diff line number Diff line Loading @@ -275,7 +275,32 @@ int fflush(FILE *stream) { } } return (reinterpret_cast<decltype(&fflush)>(libc_fflush))(stream); } int putc(int c, FILE *stream) { init_passthrough_if_needed(); if(CTX->initialized() && (stream != nullptr)) { auto fd = file_to_fd(stream); if(CTX->file_map()->exist(fd)) { CTX->log()->error("{}() NOT SUPPORTED", __func__); errno = ENOTSUP; return EOF; } } return (reinterpret_cast<decltype(&putc)>(libc_putc))(c, stream); } int fputc(int c, FILE *stream) { init_passthrough_if_needed(); if(CTX->initialized() && (stream != nullptr)) { auto fd = file_to_fd(stream); if(CTX->file_map()->exist(fd)) { CTX->log()->error("{}() NOT SUPPORTED", __func__); errno = ENOTSUP; return EOF; } } return (reinterpret_cast<decltype(&fputc)>(libc_fputc))(c, stream); } /****** FILE OPS ******/ Loading ifs/src/preload/passthrough.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,9 @@ void* libc_ferror; void* libc_fileno; void* libc_fflush; void* libc_putc; void* libc_fputc; void* libc_mkdir; void* libc_mkdirat; void* libc_unlink; Loading Loading @@ -110,6 +113,9 @@ void init_passthrough_() { libc_fileno = dlsym(libc, "fileno"); libc_fflush = dlsym(libc, "fflush"); libc_putc = dlsym(libc, "putc"); libc_fputc = dlsym(libc, "fputc"); libc_mkdir = dlsym(libc, "mkdir"); libc_mkdirat = dlsym(libc, "mkdirat"); Loading Loading
ifs/include/preload/passthrough.hpp +3 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,9 @@ extern void* libc_ferror; extern void* libc_fileno; extern void* libc_fflush; extern void* libc_putc; extern void* libc_fputc; extern void* libc_mkdir; extern void* libc_mkdirat; extern void* libc_unlink; Loading
ifs/src/preload/intcp_functions.cpp +26 −1 Original line number Diff line number Diff line Loading @@ -275,7 +275,32 @@ int fflush(FILE *stream) { } } return (reinterpret_cast<decltype(&fflush)>(libc_fflush))(stream); } int putc(int c, FILE *stream) { init_passthrough_if_needed(); if(CTX->initialized() && (stream != nullptr)) { auto fd = file_to_fd(stream); if(CTX->file_map()->exist(fd)) { CTX->log()->error("{}() NOT SUPPORTED", __func__); errno = ENOTSUP; return EOF; } } return (reinterpret_cast<decltype(&putc)>(libc_putc))(c, stream); } int fputc(int c, FILE *stream) { init_passthrough_if_needed(); if(CTX->initialized() && (stream != nullptr)) { auto fd = file_to_fd(stream); if(CTX->file_map()->exist(fd)) { CTX->log()->error("{}() NOT SUPPORTED", __func__); errno = ENOTSUP; return EOF; } } return (reinterpret_cast<decltype(&fputc)>(libc_fputc))(c, stream); } /****** FILE OPS ******/ Loading
ifs/src/preload/passthrough.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,9 @@ void* libc_ferror; void* libc_fileno; void* libc_fflush; void* libc_putc; void* libc_fputc; void* libc_mkdir; void* libc_mkdirat; void* libc_unlink; Loading Loading @@ -110,6 +113,9 @@ void init_passthrough_() { libc_fileno = dlsym(libc, "fileno"); libc_fflush = dlsym(libc, "fflush"); libc_putc = dlsym(libc, "putc"); libc_fputc = dlsym(libc, "fputc"); libc_mkdir = dlsym(libc, "mkdir"); libc_mkdirat = dlsym(libc, "mkdirat"); Loading