Not only is the Internet dead, it's starting to smell really bad.:2003年07月分

2003/07/03(Thu)

最近の作業状況

@Citrus XPG4Dl for OpenBSD

最新のNetBSD-currentへの同期=iconv対応をちまちまやっとります。

2003/07/09(Wed)

寄り道中

@Cygwin

久しぶりにCygwinのsnapshotをbuildしてみたら、newlibにGNU iconvがimportされてたり。
このままmb/wc変換とかwide-char classもglibcから引っ張ってくる気かねぇ。

Cygwinはmbstate_t = 最大4byteのみ保持可、wchar_t = 16bit etc...と、初期の実装が足枷で
binary互換性を保とうとするとMicrosoft CodePage<->UCS2レベルでのmb/wc変換しか
どう転んでも実装できないんだよな。XLOCALEを使うにしてもwchar_t = 16bitだと動かないしね。

@FreeBSD 5.1-CURRENT

ほぼ1年ぶりにインスコしてみた。
その記念に大昔途中まで作りかけてたCitrus XPG4DL patchの残骸を晒しage。
/distfiles/citrus/FreeBSD/obsolete/
backward compatibilityの為にrune(3)どうすべ~とか、nl_langinfo(3)壊れてるべ~とか
collate.cとかldpart.cとかとの融合やっつけ過ぎるので書き直そ~とか考えてるまさにその時、
tjr/C99 projectが-CURRENTにもの凄い勢いでcommit、libc/locale以下は別モノになってしまい
追従するモチベーションと愛が消え失せそれ以来ほったらかし。

動くことを期待する人がいるとマズーなのでpermission殺しマスタ、ごめん。
64bitマシンだとダメダメだろうし。

@HDD障害

http://pc2.2ch.net/test/read.cgi/hosting/1056956311/597-598 RAID0なのね。

2003/07/15(Tue)

Citrus iconv

@cacheのsynchronizeに

NetBSDではpthread_rwlock_t(libc内ではrwlock_t)を使ってるんだよね。
OpenBSDではthread_private.hに空のlock/unlockを用意はしとくけども
実際のところthread unsafeつーことで我慢してホスイ。
とか思ってたらthread_private.hに_THREAD_PRIVATE_MUTEX_LOCKってのがあった、良く嫁。
rwlockで十分なのにmutex使うのはほんのちょっと気が引けるけど。

@そういや

/usr/share/locale/*/LC_CTYPEから読み込んだデータって
setrunelocale.cに定義されてるlocaletable_headポインタにcacheされるんだけど
こいつにも本来ならrwlockって必要だよね。

2003/07/20(Sun)

Citrus xpg4dl

@assertを有効にしてみると

$ iconv -f euc-jp -t utf-8 foo.txt >bar.txt
assertion "ei != NULL" failed: file "/usr/src/lib/libc/citrus/modules/citrus_utf8.c", line 377, function "_citrus_UTF8_encoding_module_init"
Abort trap (core dumped)

なんかどっかおかしいね。

@原因判明

Index: citrus_utf8.c
===================================================================
RCS file: /home/cvs/NetBSD/src/lib/libc/citrus/modules/citrus_utf8.c,v
retrieving revision 1.9
diff -u -r1.9 citrus_utf8.c
--- citrus_utf8.c	26 Jun 2003 12:09:58 -0000	1.9
+++ citrus_utf8.c	20 Jul 2003 10:07:30 -0000
@@ -105,6 +105,7 @@
 } _UTF8State;
 
 typedef struct {
+	int dummy;
 } _UTF8EncodingInfo;
 
 typedef struct {

ですた。まあ、そのうちsend-prしよう。

2003/07/29(Tue)

最近の作業状況

@HZ/HZ+/EHZ encoding support for NetBSD

長期間放置プレイですたが一応完成させてみた。
/distfiles/citrus/NetBSD/
もうちょいコードを整理してからsend-prの予定。

ただISO2022/CTEXTと同じで、Unicodeのunificationの問題で
iconvでUnicodeに変換してからまたEHZやHZ+に戻すと
Big5だった文字がGB2312になっちゃったりするのよね。
iconvのesdbにEHZ-GBとかEHZ-BIG5とか用意するべきかねぇ。

@Citrus XPG4DL + iconv for OpenBSD

libcとかtool関係はとっくに作業終ってるのだが
src/share/i18n以下のMakefileを書き直すのがマンドクセーで放置中。

2003/07/31(Thu)

昨日の夜中

@libHZ

_DIAGASSERT有効にしたらabort trap食らうのですが
2byteめがチルダ(0x7e)だった場合の処理でちとミスっとりますた。
そしてsend-prへ剥けて冗長な処理をダイエット中。

そういやZWDOS3.0付属のPRIMER.DOCを読むと
HZ+に更に ~[ でJISX0205(JISX0208のtypoですか?)、 ~]でKSC5601を追加している模様。

@zW

次はzWサポートを書こうと思ってるんだけど、資料が無いっす。