rfc822_mkdate.c
上传用户:s81996212
上传日期:2007-01-04
资源大小:722k
文件大小:1k
- /*
- ** Copyright 1998 - 1999 Double Precision, Inc.
- ** See COPYING for distribution information.
- */
- /*
- ** $Id: rfc822_mkdate.c,v 1.3 1999/12/06 13:29:49 mrsam Exp $
- */
- #include "rfc822.h"
- #include <sys/types.h>
- #include <time.h>
- #include <stdio.h>
- #include <string.h>
- #if HAVE_UNISTD_H
- #include <unistd.h>
- #endif
- static const char * const months[]={
- "Jan",
- "Feb",
- "Mar",
- "Apr",
- "May",
- "Jun",
- "Jul",
- "Aug",
- "Sep",
- "Oct",
- "Nov",
- "Dec"};
- static const char * const wdays[]={
- "Sun",
- "Mon",
- "Tue",
- "Wed",
- "Thu",
- "Fri",
- "Sat"};
- void rfc822_mkdate_buf(time_t t, char *buf)
- {
- struct tm *p;
- int offset;
- #if USE_TIME_ALTZONE
- p=localtime(&t);
- offset= -timezone;
- if (p->tm_isdst > 0)
- offset= -altzone;
- if (offset % 60)
- {
- offset=0;
- p=gmtime(&t);
- }
- offset /= 60;
- #else
- #if USE_TIME_DAYLIGHT
- p=localtime(&t);
- offset= -timezone;
- if (p->tm_isdst > 0)
- offset += 60*60;
- if (offset % 60)
- {
- offset=0;
- p=gmtime(&t);
- }
- offset /= 60;
- #else
- #if USE_TIME_GMTOFF
- p=localtime(&t);
- offset= p->tm_gmtoff;
- if (offset % 60)
- {
- offset=0;
- p=gmtime(&t);
- }
- offset /= 60;
- #else
- p=gmtime(&t);
- offset=0;
- #endif
- #endif
- #endif
- offset = (offset % 60) + offset / 60 * 100;
- sprintf(buf, "%s, %02d %s %04d %02d:%02d:%02d %+05d",
- wdays[p->tm_wday],
- p->tm_mday,
- months[p->tm_mon],
- p->tm_year+1900,
- p->tm_hour,
- p->tm_min,
- p->tm_sec,
- offset);
- }
- const char *rfc822_mkdate(time_t t)
- {
- static char buf[50];
- rfc822_mkdate_buf(t, buf);
- return (buf);
- }