# translib # transparent LD_PRELOAD wrapper for open functions # this was cow mark 1! # TODO make it a wrapper for ALL functions!!!!!!!!!! use sys/types.h use sys/stat.h use fcntl.h use stdarg.h use unistd.h use string.h use stdio.h wrap int open(const char *path, int flags, ...) fprintf(stderr, "cow: open %s\n", path) if (flags & O_CREAT) va_list arg_list mode_t mode va_start(arg_list, flags) mode = va_arg(arg_list, mode_t) va_end(arg_list); return unwrapped(path, flags, mode) else return unwrapped(path, flags) wrap int creat(const char *path, mode_t mode) fprintf(stderr, "cow: creat %s\n", path) return unwrapped(path, mode) wrap FILE* fopen(const char *path, const char *mode) fprintf(stderr, "cow: fopen %s\n", path) return unwrapped(path, mode) wrap FILE* freopen(const char *path, const char *mode, FILE *stream) fprintf(stderr, "cow: freopen %s\n", path) return unwrapped(path, mode, stream) wrap int open64(const char *path, int flags, ...) fprintf(stderr, "cow: open64 %s\n", path) if (flags & O_CREAT) va_list arg_list mode_t mode va_start(arg_list, flags) mode = va_arg(arg_list, mode_t) va_end(arg_list); return unwrapped(path, flags, mode) else return unwrapped(path, flags) wrap int creat64(const char *path, mode_t mode) fprintf(stderr, "cow: creat64 %s\n", path) return unwrapped(path, mode) wrap FILE* fopen64(const char *path, const char *mode) fprintf(stderr, "cow: fopen64 %s\n", path) return unwrapped(path, mode) wrap FILE* freopen64(const char *path, const char *mode, FILE *stream) fprintf(stderr, "cow: freopen64 %s\n", path) return unwrapped(path, mode, stream)