ZIC(8)

명칭
zic - 타임 존 컴파일러

서식
zic [-Dsv] [-d directory] [-g group] [-L leapsecondfilename] [-l localtime] [-m mode] [-p posixrules] [-u user] [-y command] [filename ...]

해설
zic 유틸리티는 명령행으로 지정된 파일을 읽어내, 그 내용에 따라 시각 변환 정보의 파일을 작성합니다. filename 하지만 - (이었)였던 경우, 표준 입력으로부터 읽어들입니다.

이하의 옵션이 있습니다:

-D  자동적으로는 디렉토리를 작성하지 않습니다. 입력 파일이 출력처의 파일로서 아직 존재하고 있지 않는 디렉토리를 지정해 있었을 경우에는, 디폴트의 동작에서는 디렉토리의 작성을 시도합니다. -D 하지만 지정되었을 경우에는, zic (은)는 그렇게 하지 않고 즉석에서 에러로 합니다.

-d directory
    아래와 같은 표준 디렉토리가 아니고, 지정된 디렉토리에 시각 변환 정보 파일을 작성합니다.

-g group
    각각의 출력 파일을 작성한 후에, 파일의 그룹 오너를 지정되었다 group (이름이라도 숫자의 그룹 ID 에서도 상관하지 않습니다) (으)로 변경합니다.

-L leapsecondfilename
    지정된 이름의 파일로부터 윤초의 정보를 읽어들입니다. 이 옵션이 지정되지 않았던 경우, 출력 파일에는 윤초의 정보는 기록되지 않습니다.

-l timezone
    지정되었다 타임 존 (을)를 로컬의 시각에 사용합니다. zic 유틸리티는, 이하의 링크행이 입력 파일에 있었을 경우와 같게 일합니다.

        Link	timezone		localtime

    ( FreeBSD 그럼 로컬 타임 존은 /usr/share/zoneinfo/localtime (이)가 아니고 /etc/localtime 그리고 지정되므로, 이 액션은 어떤 효과도 가지지 않는 것에 주의해 주세요).

-m mode
    각각의 출력 파일을 작성한 후, 파일의 액세스권을 mode (으)로 변경합니다. 모드는 숫자와 알파벳의 어디라도 상관하지 않습니다 ( chmod(1) 참조).

-p timezone
    POSIX 형식의 타임 존의 환경 변수를 취급하는 경우에, 지정된 타임 존의 룰을 사용합니다. zic 유틸리티는, 이하의 링크행이 입력 파일에 있었을 경우와 같게 일합니다.

        Link timezone posixrules

-u user
    각각의 출력 파일을 작성한 후에, 파일의 오너를 지정되었다 user (이름이라도 숫자의 유저 ID 에서도 상관하지 않습니다) (으)로 변경합니다.

-v  데이터 파일중의 해가 time(3) 그리고 표현할 수 있는 해의 범위를 넘고 있었을 경우, 경고합니다.

-s  출력 파일에 기록될 때 각의 값을, 그것이 부호 첨부와 다루어질까 부호 없음과 다루어질까에 관계없이 같은 값이 되도록(듯이) 제한합니다. 이 옵션을 사용하는 것으로 SVVS 와 호환의 파일을 생성할 수 있습니다.

-y command
    해의 타입을 체크할 때에, yearistype 대신에 지정되었다 command (을)를 이용합니다(아래와 같이 참조).

