home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #1 / NN_1993_1.iso / spool / fj / os / 386bsd / 230 next >
Encoding:
Text File  |  1993-01-04  |  3.9 KB  |  125 lines

  1. Newsgroups: fj.os.386bsd
  2. Path: sparky!uunet!ccut!news.u-tokyo.ac.jp!wnoc-tyo-news!sh.wide!wnoc-kyo!kuis!kudpc!nucc!nitgw!aizu
  3. From: aizu@orient.center.nitech.ac.jp (Hiroyuki Aizu)
  4. Subject: Re: Fix for the date bug 1993.
  5. In-Reply-To: mhiroshi@tansei.cc.u-tokyo.ac.jp's message of 2 Jan 93 06:46:18 GMT
  6. Message-ID: <AIZU.93Jan4221731@orient.center.nitech.ac.jp>
  7. Sender: news@nitgw.elcom.nitech.ac.jp
  8. Organization: Nagoya Institute of Technology, Nagoya, Japan
  9. References: <3811@tansei1.tansei.cc.u-tokyo.ac.jp>
  10. Distribution: fj
  11. Date: Mon, 4 Jan 1993 13:17:34 GMT
  12. Lines: 111
  13.  
  14. $@2qDE!wL>9)Bg$G$9!#(J
  15.  
  16. In article <3811@tansei1.tansei.cc.u-tokyo.ac.jp> mhiroshi@tansei.cc.u-tokyo.ac.jp (H. Murakami) writes:
  17.  
  18.    >$@1<G/4XO"$N%"%k%4%j%:%`$N8m$j$K$h$j(J1993$@G/$+$i;~7W$NF|IU$,68$&(J .
  19.    >$@0J2<$N(J $@%P%0(JFIX patch $@$r(J i386/isa/clock.c  $@$KEv$F$F$/$@$5$$(J.
  20.    >
  21.    >(PC98$@HG$O$I$&$@$m$&(J?)
  22.  
  23. PC98$@HG$b(J$@%P%0$C$F$^$7$?!#(J
  24. 98$@HGMQ$K%Q%C%A$r$D$/$C$F$_$^$7$?!#(J
  25. $@$3$N%Q%C%A$O(J Andrew Chernov$@;a$N%Q%C%A$r4^$s$G$$$^(J$@$9!#(J
  26.  
  27. BEGIN--cut here--cut here---------------------------------------------------
  28. *** clock.c.original    Mon Jan  4 18:43:36 1993
  29. --- clock.c    Mon Jan  4 20:43:13 1993
  30. ***************
  31. *** 60,65 ****
  32. --- 60,67 ----
  33.   #define DAYST 119
  34.   #define DAYEN 303
  35.   
  36. + #define isleap(y) (((y) % 4) == 0 && ((y) % 100) != 0 || ((y) % 400) == 0)
  37.   startrtclock() {
  38.       int s;
  39.   
  40. ***************
  41. *** 113,121 ****
  42.       int i;
  43.       unsigned long ret;
  44.   
  45. !     ret = 0; y = y - 70;
  46. !     for(i=0;i<y;i++) {
  47. !         if (i % 4) ret += 365*24*60*60;
  48.           else ret += 366*24*60*60;
  49.       }
  50.       return ret;
  51. --- 115,123 ----
  52.       int i;
  53.       unsigned long ret;
  54.   
  55. !     ret = 0;
  56. !     for(i=1970;i<y;i++) {
  57. !         if (!isleap(i)) ret += 365*24*60*60;
  58.           else ret += 366*24*60*60;
  59.       }
  60.       return ret;
  61. ***************
  62. *** 225,237 ****
  63.   
  64.        year = bcd(rtc_inb()&0xff);    /* year */
  65.   
  66. !     leap = !(year % 4); sec = ytos(year); /* year */
  67.       yd = mtos(month,leap); sec += yd;    /* month */
  68.       t = date * 24*60*60; sec += t; yd += t;    /* date */
  69.       sec += hour * 60*60;        /* hour */
  70.       sec += min  * 60;        /* minutes */
  71.       sec += second;            /* seconds */
  72. -     sec -= 24*60*60;    /* XXX why ??? */
  73.   
  74.   /*printf("DATE %2d/%2d/%2d (%2d) %2d:%2d:%2d JST\n",
  75.       year, month, date+1, day_week, hour, min, second );*/
  76. --- 227,239 ----
  77.   
  78.        year = bcd(rtc_inb()&0xff);    /* year */
  79.   
  80. !     t = year + 1900;
  81. !     leap = isleap(t); sec = ytos(t);
  82.       yd = mtos(month,leap); sec += yd;    /* month */
  83.       t = date * 24*60*60; sec += t; yd += t;    /* date */
  84.       sec += hour * 60*60;        /* hour */
  85.       sec += min  * 60;        /* minutes */
  86.       sec += second;            /* seconds */
  87.   
  88.   /*printf("DATE %2d/%2d/%2d (%2d) %2d:%2d:%2d JST\n",
  89.       year, month, date+1, day_week, hour, min, second );*/
  90. ***************
  91. *** 245,252 ****
  92.       while ((sa&RTCSA_TUP) == RTCSA_TUP)
  93.           sa = rtcin(RTC_STATUSA);
  94.   
  95. !     sec = bcd(rtcin(RTC_YEAR));
  96. !     leap = !(sec % 4); sec += ytos(sec); /* year    */
  97.       yd = mtos(bcd(rtcin(RTC_MONTH)),leap); sec += yd;    /* month   */
  98.       t = (bcd(rtcin(RTC_DAY))-1) * 24*60*60; sec += t; yd += t; /* date    */
  99.       day_week = rtcin(RTC_WDAY);                /* day     */
  100. --- 247,254 ----
  101.       while ((sa&RTCSA_TUP) == RTCSA_TUP)
  102.           sa = rtcin(RTC_STATUSA);
  103.   
  104. !     t = bcd(rtcin(RTC_YEAR)) + 1900;
  105. !     leap = isleap(t); sec = ytos(t); /* year    */
  106.       yd = mtos(bcd(rtcin(RTC_MONTH)),leap); sec += yd;    /* month   */
  107.       t = (bcd(rtcin(RTC_DAY))-1) * 24*60*60; sec += t; yd += t; /* date    */
  108.       day_week = rtcin(RTC_WDAY);                /* day     */
  109. ***************
  110. *** 253,259 ****
  111.       sec += bcd(rtcin(RTC_HRS)) * 60*60;            /* hour    */
  112.       sec += bcd(rtcin(RTC_MIN)) * 60;            /* minutes */
  113.       sec += bcd(rtcin(RTC_SEC));                /* seconds */
  114. -     sec -= 24*60*60; /* XXX why ??? */
  115.   #endif
  116.   
  117.   #ifdef notdef
  118. --- 255,260 ----
  119. BEGIN--cut here--cut here---------------------------------------------------
  120.  
  121. --
  122.                                 $@2qDE!wL>9)(J$@Bg(J
  123.                                 aizu@orient.center.nitech.ac.jp
  124.