From 24528fc273258b3e6278c9e3fdd4ce80206735ab Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Tue, 12 Sep 2023 13:27:51 +0000 Subject: New sysdeps for st.st_atim etc., timespec_cmp Signed-off-by: Laurent Bercot --- src/include/skalibs/djbtime.h | 3 +++ src/include/skalibs/stat.h | 31 +++++++++++++++++++++++++++++++ src/libstddjb/timespec_cmp.c | 13 +++++++++++++ src/sysdeps/trystatim.c | 9 +++++++++ src/sysdeps/trystatimespec.c | 9 +++++++++ 5 files changed, 65 insertions(+) create mode 100644 src/include/skalibs/stat.h create mode 100644 src/libstddjb/timespec_cmp.c create mode 100644 src/sysdeps/trystatim.c create mode 100644 src/sysdeps/trystatimespec.c (limited to 'src') diff --git a/src/include/skalibs/djbtime.h b/src/include/skalibs/djbtime.h index 980f3b2..386d435 100644 --- a/src/include/skalibs/djbtime.h +++ b/src/include/skalibs/djbtime.h @@ -10,6 +10,9 @@ #include +extern int timespec_cmp (struct timespec const *, struct timespec const *) ; + + /* UTC <--> TAI conversions */ /* sysclock can be either TAI-10 or UTC */ diff --git a/src/include/skalibs/stat.h b/src/include/skalibs/stat.h new file mode 100644 index 0000000..de85cce --- /dev/null +++ b/src/include/skalibs/stat.h @@ -0,0 +1,31 @@ +/* ISC license. */ + +#ifndef SKALIBS_STAT_H +#define SKALIBS_STAT_H + +#include + +#ifdef SKALIBS_HASSTATIM + +#define ST_ATIM st_atim +#define ST_MTIM st_mtim +#define ST_CTIM st_ctim + +#else + +#ifdef SKALIBS_HASSTATIMESPEC + +#define ST_ATIM st_atimespec +#define ST_MTIM st_mtimespec +#define ST_CTIM st_ctimespec + +#else + +#define ST_ATIM st_how_the_fuck_do_you_even_get_atime_on_this_OS +#define ST_MTIM st_how_the_fuck_do_you_even_get_mtime_on_this_OS +#define ST_CTIM st_how_the_fuck_do_you_even_get_ctime_on_this_OS + +#endif +#endif + +#endif diff --git a/src/libstddjb/timespec_cmp.c b/src/libstddjb/timespec_cmp.c new file mode 100644 index 0000000..85d23c2 --- /dev/null +++ b/src/libstddjb/timespec_cmp.c @@ -0,0 +1,13 @@ +/* ISC license. */ + +#include + +#include + +int timespec_cmp (struct timespec const *a, struct timespec const *b) +{ + if (a->tv_sec < b->tv_sec) return -1 ; + if (a->tv_sec > b->tv_sec) return 1 ; + if (a->tv_nsec < b->tv_nsec) return -1 ; + return a->tv_nsec > b->tv_nsec ; +} diff --git a/src/sysdeps/trystatim.c b/src/sysdeps/trystatim.c new file mode 100644 index 0000000..94834cc --- /dev/null +++ b/src/sysdeps/trystatim.c @@ -0,0 +1,9 @@ +/* ISC license. */ + +#include +#include + +struct stat st ; +struct timespec *tsa = &st.st_atim ; +struct timespec *tsm = &st.st_mtim ; +struct timespec *tsc = &st.st_ctim ; diff --git a/src/sysdeps/trystatimespec.c b/src/sysdeps/trystatimespec.c new file mode 100644 index 0000000..2690d57 --- /dev/null +++ b/src/sysdeps/trystatimespec.c @@ -0,0 +1,9 @@ +/* ISC license. */ + +#include +#include + +struct stat st ; +struct timespec *tsa = &st.st_atimespec ; +struct timespec *tsm = &st.st_mtimespec ; +struct timespec *tsc = &st.st_ctimespec ; -- cgit v1.2.3