commit c16b42e7d7ddbef0dee316dd2cbf28e354a63061
parent 9cc3b4c1bebeb77d877266a7ef7ae0d1f80e6096
Auteur: ldp <ldp@asteride.xyz>
Date: Tue, 9 Dec 2025 16:40:47 -0500
[sty] Réorganiser les sources
Diffstat:
| M | Makefile | | | 6 | +++--- |
| A | commun.c | | | 67 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| A | commun.h | | | 10 | ++++++++++ |
| M | depre.c | | | 64 | +++++++++------------------------------------------------------- |
4 fichiers modifiés, 89 insertions(+), 58 suppressions(-)
diff --git a/Makefile b/Makefile
@@ -19,8 +19,8 @@ LANG_MAN != ls "${DOS_MAN}"
all: depre
-depre: depre.o
- ${CC} ${COPTS} -o "$@" depre.o
+depre: depre.o commun.o
+ ${CC} ${COPTS} -o "$@" depre.o commun.o
inst_man:
for L in ${LANG_MAN} ; \
@@ -36,5 +36,5 @@ install: all inst_man
uninstall:
rm -f ${BIN_DOS}/depre
-clean:
+net:
rm -f depre *.o *.core
diff --git a/commun.c b/commun.c
@@ -0,0 +1,67 @@
+#include <assert.h>
+#include <time.h>
+
+#include <stdio.h>
+
+#include "commun.h"
+
+/* nombre de secondes dans une journée */
+#define SEC_JOUR 86400
+
+/* nombre de barres dans une journée */
+#define BAR_JOUR (16 * 16 * 16)
+
+/* calculer le nombre de jours et de barres entre zéro et secondes.
+ * 0 lorsque la différence est positive et -1 lorsqu’elle est négative. */
+int
+depre(time_t zero, time_t secondes, unsigned *jours, unsigned *barres)
+{
+ int signe = 0;
+
+ /* nombre de secondes écoulées depuis le zéro dêpre */
+ secondes = secondes - zero;
+
+ /* si la date et l’heure sont antérieures au zéro, quelques ajustements
+ * doivent être faits */
+ if (secondes < 0) {
+ signe = -1;
+ secondes *= -1;
+ }
+
+ /* nombre de jours complets écoulés */
+ *jours = (unsigned) secondes / SEC_JOUR;
+
+ /* secondes restantes */
+ secondes -= *jours * SEC_JOUR;
+
+ /* nombre de barres restantes */
+ *barres = (unsigned) secondes * BAR_JOUR / SEC_JOUR;
+
+ return signe;
+}
+
+/* convertir une chaîne de caractères en nombre */
+int
+ccvt(char *cc, time_t *rep)
+{
+ int signe;
+
+ assert(cc != NULL);
+
+ *rep = 0;
+ signe = 1;
+ if (*cc == '-') {
+ signe = -1;
+ cc++;
+ }
+
+ for (;*cc != '\0'; cc++) {
+ if (*cc < '0' || *cc > '9')
+ return -1;
+ *rep = *rep * 10 + *cc - '0';
+ }
+
+ *rep *= signe;
+
+ return 0;
+}
diff --git a/commun.h b/commun.h
@@ -0,0 +1,10 @@
+#ifndef COMMUN_H
+#define COMMUN_H
+
+/* nombre de secondes entre le zéro Unix et zéro depre, par défaut */
+#define ZERO_DEF (11138 * 60 * 60 * 24 + 3600 * 4)
+
+int depre(time_t zero, time_t secondes, unsigned *jours, unsigned *barres);
+int ccvt(char *, time_t *);
+
+#endif
diff --git a/depre.c b/depre.c
@@ -10,6 +10,8 @@
#include <time.h>
#include <unistd.h>
+#include "commun.h"
+
/* nombre de secondes entre le zéro Unix et zéro depre, par défaut */
#define ZERO_DEF (11138 * 60 * 60 * 24 + 3600 * 4)
@@ -21,20 +23,16 @@
static void utilisation(FILE *f);
static void version(void);
-static int ccvt(char *cc, time_t *rep);
-static int secbar(time_t sec);
char *nom_prog;
int
main(int argc, char **argv)
{
- int opt;
- time_t zero;
- time_t secondes;
- unsigned int jours;
- char *signe;
- char *var;
+ int opt;
+ time_t zero, secondes;
+ unsigned jours, barres;
+ char *signe, *var;
var = NULL;
@@ -83,23 +81,13 @@ main(int argc, char **argv)
zero = ZERO_DEF;
}
- /* nombre de secondes écoulées depuis le zéro depre */
- secondes = secondes - zero;
- /* si la date et l'heure sont antérieures au zéro, quelques ajustements
- * doivent être faits */
- if (secondes < 0) {
+ if (depre(zero, secondes, &jours, &barres) < 0)
signe = "-";
- secondes *= -1;
- } else {
+ else
signe = "";
- }
- /* nombre de jours complets écoulés */
- jours = secondes / SEC_JOUR;
- /* nombre de secondes écoulées aujourd'hui */
- secondes -= jours * SEC_JOUR;
/* afficher la date d'aujourd'hui */
- printf("%s%x.%x\n", signe, jours, secbar(secondes));
+ printf("%s%x.%x\n", signe, jours, barres);
return 0;
@@ -119,37 +107,3 @@ version(void)
{
fprintf(stdout, "%s " VERSION "\n", nom_prog);
}
-
-/* convertir une chaîne de caractères en nombre */
-static int
-ccvt(char *cc, time_t *rep)
-{
- int signe;
-
- assert(cc != NULL);
-
- *rep = 0;
- signe = 1;
- if (*cc == '-') {
- signe = -1;
- cc++;
- }
-
- for (;*cc != '\0'; cc++) {
- if (*cc < '0' || *cc > '9')
- return -1;
- *rep = *rep * 10 + *cc - '0';
- }
-
- *rep *= signe;
-
- return 0;
-}
-
-/* convertir secondes en barres */
-/* renvoie un int, car il y a 4096 barres dans une journée */
-static int
-secbar(time_t sec)
-{
- return (int) (sec * BAR_JOUR / SEC_JOUR);
-}