|
|
1.1 root 1: /*
2: * Copyright (c) 1980 Regents of the University of California.
3: * All rights reserved. The Berkeley software License Agreement
4: * specifies the terms and conditions for redistribution.
5: */
6:
7: #if defined(LIBC_SCCS) && !defined(lint)
8: static char sccsid[] = "@(#)timezone.c 5.2 (Berkeley) 3/9/86";
9: #endif LIBC_SCCS and not lint
10:
11: /*
12: * The arguments are the number of minutes of time
13: * you are westward from Greenwich and whether DST is in effect.
14: * It returns a string
15: * giving the name of the local timezone.
16: *
17: * Sorry, I don't know all the names.
18: */
19:
20: static struct zone {
21: int offset;
22: char *stdzone;
23: char *dlzone;
24: } zonetab[] = {
25: -1*60, "MET", "MET DST", /* Middle European */
26: -2*60, "EET", "EET DST", /* Eastern European */
27: 4*60, "AST", "ADT", /* Atlantic */
28: 5*60, "EST", "EDT", /* Eastern */
29: 6*60, "CST", "CDT", /* Central */
30: 7*60, "MST", "MDT", /* Mountain */
31: 8*60, "PST", "PDT", /* Pacific */
32: #ifdef notdef
33: /* there's no way to distinguish this from WET */
34: 0, "GMT", 0, /* Greenwich */
35: #endif
36: 0*60, "WET", "WET DST", /* Western European */
37: -10*60, "EST", "EST", /* Aust: Eastern */
38: -10*60+30, "CST", "CST", /* Aust: Central */
39: -8*60, "WST", 0, /* Aust: Western */
40: -1
41: };
42:
43: char *timezone(zone, dst)
44: {
45: register struct zone *zp;
46: static char czone[10];
47: char *sign;
48: register char *p, *q;
49: char *getenv(), *index();
50:
51: if (p = getenv("TZNAME")) {
52: if (q = index(p, ',')) {
53: if (dst)
54: return(++q);
55: else {
56: *q = '\0';
57: strncpy(czone, p, sizeof(czone)-1);
58: czone[sizeof(czone)-1] = '\0';
59: *q = ',';
60: return (czone);
61: }
62: }
63: return(p);
64: }
65: for (zp=zonetab; zp->offset!=-1; zp++)
66: if (zp->offset==zone) {
67: if (dst && zp->dlzone)
68: return(zp->dlzone);
69: if (!dst && zp->stdzone)
70: return(zp->stdzone);
71: }
72: if (zone<0) {
73: zone = -zone;
74: sign = "+";
75: } else
76: sign = "-";
77: sprintf(czone, "GMT%s%d:%02d", sign, zone/60, zone%60);
78: return(czone);
79: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.