TZFILE(5)

NOM
tzfile - Informations de zone horaire

DESCRIPTION
Cette page décrit la structure des fichiers d'informations de zone horaire utilisés par tzset(3). Ces fichiers sont habituellement situés dans les répertoires /usr/lib/zoneinfo ou /usr/share/zoneinfo.

Les fichiers d'informations de zone horaire commencent par les caractères magiques « TZif » pour les identifier en tant que fichiers d'informations de zone horaire (Time Zone information file). Ces caractères sont suivis d'un caractère permettant d'identifier le format du fichier (en 2005, les seuls caractères autorisés sont l'ASCII NUL « \0 » et le « 2 »), suivis de 15 octets contenant des zéros et réservés pour un usage futur, suivis de six valeurs sur 4 octets de type long, écrites dans l'ordre « standard » (big endian, le bit de poids fort en premier). Ces valeurs sont, dans l'ordre :

tzh_ttisgmtcnt
    Nombre d'indicateurs UTC/local enregistrés dans le fichier.

tzh_ttisstdcnt
    Nombre d'indicateurs standard/locale enregistrés dans le fichier.

tzh_leapcnt
    Nombre de secondes de rattrapage pour lesquelles des données sont enregistrées dans le fichier.

tzh_timecnt
    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
    Nombre de caractères de « chaînes d'abréviation de zone horaire » enregistrées dans le fichier.

L'en-tête ci-dessus est suivi par les valeurs tzh_timecnt sur 4 octets de type long, triées par ordre croissant. Ces valeurs sont écrites dans l'ordre « standard » des octets. Chacune est utilisée comme un instant de transition (tel que renvoyé par l'appel système time(2)) auquel les règles de calcul de l'heure locale changent. Ensuite, viennent les valeur tzh_timecnt sur un octet de type unsigned char ; chacune indiquant lequel des différents types « d'heure locale » décrits dans le fichier est associé avec l'instant de transition de même rang. Ces valeurs servent d'indice dans une table de structures ttinfo (avec des entrées tzh_typecnt) 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 de 4 octets, du type long, dans l'ordre standard des octets pour tt_gmtoff, suivie d'une valeur sur 1 octet pour tt_isdst et d'une valeur sur 1 octet pour tt_abbrind. Dans chaque structure, tt_gmtoff indique le nombre de secondes à ajouter à UTC, tt_isdst indique que tm_isdst doit être définie par localtime(3) et que 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 s'insère 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 temps.

Ensuite se trouvent tzh_ttisstdcnt indicateurs standard/locale, 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 zone 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(3) 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 paramètre horaire est antérieur à la première transition enregistrée dans le fichier.

NOTES
Cette page de manuel décrit <tzfile.h> de l'archive source de glibc, voir timezone/tzfile.h.

Il semble que timezone utilise tzfile de manière interne, mais glibc refuse de le rendre visible depuis l'espace utilisateur. Ceci probablement parce que les fonctions standardisées sont plus utiles et portables, et de fait documentées par glibc. Il se peut qu'elle ne se trouve dans glibc que pour gérer les données de timezone qui sont maintenues hors de glibc (qui est maintenue par une autre entité).

VOIR AUSSI
time(3), gettimeofday(3), tzset(3), ctime(3)

Pour les fichiers de fuseau horaire dans le format 2, l'en-tête et les données ci-dessus sont suivies d'un second en-tête et données, identiques en format sauf que 8 octets sont utilisés pour chaque transition ou secondes de rattrapage. Après le deuxième en-tête et données, arrive une chaîne, du même type que la variable d'environnement POSIX TZ, entourée de sauts de lignes. Cette chaîne est utilisée pour gérer les instants après la dernière transition stockée dans le fichier (avec rien entre les sauts de lignes s'il n'existe pas de représentation POSIX pour de tels instants).

VOIR AUSSI
ctime(3), tzset(3), tzselect(8),

timezone/tzfile.h dans les sources de la glibc

COLOPHON
Cette page fait partie de la publication 3.57 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

Christophe Blaess <http://www.blaess.fr/christophe/> (1996-2003), Alain Portal <http://manpagesfr.free.fr/> (2003-2006). Jean-Luc Coulon et l'équipe francophone de traduction de Debian (2006-2009).

Veuillez signaler toute erreur de traduction en écrivant à <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le paquet manpages-fr.

Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C <section> <page_de_man> ».