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: }

Defined functions

Defined variables

sccsid defined in line 8; never used
zonetab defined in line 24; used 1 times
  • in line 65

Defined struct's

zone defined in line 20; used 2 times
  • in line 45(2)
Last modified: 1986-03-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 1028
Valid CSS Valid XHTML 1.0 Strict