tzfile - Information de fuseau horaire.
Les fichiers d'information de fuseau horaire utilisés par
tzset(3)
commencent par les caractères magiques "TZif" pour les identifier
(Time Zone information file).
Ces caractères sont suivis de 16 octets réservés pour une utilisation
future, suivis de 6 valeurs sur 4 octets de type
long,
écrites dans l'ordre "standard" des octets
(poids fort en premier)
Ces valeurs sont,
dans l'ordre :
- tzh_ttisgmtcnt
-
Le nombre d'indicateurs UTC/local enregistrés dans le fichier.
- tzh_ttisstdcnt
-
Le nombre d'indicateurs standard/wall enregistrés dans le fichier.
- tzh_leapcnt
-
Le nombre de secondes de rattrapage pour lesquelles des données sont enregistrées.
- tzh_timecnt
-
Le nombre d'instants de transition pour lesquels des données sont
enregistrées dans le fichier.
- tzh_typecnt
-
Le nombre de types d'heures locales pour lesquelles des données sont
enregistrées dans le fichier (ne doit pas être nul).
- tzh_charcnt
-
Le nombre de caractères de chaînes d'abréviation de fuseau horaire
enregistrées dans le fichier.
Cet en-tête est suivi par
tzh_timecnt
valeurs sur 4 octets de type
long,
classées en ordre croissant.
Ces valeurs sont écrites dans l'ordre standard des octets.
Chacune est un instant de transition (comme renvoyé par l'appel-système
time(2))
auquel les règles de calcul de l'heure locale changent.
Ensuite viennent
tzh_timecnt
valeurs sur un octet de type
unsigned char;
chacune indiquant lequel des différents types d'heures locales décrites
dans le fichier est associé avec l'instant de transition ayant le même rang.
Ces valeurs servent d'indice dans une table de structures
ttinfo
qui apparaissent ensuite dans le fichier.
Ces structures sont définies ainsi :
struct ttinfo {
long tt_gmtoff;
int tt_isdst;
unsigned int tt_abbrind;
};
Chaque structure est écrite sous forme d'une valeur 4 octets pour
tt_gmtoff
du type
long,
dans l'ordre standard des octets, suivie d'une valeur sur 1 octet pour
tt_isdst
et une valeur sur 1 octet pour
tt_abbrind.
Dans chaque structure,
tt_gmtoff
indique le nombre de secondes à ajouter à l'UTC,
tt_isdst
indique si
tm_isdst
doit être indiqué par
localtime(3)
et
tt_abbrind
sert d'index dans la table des caractères d'abréviation de la zone horaire
qui suit les structures
ttinfo
dans le fichier.
Viennent ensuite
tzh_leapcnt
paires de valeurs 4 octets, écrites dans l'ordre standard des octets. La
première valeur de chaque paire donne l'instant
(comme fourni par
time(2))
auquel se trouve une seconde de rattrapage.
La seconde indique le nombre
total
de secondes de rattrapage à insérer après l'instant donné.
Ces paires sont classées en ordre croissant de date.
Ensuite se trouvent
tzh_ttisstdcnt
indicateurs standard/wall, chacun enregistré sur un octet. Ils indiquent
si les instants de transition associés aux types d'heures locales ont été
spécifiés en heure standard ou locale, et servent lorsqu'un fichier
de fuseau horaire permet de manipuler des variables d'environnement
de zone horaire à la manière POSIX.
Finalement se trouvent
tzh_ttisgmtcnt
indicateurs UTC/local , chacun enregistré sur un octet. Ils indiquent si les
instants de transition associés aux types d'heures locales ont été spécifiés
en heure UTC ou locale, et servent lorsqu'un fichier de fuseau horaire
permet de manipuler des variables d'environnement
de zone horaire à la manière POSIX.
Localtime
utilise la première structure
ttinfo
en heure standard du fichier (ou simplement la première structure
ttinfo
s'il n'y en a pas en heure standard), si
tzh_timecnt
est nul, ou si son argument temporel est antérieur à la première transition
enregistrée dans le fichier..
Christophe Blaess, 1999-2003.