/* * File: soft_atimes.c * Author: DJ Capelis * * Compile: * gcc -fPIC -c -o soft_atimes.o soft_atimes.c * gcc -shared -o soft_atimes.so soft_atimes.o -ldl * * Use: * LD_PRELOAD="./soft_atimes.so" command * * Copyright 2007 Regents of the University of California */ #define _GNU_SOURCE #include #define _FCNTL_H #include extern int errno; int (*_open)(const char * pathname, int flags, ...); int (*_open64)(const char * pathname, int flags, ...); int open(const char * pathname, int flags, mode_t mode) { _open = (int (*)(const char * pathname, int flags, ...)) dlsym(RTLD_NEXT, "open"); if(flags & O_CREAT) return _open(pathname, flags | O_NOATIME, mode); else return _open(pathname, flags | O_NOATIME, 0); } int open64(const char * pathname, int flags, mode_t mode) { _open64 = (int (*)(const char * pathname, int flags, ...)) dlsym(RTLD_NEXT, "open64"); if(flags & O_CREAT) return _open64(pathname, flags | O_NOATIME, mode); else return _open64(pathname, flags | O_NOATIME, 0); }