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