Merge from vendor branch BIND:
[dragonfly.git] / lib / libc / gen / tzset.3
1 .\" Copyright (c) 1989, 1991, 1993
2 .\"     The Regents of the University of California.  All rights reserved.
3 .\"
4 .\" This code is derived from software contributed to Berkeley by
5 .\" Arthur Olson.
6 .\"
7 .\" Redistribution and use in source and binary forms, with or without
8 .\" modification, are permitted provided that the following conditions
9 .\" are met:
10 .\" 1. Redistributions of source code must retain the above copyright
11 .\"    notice, this list of conditions and the following disclaimer.
12 .\" 2. Redistributions in binary form must reproduce the above copyright
13 .\"    notice, this list of conditions and the following disclaimer in the
14 .\"    documentation and/or other materials provided with the distribution.
15 .\" 3. All advertising materials mentioning features or use of this software
16 .\"    must display the following acknowledgement:
17 .\"     This product includes software developed by the University of
18 .\"     California, Berkeley and its contributors.
19 .\" 4. Neither the name of the University nor the names of its contributors
20 .\"    may be used to endorse or promote products derived from this software
21 .\"    without specific prior written permission.
22 .\"
23 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33 .\" SUCH DAMAGE.
34 .\"
35 .\"     @(#)tzset.3     8.2 (Berkeley) 11/17/93
36 .\" $FreeBSD: src/lib/libc/gen/tzset.3,v 1.6.2.5 2001/12/14 18:33:51 ru Exp $
37 .\" $DragonFly: src/lib/libc/gen/tzset.3,v 1.3 2006/04/08 08:17:06 swildner Exp $
38 .\"
39 .Dd November 17, 1993
40 .Dt TZSET 3
41 .Os
42 .Sh NAME
43 .Nm tzset ,
44 .Nm tzsetwall
45 .Nd initialize time conversion information
46 .Sh LIBRARY
47 .Lb libc
48 .Sh SYNOPSIS
49 .In time.h
50 .Ft void
51 .Fn tzset void
52 .Ft void
53 .Fn tzsetwall void
54 .Sh DESCRIPTION
55 The
56 .Fn tzset
57 function
58 initializes time conversion information used by the library routine
59 .Xr localtime 3 .
60 The environment variable
61 .Ev TZ
62 specifies how this is done.
63 .Pp
64 If
65 .Ev TZ
66 does not appear in the environment, the best available approximation to
67 local wall clock time, as specified by the
68 .Xr tzfile 5 Ns -format
69 file
70 .Pa /etc/localtime
71 is used.
72 .Pp
73 If
74 .Ev TZ
75 appears in the environment but its value is a null string, Coordinated
76 Universal Time
77 .Pq Tn UTC
78 is used (without leap second correction).
79 .Pp
80 If
81 .Ev TZ
82 appears in the environment and its value begins with a colon
83 .Pq Ql \&: ,
84 the rest of its value is used as a pathname of a
85 .Xr tzfile 5 Ns -format
86 file from which to read the time conversion information.
87 If the first character of the pathname is a slash
88 .Pq Ql /
89 it is used as
90 an absolute pathname; otherwise, it is used as a pathname relative to
91 the system time conversion information directory.
92 .Pp
93 If its value does not begin with a colon, it is first used as the pathname
94 of a file (as described above) from which to read the time conversion
95 information.
96 If that file cannot be read, the value is then interpreted as a direct
97 specification (the format is described below) of the time conversion
98 information.
99 .Pp
100 If the
101 .Ev TZ
102 environment variable does not specify a
103 .Xr tzfile 5 Ns -format
104 file and cannot be interpreted as a direct specification,
105 .Tn UTC
106 is used.
107 .Pp
108 The
109 .Fn tzsetwall
110 function
111 sets things up so that
112 .Xr localtime 3
113 returns the best available approximation of local wall clock time.
114 .Sh SPECIFICATION FORMAT
115 When
116 .Ev TZ
117 is used directly as a specification of the time conversion information,
118 it must have the following syntax (spaces inserted for clarity):
119 .Bd -ragged -offset indent
120 .Em std offset
121 .Bo
122 .Em dst
123 .Bq Em offset
124 .Bq , Em rule
125 .Bc
126 .Ed
127 .Pp
128 Where:
129 .Bl -tag -width std_and_dst -offset indent
130 .It Em std No and Em dst
131 Three or more bytes that are the designation for the standard
132 .Pq Em std
133 or summer
134 .Pq Em dst
135 time zone.  Only
136 .Em std
137 is required; if
138 .Em dst
139 is missing, then summer time does not apply in this locale.
140 Upper and lowercase letters are explicitly allowed.  Any characters
141 except a leading colon
142 .Pq Ql \&: ,
143 digits, comma
144 .Pq Ql \&, ,
145 minus
146 .Pq Ql \- ,
147 plus
148 .Pq Ql + ,
149 and
150 .Tn ASCII
151 .Dv NUL
152 are allowed.
153 .It Em offset
154 Indicates the value one must add to the local time to arrive at
155 Coordinated Universal Time.  The
156 .Em offset
157 has the form:
158 .Bd -ragged -offset indent
159 .Sm off
160 .Em hh Bo
161 .Em : mm
162 .Bq Em : ss
163 .Bc
164 .Sm on
165 .Ed
166 .Pp
167 The minutes
168 .Pq Em mm
169 and seconds
170 .Pq Em ss
171 are optional.  The hour
172 .Pq Em hh
173 is required and may be a single digit.  The
174 .Em offset
175 following
176 .Em std
177 is required.  If no
178 .Em offset
179 follows
180 .Em dst ,
181 summer time is assumed to be one hour ahead of standard time.  One or
182 more digits may be used; the value is always interpreted as a decimal
183 number.  The hour must be between zero and 24, and the minutes (and
184 seconds) \(em if present \(em between zero and 59.  If preceded by a
185 .Pq Ql \-
186 the time zone shall be east of the Prime Meridian; otherwise it shall be
187 west (which may be indicated by an optional preceding
188 .Pq Ql + ) .
189 .It Em rule
190 Indicates when to change to and back from summer time.  The
191 .Em rule
192 has the form:
193 .Bd -ragged -offset indent
194 .Em date/time,date/time
195 .Ed
196 .Pp
197 where the first
198 .Em date
199 describes when the change from standard to summer time occurs and the
200 second
201 .Em date
202 describes when the change back happens.  Each
203 .Em time
204 field describes when, in current local time, the change to the other
205 time is made.
206 .Pp
207 The format of
208 .Em date
209 is one of the following:
210 .Bl -tag -width "M.m.n.d"
211 .It Sy J Em n
212 The Julian day
213 .Em n
214 (1 \*(Le
215 .Em n
216 \*(Le 365).
217 Leap days are not counted; that is, in all years \(em including leap
218 years \(em February 28 is day 59 and March 1 is day 60.  It is
219 impossible to explicitly refer to the occasional February 29.
220 .It Em n
221 The zero-based Julian day
222 (0 \*(Le
223 .Em n
224 \*(Le 365 ) .
225 Leap days are counted, and it is possible to refer to February 29.
226 .It Sy M  Em m.n.d
227 The
228 .Em d Ns 'th
229 day (0 \*(Le
230 .Em d
231 \*(Le 6)
232 of week
233 .Em n
234 of month
235 .Em m
236 of the year
237 (1 \*(Le
238 .Em n
239 \*(Le 5),
240 (1 \*(Le
241 .Em m
242 \*(Le 12),
243 where week 5 means
244 .Do
245 the last
246 .Em d
247 day in month
248 .Em m
249 .Dc
250 which may occur in either the fourth or the fifth week).  Week 1 is the
251 first week in which the
252 .Em d Ns 'th
253 day occurs.  Day zero is Sunday.
254 .Pp
255 The
256 .Em time
257 has the same format as
258 .Em offset
259 except that no leading sign
260 .Pq Ql \-
261 or
262 .Pq Ql +
263 is allowed.  The default, if
264 .Em time
265 is not given, is
266 .Sy 02:00:00 .
267 .El
268 .Pp
269 If no
270 .Em rule
271 is present in the
272 .Ev TZ
273 specification, the rules specified
274 by the
275 .Xr tzfile 5 Ns -format
276 file
277 .Em posixrules
278 in the system time conversion information directory are used, with the
279 standard and summer time offsets from
280 .Tn UTC
281 replaced by those specified by
282 the
283 .Em offset
284 values in
285 .Ev TZ .
286 .El
287 .Pp
288 For compatibility with System V Release 3.1, a semicolon
289 .Pq Ql \&;
290 may be used to separate the
291 .Em rule
292 from the rest of the specification.
293 .Sh FILES
294 .Bl -tag -width /usr/share/zoneinfo/posixrules -compact
295 .It Pa /etc/localtime
296 local time zone file
297 .It Pa /usr/share/zoneinfo
298 time zone directory
299 .It Pa /usr/share/zoneinfo/posixrules
300 rules for
301 .Tn POSIX Ns -style
302 .Tn TZ Ns 's
303 .It Pa /usr/share/zoneinfo/GMT
304 for
305 .Tn UTC
306 leap seconds
307 .El
308 .Pp
309 If the file
310 .Pa /usr/share/zoneinfo/GMT
311 does not exist,
312 .Tn UTC
313 leap seconds are loaded from
314 .Pa /usr/share/zoneinfo/posixrules .
315 .Sh SEE ALSO
316 .Xr date 1 ,
317 .Xr gettimeofday 2 ,
318 .Xr ctime 3 ,
319 .Xr getenv 3 ,
320 .Xr time 3 ,
321 .Xr tzfile 5
322 .Sh HISTORY
323 The
324 .Fn tzset
325 and
326 .Fn tzsetwall
327 functions first appeared in
328 .Bx 4.4 .