tzfile(5) información de huso horario

SINOPSIS

#include <tzfile.h>

DESCRIPCIÓN

Los ficheros de información de huso horario usados por tzset(3) comienzan con la secuencia de caracteres mágicos "TZif" para identificarlos como ficheros de información de huso horario, seguidos por 16 bytes reservados para uso futuro y seguidos por 6 valores de 4 bytes de tipo long, escritos en un orden de bytes ``estándar'' (se escribe primero el byte de orden superior del valor). Estos valores son, en orden:
tzh_ttisgmtcnt
El número de indicadores UTC/local almacenados en el fichero.
tzh_ttisstdcnt
El número de indicadores estándar/incorporado almacenados en el fichero.
tzh_leapcnt
El número de "segundos de salto" para los datos almacenados en el fichero.
tzh_timecnt
El número de "instantes de transición" para los datos almacenados en el fichero.
tzh_typecnt
El número de "tipos de hora local" para los datos almacenados en el fichero (no debe ser cero).
tzh_charcnt
El número de caracteres de las "cadenas de abreviación de husos horarios" almacenadas en el fichero.

A la cabecera anterior le siguen valores tzh_timecnt de cuatro bytes de tipo long, almacenados en orden ascendente. Estos valores se escriben en un orden de bytes ``estándar''. Cada uno de ellos se utiliza como un instante de transición (tal y como time(2) devuelve las horas) en el que cambian las reglas para el cálculo de la hora local. A continuación viene un valor tzh_timecnt de un byte de tipo unsigned char; cada uno de los cuales indica cuál de los diferentes tipos de ``hora local'' descritos en el fichero se asocia con el instante de transición colocado en la misma posición relativa. Estos valores sirven como índices en un array de estructuras ttinfo que aparecen después en el fichero; estas estructuras se definen como sigue:

struct ttinfo {
     long          tt_gmtoff;
     int           tt_isdst;
     unsigned int  tt_abbrind;
};

Cada estructura se escribe como un valor de cuatro byte para tt_gmtoff de tipo long, en un orden de bytes estándar, seguido por un valor de un byte para tt_isdst y un valor de un byte para tt_abbrind. En cada estructura, tt_gmtoff da el número de segundos a añadir a UTC, tt_isdst indica si tm_isdst debe ser o no establecido por localtime(3) y tt_abbrind se utiliza como un índice en el array de caracteres de abreviación de huso horario que siguen a la(s) estructura(s) ttinfo en el fichero.

Después hay parejas de valores tzh_leapcnt de 4 bytes, escritas en un orden de bytes estándar; el primer valor de cada pareja indica la hora (tal y como la devuelve time(2)) a la que se produce un segundo de salto; el segundo indica el número total de segundos de salto a aplicar después del instante dado. Las parejas de valores se almacenan en orden ascedente de tiempo.

A continuación, exiten indicadores estándar/incorporado tzh_ttisstdcnt, cada uno almacenado como un valor de un byte; indican si los instantes de transición asociados con los tipos de hora local se especificaron como una hora estándar o como una hora del reloj incorporado, y se usan cuando un fichero de huso horario se usa para manejar variables de entorno de huso horario al estilo POSIX.

Finalmente, hay indicadores UTC/local tzh_ttisgmtcnt, cada uno almacenado como un valor de un byte; indican si los instantes de transición asociados con los tipos de hora local se especificaron como horas UTC o locales, y se usan cuando un fichero de huso horario se usa para manejar variables de entorno de huso horario al estilo POSIX.

Localtime usa la primera estructura ttinfo de hora estándar del fichero (o, simplemente, la primera estructura ttinfo en ausencia de un estructura de hora estándar) si o bien tzh_timecnt es cero o bien el argumento de tiempo es menor que el primer instante de transición almacenado en el fichero.