brian 98/05/05 19:32:20
Modified: src CHANGES util.c Log: PR: 754 Submitted by: Paul Eggert <[EMAIL PROTECTED]> *) Fix handling of %Z in timefmt strings for those platforms with no time zone information in their tm struct. Revision Changes Path 1.306 +4 -0 apache-1.2/src/CHANGES Index: CHANGES =================================================================== RCS file: /export/home/cvs/apache-1.2/src/CHANGES,v retrieving revision 1.305 retrieving revision 1.306 diff -u -r1.305 -r1.306 --- CHANGES 1998/04/01 11:48:11 1.305 +++ CHANGES 1998/05/06 02:32:19 1.306 @@ -1,5 +1,9 @@ Changes with Apache 1.2.7 + *) Fix handling of %Z in timefmt strings for those platforms with no time + zone information in their tm struct. [Paul Eggert <[EMAIL PROTECTED]>] + PR #754 + *) Fix a typo in url parsing code that could cause it to read past end of buffer. [Patrick Bihan-Faou <[EMAIL PROTECTED]>] PR#2019 1.57 +34 -0 apache-1.2/src/util.c Index: util.c =================================================================== RCS file: /export/home/cvs/apache-1.2/src/util.c,v retrieving revision 1.56 retrieving revision 1.57 diff -u -r1.56 -r1.57 --- util.c 1998/04/13 11:45:49 1.56 +++ util.c 1998/05/06 02:32:19 1.57 @@ -82,9 +82,43 @@ char *ht_time(pool *p, time_t t, const char *fmt, int gmt) { char ts[MAX_STRING_LEN]; + char tf[MAX_STRING_LEN]; struct tm *tms; tms = (gmt ? gmtime(&t) : localtime(&t)); + if(gmt) { + /* Convert %Z to "GMT" and %z to "+0000"; + * on hosts that do not have a time zone string in struct tm, + * strftime must assume its argument is local time. + */ + const char *f; + char *p; + for(p = tf, f = fmt; p < tf + sizeof tf - 5 && (*p = *f); f++, p++) { + if(*f == '%') + switch(f[1]) + { + case '%': + *++p = *++f; + break; + case 'Z': + *p++ = 'G'; + *p++ = 'M'; + *p = 'T'; + f++; + break; + case 'z': /* common extension */ + *p++ = '+'; + *p++ = '0'; + *p++ = '0'; + *p++ = '0'; + *p = '0'; + f++; + break; + } + } + *p = '\0'; + fmt = tf; + } /* check return code? */ strftime(ts,MAX_STRING_LEN,fmt,tms);