fix () and sizeof errors
[unix-history] / usr / src / lib / libc / gen / timezone.c
CommitLineData
9d342dd9
BJ
1/* @(#)timezone.c 4.1 (Berkeley) %G% */
2/*
3 * The arguments are the number of minutes of time
4 * you are westward from Greenwich and whether DST is in effect.
5 * It returns a string
6 * giving the name of the local timezone.
7 *
8 * Sorry, I don't know all the names.
9 */
10
11static struct zone {
12 int offset;
13 char *stdzone;
14 char *dlzone;
15} zonetab[] = {
16 4*60, "AST", "ADT", /* Atlantic */
17 5*60, "EST", "EDT", /* Eastern */
18 6*60, "CST", "CDT", /* Central */
19 7*60, "MST", "MDT", /* Mountain */
20 8*60, "PST", "PDT", /* Pacific */
21 0, "GMT", 0, /* Greenwich */
22 -1
23};
24
25char *timezone(zone, dst)
26{
27 register struct zone *zp;
28 static char czone[10];
29 char *sign;
30
31 for (zp=zonetab; zp->offset!=-1; zp++)
32 if (zp->offset==zone) {
33 if (dst && zp->dlzone)
34 return(zp->dlzone);
35 if (!dst && zp->stdzone)
36 return(zp->stdzone);
37 }
38 if (zone<0) {
39 zone = -zone;
40 sign = "+";
41 } else
42 sign = "-";
43 sprintf(czone, "GMT%s%d:%02d", sign, zone/60, zone%60);
44 return(czone);
45}