#define _GNU_SOURCE
#include <time.h>
#include <sys/time.h>
#include <dlfcn.h>
#include <stdio.h>
#include <stdlib.h>
static long offset(void) { const char *p=getenv("EVIDENCE_CLOCK_FILE"); if(!p)return 0; FILE *f=fopen(p,"r"); long n=0; if(f){fscanf(f,"%ld",&n);fclose(f);}return n; }
int clock_gettime(clockid_t c,struct timespec *t){static int(*real)(clockid_t,struct timespec*);if(!real)real=dlsym(RTLD_NEXT,"clock_gettime");int r=real(c,t);if(r==0&&c==CLOCK_REALTIME)t->tv_sec+=offset();return r;}
int gettimeofday(struct timeval *t,void *z){static int(*real)(struct timeval*,void*);if(!real)real=dlsym(RTLD_NEXT,"gettimeofday");int r=real(t,z);if(r==0)t->tv_sec+=offset();return r;}
time_t time(time_t *t){struct timespec ts;clock_gettime(CLOCK_REALTIME,&ts);if(t)*t=ts.tv_sec;return ts.tv_sec;}
