TZFILE(5)

НАЗВАНИЕ
tzfile - информация о часовом поясе

СИНТАКСИС
#include <tzfile.h>

ОПИСАНИЕ
Файлы с информацией о часовых поясах, которые использует функция tzset(3), начинаются с символов "TZif", показывающих, что это файлы с информацией о часовых поясах, затем располагаются шестнадцать байт, зарезервированных для будущего использования, за ними располагаются шесть четырёхбайтовых значений типа long, записанных в ``сетевом'' порядке байт (старший байт значения записывается первым). Вот эти значения, по порядку:

tzh_ttisgmtcnt
    Количество индикаторов UTC и местных индикаторов, хранящихся в файле.

tzh_ttisstdcnt
    Количество индикаторов "времени на часах" (wall-clock time) или стандартного времени, хранящихся в файле.

tzh_leapcnt
    Количество високосных секунд, данные о которых хранятся в файле.

tzh_timecnt
    Количество "моментов перевода времени", данные о которых хранятся в файле.

tzh_typecnt
    Количество "типов местного времени" , данные о которых хранятся в файле ( должно быть ненулевым).

tzh_charcnt
    Количество символов в "строках аббревиатур часовых поясов", хранящихся в файле.

После этого заголовка следуют tzh_timecnt, четырёхбайтовые значения типа long, отсортированные по возрастанию. Эти значения записаны в ``сетевом'' порядке байт. Каждое из них рассматривается как момент перевода времени (в том виде, как его возвращает функция time(2)). Далее следуют однобайтовые значения типа unsigned char в количестве tzh_timecnt, каждое из которых показывает, как различные типы ``местного времени'', описываемые в файле, связаны с моментами перевода времени с теми же индексами. Эти значения служат в качестве индексов массива структур ttinfo, которые располагаются далее в файле; эти структуры определены так:

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

Каждая структура определена в виде четырёхбайтового значения tt_gmtoff типа long в сетевом порядке байт, однобайтового значения tt_isdst и однобайтового значения tt_abbrind. В каждой структуре tt_gmtoff определяет количество секунд, которые нужно добавить к UTC, tt_isdst показывает, будет ли localtime (3) устанавливать значение tm_isdst, а tt_abbrind служит в индексом массива символов аббревиатур часовых поясов, которые располагаются в виде структур(ы) ttinfo в файле далее.

Затем следуют пары четырёхбайтовых значений tzh_leapcnt, записанных в сетевом порядке байт; первое значение каждой пары определяет время (в формате time(2)), когда встретилась високосная секунда; второе определяет общее число високосных секунд, которые нужно применить после заданного времени. Пары значений отсортированы по времени в возрастающем порядке.

Далее располагаются индикаторы стандартного времени или "времени на часах" в количестве tzh_ttisstdcnt, причем каждый занимает один байт. Они показывают, указаны ли моменты перевода времени, связанные с типами местного времени, в стандартном или "времени на часах", и применяются, когда файл часовых поясов используется при обработке переменных среды, указывающих часовые пояса в стиле POSIX.

Наконец, идут индикаторы UTC или местные индикаторы в количестве tzh_ttisgmtcnt, причем каждый занимает один байт; Они показывают, указаны ли моменты перевода времени, связанные с типами местного времени, в местном времени или в UTC, и применяются, когда файл часовых поясов используется при обработке переменных среды, указывающих часовые пояса в стиле POSIX.

Localtime использует первую структуру ttinfo со стандартным временем из файла (или просто первую структуру ttinfo при отсутствии структуры со стандартным временем), если tzh_timecnt равен нулю или аргумент времени меньше, чем первый момент перевода времени, записанный в файле.

СМОТРИ ТАКЖЕ
newctime(3)

ПЕРЕВОД
Юрий Козлов <y_kozlov@chat.ru>.