depre

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

commun.c (1273B)


      1 #include <assert.h>
      2 #include <time.h>
      3 
      4 #include "commun.h"
      5 
      6 /* nombre de secondes dans une journée */
      7 #define SEC_JOUR 86400
      8 
      9 /* nombre de barres dans une journée */
     10 #define BAR_JOUR (16 * 16 * 16)
     11 
     12 /* calculer le nombre de jours et de barres entre zéro et secondes.
     13  * 0 lorsque la différence est positive et -1 lorsqu’elle est négative. */
     14 int
     15 depre(time_t zero, time_t secondes, unsigned *jours, unsigned *barres)
     16 {
     17 	int signe = 0;
     18 
     19 	/* nombre de secondes écoulées depuis le zéro dêpre */
     20 	secondes = secondes - zero;
     21 
     22 	/* si la date et l’heure sont antérieures au zéro, quelques ajustements
     23 	 * doivent être faits */
     24 	if (secondes < 0) {
     25 		signe = -1;
     26 		secondes *= -1;
     27 	}
     28 
     29 	/* nombre de jours complets écoulés */
     30 	*jours = (unsigned) secondes / SEC_JOUR;
     31 
     32 	/* secondes restantes */
     33 	secondes -= *jours * SEC_JOUR;
     34 
     35 	/* nombre de barres restantes */
     36 	*barres = (unsigned) secondes * BAR_JOUR / SEC_JOUR;
     37 
     38 	return signe;
     39 }
     40 
     41 /* convertir une chaîne de caractères en nombre */
     42 int
     43 ccvt(char *cc, time_t *rep)
     44 {
     45 	int signe;
     46 
     47 	assert(cc != NULL);
     48 
     49 	*rep = 0;
     50 	signe = 1;
     51 	if (*cc == '-') {
     52 		signe = -1;
     53 		cc++;
     54 	}
     55 
     56 	for (;*cc != '\0'; cc++) {
     57 		if (*cc < '0' || *cc > '9')
     58 			return -1;
     59 		*rep = *rep * 10 + *cc - '0';
     60 	}
     61 
     62 	*rep *= signe;
     63 
     64 	return 0;
     65 }