입력의 각 행은 필드로부터 구성됩니다. 각 필드는 임의의 수의 공백 캐릭터에 의해 분리됩니다. 선행하는 공백이나, 줄 끝의 공백은 무시됩니다. 인용부호로 둘러싸이지 않은 우물 정자의 무늬 캐릭터 (#)로부터 그 행의 말미까지는 코멘트로서 다루어집니다. 공백 캐릭터나 우물 정자의 무늬 캐릭터를 필드의 일부로서 사용하는 경우는, 이중 인용부호 (")(으)로 둘러쌉니다. (코멘트를 없앤 후의) 공백행은 무시됩니다. 공백이 아닌 행은, 룰행, 존행, 링크행의 3 종류의 언젠가 이다고 보입니다.

룰행은,
    Rule	NAME	FROM	TO	TYPE	IN	ON		AT	SAVE	LETTER/S
이렇게 말하는 형식입니다. 예를 들면,
    Rule	US	1967	1973	-	Apr	lastSun	2:00	1:00	D

됩니다. 룰행을 구성하는 필드는 이하와 같습니다:

NAME
    이 룰이 속하는 룰의(임의의) 이름을 지정합니다.

FROM
    룰이 적용되는 최초의 해를 지정합니다. 어떤 정수의 해도 지정할 수 있습니다. 태양력을 가정하고 있습니다. 단어 minimum (혹은 그 단축형)(은)는, 정수로 나타낼 수 있는 최소의 해를 나타냅니다. 단어 maximum (혹은 그 단축형)(은)는, 정수로 나타낼 수 있는 최대의 해를 나타냅니다. 룰은, 시각의 값으로 해서 나타낼 수가 없는 시각을 정의합니다. 나타낼 수가 없는 시각은 무시됩니다. 이것에 의해, 시각의 값의 타입이 다른 호스트간에 룰을 공용할 수가 있습니다.

TO  룰이 적용되는 마지막 해를 지정합니다. minimum (이)나 maximum (상기)에 가세해 단어 only (혹은 그 단축형) (을)를, FROM 필드의 값을 가리키는 것으로서 사용할 수가 있습니다.

TYPE
    룰이 적용되는 해의 타입을 지정합니다. TYPE 하지만 - (이었)였던 경우, 룰은, FROM (으)로부터 TO 까지의 그 해를 포함한 모든 해에 적용됩니다. TYPE 하지만 그 이외였던 경우, zic (은)는, 명령 yearistype year type (을)를 실행해, 해의 타입을 체크합니다. 실행한 명령의 종료 스테이터스가 0 이었던 경우는, 그 해가 지정된 타입이며, 종료 스테이터스가 1 이었던 경우는, 그 해가 지정된 타입은 아니면 판단합니다.

IN  룰이 적용되는 달의 이름을 지정합니다. 월명은 단축형에서도 상관하지 않습니다.

ON  룰이 적용되는 날을 지정합니다. 지정할 수 있는 형식은 이하와 같습니다:

    5   그 달의 5 일
    lastSun
        그 달의 마지막 일요일
    lastMon
        그 달의 마지막 월요일
    Sun>=8
        8 일 이후의 최초의 일요일
    Sun<=25
        25 일 이전의 마지막 일요일

    요일은 단축형에서도, 풀 스펠에서도 상관하지 않습니다. 주의: ON 필드내에 스페이스를 포함해서는 안됩니다.

AT  룰이 적용될 때 각을 지정합니다. 지정할 수 있는 형식은 이하와 같습니다:

    2   시
    2:00
        때와 분
    15:00
        24 시간 형식의 시각 (정오 이후에 임해서)
    1:28:14
        시, 분 , 초

    여기서, 0 시는 하루의 시작의 심야를 의미해, 24시는 하루의 마지막의 심야를 의미합니다. 이러한 형식의 마지막에 ‘w’ (을)를 붙이면(자), 지정했을 때 각이 로컬의 “월 클락” (서머타임이 적용되는 지역에서, 로컬의 표준시에, 서머타임의 기간이면 그 수정을 더했을 때 각) (이어)여, ‘s’ (을)를 붙이면(자), 지정했을 때 각이 로컬의 “표준시” (이어)여, ‘u’ (혹은 ‘g’ 없고 ‘z’) (을)를 붙이면(자), 지정했을 때 각이 세계 표준시인 것을 나타냅니다. 이러한 캐릭터를 지정하고 있지 않는 경우는, 월 클락이 적용됩니다.

SAVE
    룰이 유효한 경우에 로컬의 표준시에 더해지는 양을 지정합니다. 이 필드의 형식은 AT 필드와 같습니다 (이 경우는, 말미에 ‘w’ (와)과 ‘s’ (을)를 지정하는 일은 할 수 없습니다).

LETTER/S
    룰이 유효한 경우에 타임 존의 단축형에 이용된다 “변화 부분” (예를 들면, “EST” (이)나 “EDT” 의 “S” (이)나 “D” ) (을)를 지정합니다. 이 필드가 - (이었)였던 경우, 변화 부분은 눌 (NULL)이 됩니다.

존행은,
    Zone	NAME	GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
이렇게 말하는 형식입니다. 예를 들면,
    Zone	Australia/Adelaide	9:30	Aus	CST	1971 Oct 31 2:00
됩니다. 존행을 구성하는 필드는 이하와 같습니다:

NAME
    타임 존의 명칭입니다. 그 존에 대할 때 각변환 정보 파일을 작성할 때의 이름이 됩니다.

GMTOFF
    그 존의 표준시를 얻을 때에 UTC 에 가산되는 양입니다. 이 필드의 형식은, 룰행의 AT 및 SAVE 필드와 같습니다. UTC 로부터 시각을 빼는 경우는, 필드의 최초로 마이너스를 붙입니다.

RULES/SAVE
    그 타임 존에 적용되는 룰의 이름, 혹은, 로컬의 표준시에 가산되는 양을 지정합니다. 이 필드가 - (이었)였던 경우, 그 타임 존에는 항상 표준시가 적용됩니다.

FORMAT
    그 타임 존으로 사용되는 타임 존의 단축형의 형식을 지정합니다. 캐릭터 라인 %s (은)는, 타임 존의 단축형으로 이용된다 “변화 부분” (을)를 나타냅니다. 한편, slash (/) 그리고 표준시의 단축형과 서머타임의 단축형을 지정하는 일도 할 수 있습니다.

UNTIL
    그 자리소에서 UTC 와의 차이 혹은 룰이 변화할 때 각을 지정합니다. 년, 월, 일, 시각을 이용해 지정할 수 있습니다. 이 필드가 지정되었을 경우, 그 때 각이 될 때까지는 주어진 UTC 와의 차이 및 룰로부터 타임 존의 정보가 생성됩니다. 월, 날, 시각은 룰의 IN, ON, AT 컬럼과 같은 형식입니다. 계속되는 컬럼은 생략 가능해, 부족한 컬럼은 가장 빠른 가능한 값이 디폴트가 됩니다.

    이 다음의 행은 “계속” 행이 아니면 안됩니다. 이 행은 최초의 “Zone” (와)과 NAME 필드가 없는 점을 제외해 존행과 동일한 형식에서, 그 전의 행의 UNTIL 필드에서 지정했을 때 각 이후의 정보를 지정합니다. 이 계속행에도 UNTIL 필드를 지정할 수가 있어 그 경우는, 다음의 행에 그 때 각 이후의 정보를 지정합니다.

링크행은,
    Link	LINK-FROM	LINK-TO
이렇게 말하는 형식입니다. 예를 들면,
    Link	Europe/Istanbul	Asia/Istanbul
됩니다. LINK-FROM 필드는, 존재하는 존행의 NAME 필드의 어느쪽이든일치하고 있지 않으면 안됩니다. LINK-TO 필드는 그 존에 대한 별명으로서 사용됩니다.

계속행 이외는, 입력중에서의 행의 차례로 제한은 없습니다.

윤초의 정의 파일의 각 행은 이하와 같은 형식이 됩니다:
    Leap	YEAR	MONTH	DAY	HH:MM:SS	CORR	R/S
예를 들면,
    Leap	1974	Dec	31	23:59:60	+	S
됩니다. YEAR, MONTH, DAY, HH:MM:SS 필드는, 윤초가 일어날 때 각을 지정합니다. CORR 필드는, 초가 더해지는 경우는 “+” 그리고, 초가 스킵 되는 경우는 “-” 됩니다. R/S 필드는 다른 필드에서 주어지는 윤초의 시각이 UTC 인 경우는, “Stationary” (또는 그 단축형)(으)로, 다른 필드에서 주어지는 윤초의 시각이 로컬의 월 클락이다 경우는, “Rolling” (또는 그 단축형)됩니다.

주
로컬 시각이 복수의 타입이 되는 지역에서는, 작성된 파일의 최초의 변화 시각을 올바르게 설정하기 위해서는, 최초의 변화 시각의 룰의 AT 필드에서 로컬의 표준시를 사용할 필요가 있습니다.

관련 파일
/usr/share/zoneinfo
    작성된 파일이 놓여지는 표준 디렉토리

관련 항목
ctime(3), tzfile(5), zdump(8)