commit ad69ba79f75c081fb77ccb30b6e9de7f2928f81e
parent 9a5a30c3d27fbf9df40bebaa0f711ec240f0b2e2
Auteur: ldp <ldp@asteride.xyz>
Date: Thu, 8 Aug 2024 09:32:26 -0400
gestion des dates négatives
Diffstat:
2 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/Makefile b/Makefile
@@ -2,7 +2,7 @@ PREFIX = /usr/local
BIN_DOS = ${PREFIX}/bin
CC = cc
-COPTS_SPCL = -O2 -NDEBUG
+COPTS_SPCL = -O2 -DNDEBUG
COPTS = -Wall -Wextra -Werror -Wpedantic -Wno-implicit-fallthrough \
-std=c89 ${COPTS_SPCL}
diff --git a/depre.c b/depre.c
@@ -11,7 +11,7 @@
#include <unistd.h>
/* nombre de secondes entre l'époque Unix et l'époque depre */
-#define NSECS (11138 * 60 * 60 * 24 + 3600 * 4)
+#define INTERVALLE (11138 * 60 * 60 * 24 + 3600 * 4)
static void utilisation(FILE *f);
static int ccvt(char *cc, time_t *rep);
@@ -24,6 +24,7 @@ main(int argc, char **argv)
int opt;
time_t secondes;
unsigned int jours;
+ char *signe;
if ((nom_prog = argv[0]) == NULL || nom_prog[0] == '\0')
nom_prog = "depre";
@@ -49,16 +50,20 @@ main(int argc, char **argv)
goto erreur;
/* nombre de secondes écoulées depuis l'époque depre */
- secondes = secondes - NSECS;
- if (secondes < 0)
- goto erreur;
+ secondes = secondes - INTERVALLE;
+ if (secondes < 0) {
+ signe = "-";
+ secondes *= -1;
+ } else {
+ signe = "";
+ }
/* nombre de jours complets écoulés */
jours = secondes / 86400;
/* nombre de secondes écoulées aujourd'hui */
secondes -= jours * 86400;
/* afficher la date d'aujourd'hui */
- printf("%x.%llx\n", jours, secondes * (16 * 16 * 16) / 86400);
+ printf("%s%x.%llx\n", signe, jours, secondes * (16 * 16 * 16) / 86400);
return 0;
@@ -73,6 +78,7 @@ utilisation(FILE *f)
fprintf(f, "Utilisation: %s [-r secondes] [-h]\n", nom_prog);
}
+/* convertir une chaîne de caractères en nombre */
static int
ccvt(char *cc, time_t *rep)
{