diff options
author | Laurent Bercot <ska-skaware@skarnet.org> | 2023-09-12 13:27:51 +0000 |
---|---|---|
committer | Laurent Bercot <ska@appnovation.com> | 2023-09-12 13:27:51 +0000 |
commit | 24528fc273258b3e6278c9e3fdd4ce80206735ab (patch) | |
tree | 352fbc7a771d68e6e7af5f76bf5b0593e89b88ad | |
parent | 09c9957582acb207a6c1518c94df6335c3a1d5d8 (diff) | |
download | skalibs-24528fc273258b3e6278c9e3fdd4ce80206735ab.tar.xz |
New sysdeps for st.st_atim etc., timespec_cmp
Signed-off-by: Laurent Bercot <ska@appnovation.com>
-rw-r--r-- | package/deps.mak | 1 | ||||
-rw-r--r-- | src/include/skalibs/djbtime.h | 3 | ||||
-rw-r--r-- | src/include/skalibs/stat.h | 31 | ||||
-rw-r--r-- | src/libstddjb/timespec_cmp.c | 13 | ||||
-rw-r--r-- | src/sysdeps/trystatim.c | 9 | ||||
-rw-r--r-- | src/sysdeps/trystatimespec.c | 9 |
6 files changed, 66 insertions, 0 deletions
diff --git a/package/deps.mak b/package/deps.mak index fc8ee82..c213301 100644 --- a/package/deps.mak +++ b/package/deps.mak @@ -639,6 +639,7 @@ src/libstddjb/tain_zero.o src/libstddjb/tain_zero.lo: src/libstddjb/tain_zero.c src/libstddjb/time_from_tai.o src/libstddjb/time_from_tai.lo: src/libstddjb/time_from_tai.c src/include/skalibs/bsdsnowflake.h src/include/skalibs/sysdeps.h src/include/skalibs/tai.h src/include/skalibs/uint64.h src/libstddjb/time_from_tai_relative.o src/libstddjb/time_from_tai_relative.lo: src/libstddjb/time_from_tai_relative.c src/include/skalibs/bsdsnowflake.h src/include/skalibs/sysdeps.h src/include/skalibs/tai.h src/libstddjb/time_sysclock_from_tai.o src/libstddjb/time_sysclock_from_tai.lo: src/libstddjb/time_sysclock_from_tai.c src/include/skalibs/bsdsnowflake.h src/include/skalibs/sysdeps.h src/include/skalibs/tai.h src/include/skalibs/uint64.h +src/libstddjb/timespec_cmp.o src/libstddjb/timespec_cmp.lo: src/libstddjb/timespec_cmp.c src/include/skalibs/djbtime.h src/libstddjb/timespec_from_tain.o src/libstddjb/timespec_from_tain.lo: src/libstddjb/timespec_from_tain.c src/include/skalibs/tai.h src/libstddjb/timespec_from_tain_relative.o src/libstddjb/timespec_from_tain_relative.lo: src/libstddjb/timespec_from_tain_relative.c src/include/skalibs/tai.h src/libstddjb/timespec_sysclock_from_tain.o src/libstddjb/timespec_sysclock_from_tain.lo: src/libstddjb/timespec_sysclock_from_tain.c src/include/skalibs/tai.h 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 <skalibs/tai.h> +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 <skalibs/sysdeps.h> + +#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 <time.h> + +#include <skalibs/djbtime.h> + +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 <sys/stat.h> +#include <time.h> + +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 <sys/stat.h> +#include <time.h> + +struct stat st ; +struct timespec *tsa = &st.st_atimespec ; +struct timespec *tsm = &st.st_mtimespec ; +struct timespec *tsc = &st.st_ctimespec ; |