rfc822_mkdate.c
上传用户:s81996212
上传日期:2007-01-04
资源大小:722k
文件大小:1k
源码类别:

WEB邮件程序

开发平台:

C/C++

  1. /*
  2. ** Copyright 1998 - 1999 Double Precision, Inc.
  3. ** See COPYING for distribution information.
  4. */
  5. /*
  6. ** $Id: rfc822_mkdate.c,v 1.3 1999/12/06 13:29:49 mrsam Exp $
  7. */
  8. #include "rfc822.h"
  9. #include <sys/types.h>
  10. #include <time.h>
  11. #include <stdio.h>
  12. #include <string.h>
  13. #if HAVE_UNISTD_H
  14. #include <unistd.h>
  15. #endif
  16. static const char * const months[]={
  17. "Jan",
  18. "Feb",
  19. "Mar",
  20. "Apr",
  21. "May",
  22. "Jun",
  23. "Jul",
  24. "Aug",
  25. "Sep",
  26. "Oct",
  27. "Nov",
  28. "Dec"};
  29. static const char * const wdays[]={
  30. "Sun",
  31. "Mon",
  32. "Tue",
  33. "Wed",
  34. "Thu",
  35. "Fri",
  36. "Sat"};
  37. void rfc822_mkdate_buf(time_t t, char *buf)
  38. {
  39. struct tm *p;
  40. int offset;
  41. #if USE_TIME_ALTZONE
  42. p=localtime(&t);
  43. offset= -timezone;
  44. if (p->tm_isdst > 0)
  45. offset= -altzone;
  46. if (offset % 60)
  47. {
  48. offset=0;
  49. p=gmtime(&t);
  50. }
  51. offset /= 60;
  52. #else
  53. #if USE_TIME_DAYLIGHT
  54. p=localtime(&t);
  55. offset= -timezone;
  56. if (p->tm_isdst > 0)
  57. offset += 60*60;
  58. if (offset % 60)
  59. {
  60. offset=0;
  61. p=gmtime(&t);
  62. }
  63. offset /= 60;
  64. #else
  65. #if USE_TIME_GMTOFF
  66. p=localtime(&t);
  67. offset= p->tm_gmtoff;
  68. if (offset % 60)
  69. {
  70. offset=0;
  71. p=gmtime(&t);
  72. }
  73. offset /= 60;
  74. #else
  75. p=gmtime(&t);
  76. offset=0;
  77. #endif
  78. #endif
  79. #endif
  80. offset = (offset % 60) + offset / 60 * 100;
  81. sprintf(buf, "%s, %02d %s %04d %02d:%02d:%02d %+05d",
  82. wdays[p->tm_wday],
  83. p->tm_mday,
  84. months[p->tm_mon],
  85. p->tm_year+1900,
  86. p->tm_hour,
  87. p->tm_min,
  88. p->tm_sec,
  89. offset);
  90. }
  91. const char *rfc822_mkdate(time_t t)
  92. {
  93. static char buf[50];
  94. rfc822_mkdate_buf(t, buf);
  95. return (buf);
  96. }