Annotation of 42BSD/lib/libc/gen/timezone.c, revision 1.1.1.1

1.1       root        1: /* @(#)timezone.c      4.4 (Berkeley) 9/25/83 */
                      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: 
                     11: static struct zone {
                     12:        int     offset;
                     13:        char    *stdzone;
                     14:        char    *dlzone;
                     15: } zonetab[] = {
                     16:        -1*60, "MET", "MET DST",        /* Middle European */
                     17:        -2*60, "EET", "EET DST",        /* Eastern European */
                     18:        4*60, "AST", "ADT",             /* Atlantic */
                     19:        5*60, "EST", "EDT",             /* Eastern */
                     20:        6*60, "CST", "CDT",             /* Central */
                     21:        7*60, "MST", "MDT",             /* Mountain */
                     22:        8*60, "PST", "PDT",             /* Pacific */
                     23: #ifdef notdef
                     24:        /* there's no way to distinguish this from WET */
                     25:        0, "GMT", 0,                    /* Greenwich */
                     26: #endif
                     27:        0*60, "WET", "WET DST",         /* Western European */
                     28:        -10*60, "EST", "EST",           /* Aust: Eastern */
                     29:        -10*60+30, "CST", "CST",        /* Aust: Central */
                     30:        -8*60, "WST", 0,                /* Aust: Western */
                     31:        -1
                     32: };
                     33: 
                     34: char *timezone(zone, dst)
                     35: {
                     36:        register struct zone *zp;
                     37:        static char czone[10];
                     38:        char *sign;
                     39:        register char *p, *q;
                     40:        char *getenv(), *index();
                     41: 
                     42:        if (p = getenv("TZNAME")) {
                     43:                if (q = index(p, ',')) {
                     44:                        if (dst)
                     45:                                return(++q);
                     46:                        else {
                     47:                                *q = '\0';
                     48:                                strncpy(czone, p, sizeof(czone)-1);
                     49:                                czone[sizeof(czone)-1] = '\0';
                     50:                                *q = ',';
                     51:                                return (czone);
                     52:                        }
                     53:                }
                     54:                return(p);
                     55:        }
                     56:        for (zp=zonetab; zp->offset!=-1; zp++)
                     57:                if (zp->offset==zone) {
                     58:                        if (dst && zp->dlzone)
                     59:                                return(zp->dlzone);
                     60:                        if (!dst && zp->stdzone)
                     61:                                return(zp->stdzone);
                     62:                }
                     63:        if (zone<0) {
                     64:                zone = -zone;
                     65:                sign = "+";
                     66:        } else
                     67:                sign = "-";
                     68:        sprintf(czone, "GMT%s%d:%02d", sign, zone/60, zone%60);
                     69:        return(czone);
                     70: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.