depre

Afficher la date et l'heure hexadécimale
git clone git://git.asteride.xyz/~ldp/depre.git
Journaux | Fichiers | Références | LISEZ-MOI | LICENCE

commit 3a27b64a107f91c439671aa06b55f925f096a0d1
parent 8d99bf2dc59548e47b645eec04608e9b0fb40c33
Auteur: ldp <ldp@asteride.xyz>
Date:   Thu,  8 Aug 2024 10:59:36 -0400

réglage du zéro

Il peut être réglé par une variable d'environnement ou par une option donnée en
ligne de commandes.

Diffstat:
Mdepre.c | 45+++++++++++++++++++++++++++++++++++----------
1 file changed, 35 insertions(+), 10 deletions(-)

diff --git a/depre.c b/depre.c @@ -10,8 +10,8 @@ #include <time.h> #include <unistd.h> -/* nombre de secondes entre l'époque Unix et l'époque depre */ -#define INTERVALLE (11138 * 60 * 60 * 24 + 3600 * 4) +/* nombre de secondes entre le zéro Unix et zéro depre, par défaut */ +#define ZERO_DEF (11138 * 60 * 60 * 24 + 3600 * 4) static void utilisation(FILE *f); static void version(void); @@ -22,23 +22,32 @@ char *nom_prog; int main(int argc, char **argv) { - int opt; - time_t secondes; + int opt; + time_t zero; + time_t secondes; unsigned int jours; - char *signe; + char *signe; + char *var; + var = NULL; + + /* obtenir le nom du programme */ if ((nom_prog = argv[0]) == NULL || nom_prog[0] == '\0') nom_prog = "depre"; + /* nombre de secondes depuis le zéro Unix */ secondes = time(NULL); - opterr = 0; - while ((opt = getopt(argc, argv, "s:Vh")) != -1) { + opterr = 0; /* ne pas afficher le message d'erreur par défaut */ + while ((opt = getopt(argc, argv, "s:z:Vh")) != -1) { switch (opt) { case 's': if (ccvt(optarg, &secondes) < 0) goto erreur; break; + case 'z': + var = optarg; + break; case 'V': version(); return 0; @@ -50,11 +59,27 @@ main(int argc, char **argv) } } + /* il ne doit plus rester d'arguments à traiter */ if (argc - optind != 0) goto erreur; - /* nombre de secondes écoulées depuis l'époque depre */ - secondes = secondes - INTERVALLE; + /* si l'option -z n'a pas été utilisée, voir si la variable + * d'environnement DEPRE_ZERO est réglée. */ + if (var == NULL) + var = getenv("DEPRE_ZERO"); + /* si l'option -z ou la variable d'environnement DEPRE_ZERO ont une + * valeur, tenter de convertir leur valeur en nombre. */ + if (var != NULL) { + if (ccvt(var, &zero) < 0) + goto erreur; + } else { /* sinon, utiliser la valeur par défaut */ + 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) { signe = "-"; secondes *= -1; @@ -79,7 +104,7 @@ erreur: static void utilisation(FILE *f) { - fprintf(f, "Utilisation: %s [-r secondes] [-V] [-h]\n", nom_prog); + fprintf(f, "Utilisation: %s [-r secondes] [-z zéro] [-V] [-h]\n", nom_prog); } static void