За этим заголовком следуют четырехбайтные значения tzh_timecnt типа long, расположенные в порядке возрастания. Эти значения записаны в "стандартном" порядке байтов. Каждое из этих значений является временем "переходного периода" (в формате, возвращаемом функцией time(2)), при задании которого изменяются правила вычисления местного времени. После этого следуют однобайтные значения tzh_timecnt типа unsigned char; каждое из этих значений указывает, какому типу "местного времени", описанному в файле, соответствует "переходный период", порядковый номер которого в предыдущем списке совпадает с номером этого значения. Эти значения выступают в роли индексов массива структур 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 означает, что tm_isdst должно быть установлено при помощи localtime(3), и tt_abbrind является индексом массива аббревиатур часовых поясов; массив следует за структурами ttinfo.
После этого массива стоят пары четырехбайтных значений tzh_leapcnt, записанные в "стандартном" порядке байтов; первое значение каждой пары задает время (в формате time(2)) високосной секунды; вторая пара определяет общее количество високосных секунд, добавляемых к указанному моменту времени. Пары значений располагаются в порядке возрастания.
Затем в файле располагаются индикаторы стандартного/местного времени tzh_ttisstdcnt, каждый из которых имеет однобайтное значение; эти индикаторы определяют, как заданы "переходные периоды" местного времени: согласно стандартному или местному времени. Эти индикаторы используются, когда файл с информацией о часовых поясах работает с POSIX-совместимыми переменными окружения часовых поясов.
И, наконец, в этом файле находятся UTC/местные индикаторы tzh_ttisgmtcnt, каждый из которых представлен в виде однобайтного значения; эти индикаторы определяют, как заданы "переходные периоды" местного времени: согласно UTC или местному времени. Эти индикаторы используются, когда файл с информацией о часовых поясах работает с POSIX-совместимыми переменными окружения часовых поясов.
Localtime использует первую структуру стандартного местного времени ttinfo из этого файла (или просто первую структуру ttinfo при отсутствии структур стандартного местного времени), если tzh_timecnt равен 0, или аргумент времени меньше временного аргумента первого "переходного периода", записанного в файле.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |