MH-6.8.4-JP-3.03 に関する新情報 [更新: 14Jan2000] | ||
こちらで確認したもの/してないもの…色々混ざってます。 | ||
[04Jan2000] Y2K:-)問題 | ||
[解決]
日付が年号下2桁で書かれているメールが正しく認識されませんでした。
オリジナルの MH 自身の bug です。JP-3.03 だけでなく、JP の有無に関わらず、
全ての MH が該当します。
sendmail や sshd などと同様に、70〜99が 1900年代、00〜69が 2000年代と
認識するようにしました。(Thanks to 黒江@DNPさん・山崎@NESさん)--- zotnet/tws/dtime.c.orig Tue Feb 9 20:30:00 1999 +++ zotnet/tws/dtime.c Tue Jan 4 20:46:46 2000 @@ -170,7 +170,7 @@ tw.tw_hour = tm -> tm_hour; tw.tw_mday = tm -> tm_mday; tw.tw_mon = tm -> tm_mon; - tw.tw_year = tm -> tm_year + CENTURY; + tw.tw_year = tm -> tm_year + 1900; tw.tw_wday = tm -> tm_wday; tw.tw_yday = tm -> tm_yday; if (tm -> tm_isdst) @@ -212,7 +212,7 @@ tw.tw_hour = tm -> tm_hour; tw.tw_mday = tm -> tm_mday; tw.tw_mon = tm -> tm_mon; - tw.tw_year = tm -> tm_year + CENTURY; + tw.tw_year = tm -> tm_year + 1900; tw.tw_wday = tm -> tm_wday; tw.tw_yday = tm -> tm_yday; if (tm -> tm_isdst) @@ -370,12 +370,14 @@ || (min = tw -> tw_min) < 0 || min > 59 || (hour = tw -> tw_hour) < 0 || hour > 23 || (mday = tw -> tw_mday) < 1 || mday > 31 - || (mon = tw -> tw_mon + 1) < 1 || mon > 12) + || (mon = tw -> tw_mon + 1) < 1 || mon > 12 + || (year = tw -> tw_year) < 0) return (tw -> tw_clock = -1L); - year = tw -> tw_year; result = 0L; - if (year < 100) + if (year < 69) + year += CENTURY + 100; + else if (year < 100) year += CENTURY; for (i = 1970; i < year; i++) result += dysize (i); --- zotnet/tws/dtimep.c-lexed.orig Tue Feb 9 20:30:00 1999 +++ zotnet/tws/dtimep.c-lexed Tue Jan 4 11:03:29 2000 @@ -151,6 +151,7 @@ /* Zero out the struct. */ bzero( (char *) &tw, sizeof tw); + tw.tw_year = -1; /* Set default time zone. */ #ifdef ZONEINFO @@ -175,17 +176,19 @@ switch (cp = str, *cp ? lex_string( &str, start_cond) : 0) { case -1: - if (!gotdate || tw.tw_year == 0) + if (!gotdate || tw.tw_year == -1) return (struct tws *)0; /* fall through */ case 0: - if ( tw.tw_year == 0 ) { + if ( tw.tw_year == -1 ) { /* Set default year. */ time (&tclock); tw.tw_year = localtime(&tclock)->tm_year + 1900; } + else if (tw.tw_year < 69) { + tw.tw_year += 2000; + } else if (tw.tw_year < 100) { - /* assume no 2-digit years > 1999 */ tw.tw_year += 1900; } return &tw; --- zotnet/tws/dtimep.lex.orig Tue Feb 9 20:30:00 1999 +++ zotnet/tws/dtimep.lex Tue Jan 4 11:32:43 2000 @@ -181,6 +181,7 @@ /* Zero out the struct. */ bzero( (char *) &tw, sizeof tw); + tw.tw_year = -1; /* Set default time zone. */ #ifdef ZONEINFO @@ -205,17 +206,19 @@ switch (cp = str, *cp ? lex_string( &str, start_cond) : 0) { case -1: - if (!gotdate || tw.tw_year == 0) + if (!gotdate || tw.tw_year == -1) return (struct tws *)0; /* fall through */ case 0: - if ( tw.tw_year == 0 ) { + if ( tw.tw_year == -1 ) { /* Set default year. */ time (&tclock); tw.tw_year = localtime(&tclock)->tm_year + 1900; } + else if (tw.tw_year < 69) { + tw.tw_year += 2000; + } else if (tw.tw_year < 100) { - /* assume no 2-digit years > 1999 */ tw.tw_year += 1900; } return &tw;→パッチをget (841byte) (MD5 = a47af6e4ef62e8464e5ffba5845de39b) | ||
[12Jan2000] JP-3.03 の repl が時々 core dump する。 | ||
[解決]
すいません、NULL ポインタをアクセスしてました(汗)。
ヘッダ内容をハッシュ表で保存しているのですが、
ハッシュ値が同じになる二つのヘッダの、どちらか一方のみが存在する
ような状態をチェックするような時に core dump します。
(Thanks to 黒江@DNPさん)--- uip/replsbr.c.orig Fri Sep 10 13:51:41 1999 +++ uip/replsbr.c Wed Jan 12 12:04:01 2000 @@ -215,11 +215,9 @@ finished: /* drop ending newline */ for (i = 0; i < sizeof(wantcomp)/sizeof(wantcomp[0]); i++) - if ((cptr = wantcomp[i]) && cptr->c_text) - do { - if ((cp = rindex(cptr->c_text, '\n')) && !cp[1]) - *cp = 0; - } while (cptr = cptr->c_next); + for (cptr = wantcomp[i]; cptr; cptr = cptr->c_next) + if (cptr->c_text && (cp = rindex(cptr->c_text, '\n')) && !cp[1]) + *cp = 0; /* if there's a "subject" component, strip any "re:"s off it */ FINDCOMP (cptr, "subject")→パッチをget (395byte) (MD5 = 67310dae652620e660074adba86b1e66) |
はやし はるひさ
Internet関連業績(笑)
MH-plus のぺーじ
MH のどうでもいいような趣味の講座
このページの最終更新日: 2000年 1月14日 金ようび 晴れ