TZFILE(5)

名称
tzfile - タイムゾーンの情報

書式
#include "/usr/src/lib/libc/stdtime/tzfile.h"

解説
tzset(3) が使用するタイムゾーン情報ファイルは、 タイムゾーン情報ファイルであることを識別するマジック文字列 “TZif” から始まり、 将来の使用のために予約された 16 バイトが続き、 4 つの 4 バイト値が続きます。 これは ``標準'' バイトオーダ (上位バイトを最初に格納) で格納されます。 これらの値を順序に従い、以下に示します。

tzh_ttisgmtcnt
    ファイルに格納された、UTC/ローカル指示子の数。
tzh_ttisstdcnt
    ファイルに格納された、標準/ウォール指示子の数。
tzh_leapcnt
    ファイルに格納された、閏秒データの数。
tzh_timecnt
    ファイルに格納された ``遷移時刻'' データの数。
tzh_typecnt
    ファイルに格納された ``ローカルタイム型'' データの数 (0 であってはなりません)。
tzh_charcnt
    ファイルに格納された ``タイムゾーン省略形文字列'' の文字数。

上記のヘッダに続いて、 4 バイト long 型の値が tzh_timecnt 個、昇順に並びます。 値は ``標準'' バイトオーダで格納されます。 それぞれ、ローカルタイム計算方法が変わる遷移時刻 ( time(3) で返される形式) として使用されます。 続いて、1 バイト unsigned char 型の値が tzh_timecnt 個続きます。 このそれぞれは、同一インデックスの遷移時刻に、 ファイル中のどの ``ローカルタイム'' 型が対応するかを示します。 値は、このファイル中で後続する ttinfo 構造体の配列に対するインデックスです。 この構造体の定義を以下に示します。

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

各構造体は、 標準バイトオーダの 4 バイト long 型の値 tt_gmtoff 、それに続く 1 バイトの値 tt_isdst 、そして 1 バイトの値 tt_abbrind の順に格納されます。 tt_gmtoff は UTC に加えるべき秒数を、 tt_isdst は tm_isdst が localtime(3) により設定されるべきかどうかを、 tt_abbrind はタイムゾーン省略文字列の配列に対するインデックスを意味します。 タイムゾーン省略文字列の配列は、同一ファイル中の ttinfo 構造体に後続しています。

その後には標準バイトオーダで格納される 4 バイト値のペアが tzh_leapcnt 個格納されています。 各ペアの最初の値は、閏秒が発生する時刻 ( time(3) で返される形式) です。 2 番目の値は、 指定された時刻以降に適用される閏秒の 総計 です。 値のペアは時刻の昇順で格納されます。

その後に、1 バイト値の標準/ウォールの指示子が tzh_ttisstdcnt 個格納されています。 これらは、ローカルタイム型に関する遷移時刻が 標準時刻で指定されているのか、 それともウォールクロックの時刻で指定されているのかを示します。 この情報は、POSIX スタイルのタイムゾーン環境変数を扱う際に、 タイムゾーンファイルを使用するときに使用します。

最後に、複数の tzh_ttisgmtcnt UTC/ローカル指示子があり、それぞれ 1 バイト値として格納されます。 これらは、ローカル時刻タイプと関連付けられた遷移時刻が UTC とローカル時刻のどちらで指定されているかを示し、 タイムゾーンファイルが POSIX スタイルタイムゾーン環境変数を扱うときに 使用されます。

tzh_timecnt が 0 の場合もしくは時刻引数がファイル中の最初の遷移時刻以前の場合、 localtime は、ファイル中の最初の標準時間の ttinfo 構造体を使用します (標準時間の構造体が無い場合には、単に最初の ttinfo 構造体を使用します)。

関連項目
ctime(3), time2posix(3), zic(8)