skalibs

Mirror/fork of https://skarnet.org/software/skalibs/
git clone https://ccx.te2000.cz/git/skalibs
Log | Files | Refs | README | LICENSE

commit 24528fc273258b3e6278c9e3fdd4ce80206735ab
parent 09c9957582acb207a6c1518c94df6335c3a1d5d8
Author: Laurent Bercot <ska-skaware@skarnet.org>
Date:   Tue, 12 Sep 2023 13:27:51 +0000

 New sysdeps for st.st_atim etc., timespec_cmp

Signed-off-by: Laurent Bercot <ska@appnovation.com>

Diffstat:
Mpackage/deps.mak | 1+
Msrc/include/skalibs/djbtime.h | 3+++
Asrc/include/skalibs/stat.h | 31+++++++++++++++++++++++++++++++
Asrc/libstddjb/timespec_cmp.c | 13+++++++++++++
Asrc/sysdeps/trystatim.c | 9+++++++++
Asrc/sysdeps/trystatimespec.c | 9+++++++++
6 files changed, 66 insertions(+), 0 deletions(-)

diff --git 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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 ;