Y2K
上传用户:ycwykj01
上传日期:2007-01-04
资源大小:1819k
文件大小:5k
源码类别:

网络编程

开发平台:

Unix_Linux

  1. QUESTION: Is c-client Y2K compliant?
  2. ANSWER:
  3.      There are no known Y2K issues in c-client; nor have there ever
  4. been any known Y2K issues in c-client from its inception.
  5.      You may wish to read the document calendar.txt for more
  6. information about the Y4K, Y20K, and Y45K issues.  Assuming that
  7. c-client is still around in 2000-43,000 years, someone will have to
  8. deal with these.
  9.      Within the plausible lifetimes of people today, there are three
  10. known date-related issues in c-client which will have to be addressed
  11. in the future.  If I am still alive when the first problem hits, I
  12. will be nearly 82 years old, and won't be maintaining c-client any
  13. more.
  14. Y2038:
  15.      c-client, like most UNIX software, has Y2038 issues.  On Tuesday,
  16. January 19, 2038 at 03:14:08 Coordinated Universal Time (also known as
  17. UTC, UT, or historically GMT), the clock on 32-bit UNIX systems will
  18. wrap around to a negative number; that is, from 0x7fffffff to
  19. 0x80000000.
  20.      c-client uses an unsigned long for its 32-bit time; however the C
  21. library on most UNIX systems uses a signed long and will interpret
  22. that time as being Friday, December 13, 1901 at 20:45:52 UTC.
  23.      Fixing this problem will require changing the C library to use
  24. either unsigned longs or a wider (e.g. 64-bit) value for time.  Lots
  25. of work will need to be done on 32-bit UNIX systems as 2038
  26. approaches.  History suggests that most of the work will be done in
  27. the autumn of 2037... ;-) It's not known if anything is necessary to
  28. do to c-client other than just rebuild it with the new C library.
  29.      Going to 32-bit unsigned longs means that there will be a Y2106
  30. bug that someone will have to fix.  Hopefully nobody will even think
  31. of using 32-bit systems by then.
  32. Y2070:
  33.      c-client assumes that 2-digit years with values of 70 or greater
  34. are in the 20th century, and that 2-digit years with values of 69 or
  35. less are in the 21st century.  Time for UNIX began on January 1, 1970
  36. and email on ARPAnet happened between the first TENEX systems shortly
  37. after that; consequently there is no ambiguity with email data with
  38. 2-digit years prior to the year 2070.  This is used only when parsing
  39. a 2-digit year.  c-client never generates one.
  40.      Fixing this problem requires convincing people not to use 2-digit
  41. years.  This is a lesson that people should have figured out 70 years
  42. earlier with Y2K.  Consequently, this may be a "non-problem."
  43. Otherwise, look in mail_parse_date() for the comment "two digit year"
  44. and change the statement as desired.  [Note: do not change the
  45. definition of BASEYEAR since the UNIX port assumes that this matches
  46. when time began in the operating system.]
  47. Y2098:
  48.      On January 1, 2098, the year in per-message internal dates will
  49. expire, since a 7-bit field is allocated for the year.  c-client will
  50. mistakenly think that the day is January 1, 1970.
  51.      Fortunately, it is easy to fix this problem.  Just increase the
  52. width of "year" in MESSAGECACHE in mail.h.  If you make it 8 bits,
  53. it'll be good until January 1, 2216; 9 bits makes it good until 2482.
  54. 10 bits will push it back that you'd worry about the Y2800 question
  55. before having to increase it again.  If you ignore Y2800, 11 bits will
  56. push it it back to having to worry about Y4K first.
  57. Y2800:
  58.      At this year, you will need to decide whether to keep the Gregorian
  59. calendar, which is one day slow every 20,000 years, or go to the more
  60. accurate Eastern Orthodox calendar which is one day slow every 45,000
  61. years.  The Gregorian and Eastern Orthodox calendars diverge at this
  62. year.
  63.      There hasn't been any statement about how the international
  64. community will deal with the situation of the Orthodox calendar being
  65. one day ahead of the Gregorian calendar between 2800 and 2900.  This
  66. will happen again between 3200 and 3300, and at gradually increasing
  67. intervals until 48,300 when the shift becomes permanent (assuming no
  68. Y20K or Y45K fixes).
  69.      If you wish to make the transition to the Eastern Orthodox calendar,
  70. rebuild c-client with -DUSEORTHODOXCALENDAR=1.  You can then ignore Y4K
  71. and Y20K!
  72.     
  73. Y4K:
  74.      A little-known rule in the Gregorian calendar is that years that
  75. are evenly divisible by 4000 are not leap years.  Unlike the other
  76. rules, this rule hasn't had effect yet, and won't for another 2000 years.
  77.      To fix the Y4K problem, just rebuild c-client with -DY4KBUGFIX=1.
  78. Y20K:
  79.      Those of you who stuck with the Gregorian calendar have a
  80. problem; the calendar is now one day slow.  The Pope has not made any
  81. statement about how this problem will be fixed.  Maybe they'll declare
  82. that 20,004 is also not a leap year or something.
  83.      There is no fix for this problem in c-client.
  84. Y45K:
  85.      Greeks, Serbs, Russians, and other Eastern Orthodox have spent
  86. the past 41,000 years laughing at westerners' increasingly futile
  87. efforts to keep the Gregorian calendar in order.  The day of reckoning
  88. has come; the Orthodox calendar is now one day slow.  The Patriarch of
  89. Istanbul (nee Constaninople) has not made any statement about how this
  90. will be fixed.
  91.      There is no fix for this problem in c-client.