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

2006/06/03(Sat)

pkgsrc/Cygwin

@ほんのちょっとだけ更新

あんまりきれいな方法じゃないけど、pkg_deleteがCygwinでも動くようにしてみた。
/distfiles/citrus/NetBSD/bootstrap-pkgsrc-cygwin.tar.bz2
とりあえずmake install deinstallは問題なく動いてる模様。

@TODO

  • pkgsrc/bootstrap/bootstrapを直して/usr/pkg/share/mk/*などが正しいownerでインスコされるようにする
  • やる気をだしてpkgsrc/mk/*を読む
  • USE_LIBTOOL=YESのとき、shared library(cyg*.dll)がビルドされるようにする
  • pkgsrc/mk/plist/shlib-dll.awkを書いてPLISTでcyg*.dll が認識されるようにする
  • pkgsrc/sysutils/user_cygwinを作ってuseradd/groupaddを実装
  • UNPRIVILEDGE=YES でなしに、Administratorsグループのユーザでインスコする

最近のcygwinのsu(1)ってどのあたりまで実装されてんだろ。
http://cygwin.com/cygwin-ug-net/ntsec.html#ntsec-setuid をそのうち読むも追加。

先週~今週

会社の開発マシンのディスクまで㌧だ、IBM IC35 40G。

2006/06/07(Wed)

Citrus iconv

@TODO

iconv_std moduleはいまんとこ1:1変換しかサポートしないので
ligatureのことを考えてm:n変換できるモジュール書かないとな。
mkcsmapper(1)あたりからいじらんとならんだろうからから非常にやる気がでない。

@m:n

LIGATURE_MAXはいくつぐらいが妥当なんだろね。
♀ = "The Artist Formaly Known As Prince"はligatureじゃないからパス。

libISO2022

@

すっかり忘れてたんだけど、libISO2022のバグを修正したやつをcommit。
これでkoi7-switchedにちゃんと動くようになる、って使ってる人はおらんと思うけど。

@

それとJISX0208-1990が1区29点がHORIZONTAL BAR(U+2015)なのは
Unicode.orgのobsoleteな変換表だからだと思うけど、JISX0221ではEM DASH(U+2014)なのでこれも修正。

@ISO-2022-JP-3(JISX0213)

いまのlibISO2022だと

$ iconv -f iso-2022-jp-3 -t iso-2022-jp-3-strict hoge.txt

とかやるとまずいことになりそうな悪寒。

α8700iをあと10年は使う会

ktkr
http://www.sony.jp/CorporateCruise/Press/200606/06-0606/
http://plusd.itmedia.co.jp/lifestyle/articles/0606/06/news062.html
これでαレンズの心配はなくなったけど、高けーよ。

2006/06/08(Thu)

JISX0213:2004

@

実装してみた、差分はこちら↓
/distfiles/citrus/NetBSD/patch-jisx0213.gz
EUC-JISX0213、Shift_JISX0213、ISO-2022-JP-3、ISO-2022-JP-3-strict、ISO-2022-JP-3-compatibleが利用できまふ。
制限事項

  1. iconv_stdモジュールはm:n変換をサポートしないので
    Unicodeでligatureにmappingされてる文字(ex: 白丸付き数字の21~50)は変換できない。
  2. iso-2022-jp-3からiso-2022-jp-3-(strict|compatibe)に変換するとき
    ESC$(Oの文字は可能な限りESC$(Bへ変換しなければならないが、うまいこといかない。
    iso-2022-jp-3-strictなどの解説はこちら↓
    http://www.m17n.org/m17n2000_all_but_registration/proceedings/kawabata/jisx0213.html
  3. libMSKanjiモジュールのcstowc/wctocs内で拡張外字領域(0xF040-0xFCFC)に対して別csidを振るようにしたので
    iconv dataとモジュールの組み合わせがあってないと正しい変換をしない。

つーわけで1と2が解消するまでcommitできまへん。

2006/06/18(Sun)

New safe C string library proposed by CERT

@

http://marc.theaimsgroup.com/?l=openbsd-misc&m=115052547422056&w=2
から
http://www.cert.org/archive/pdf/06tr006.pdf
だって。
http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1135.pdf
とは別物なのね、なんか乱立してきたな。

@

さらっと目を通してみたけど、TR 24731と大して変わらんかと思ったらより大げさになってるな。
i18n的にはstring_mあたりがアレなかんじ。

2006/06/23(Fri)

"TR 24731 Bounds-checking interfaces" vs "CERT Managed String"

@Austin Group

を購読してなかったので知らんかったけど
http://www.opengroup.org/austin/mailarchives/ag/msg08066.html
から始まるスレで去年の時点で祭りになってたのね、要約は↓参照。
http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1174.pdf

んで対抗馬としてCERT Managed Stringつーことなのかぁ。
WG14からも読めるようになってるね↓
http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1175.pdf
それにしても不細(ry。

@なんつーか

"Safer"という言葉にみんな過剰反応したのが敗因だろうな。
christos氏の提案してる
http://mail-index.netbsd.org/tech-userlevel/2006/06/16/0000.html
のように置き換えを行うことで

  • みんなが好き勝手にやってるエラー処理を共通化する
  • チェック漏れを未然に防ぐ
  • 呼出の前後でエラーチェックをぐだぐだ書いてるプログラムが読みやすくなる
  • 正しくないチェックをしている部分を無くす事ができる

というメリットもあるし、TR 24731も悪くないと思うんだがなぁ。

@Whidbey

VisualStudio2005(Whidbey)にはすでにTR 24731の実装があるんだけど
MSDN の記述とTR 24731と比較すると↓の点で相違がある。

VisualStudio 2005 TR 24731
errno_t
bsearch_s(const void *key, const void *base, rsize_t nmemb, rsize_t size,
int (*compar)(const void *, const void *, void *), void *context)
key は NULL 不可 key は NULL 可
compar は NULL 不可 size != 0 の場合 compar は NULL 不可
errno_t
qsort_s(void *base, rsize_t nmemb, rsize_t size,
int (*compar)(const void *, const void *, void *), void *context)
size は 1 以上 size が 1 未満の場合の動作未定義
compar は NULL 不可 size != 0 の場合 compar は NULL 不可
errno_t
getenv_s(size_t * __restrict needed, char * __restrict value,
rsize_t maxsize, const char * __restrict name)
needed は NULL 不可 needed は NULL 可
errno_t
fopen_s(FILE * restrict * restrict streamptr
const char * restrict filename, const char * restrict mode)
filename == NULL あるいは mode == NULL の場合
*streamptr は変更しない
filename == NULL あるいは mode == NULL の場合
*streamptr には NULL をセット

@とりあえず読んでみる

string_mならPascalのがマシな希ガス。

2006/06/24(Sat)

TR 24731

@Open Watcom

も実装しているのね。
http://www.openwatcom.org/index.php/Safer_C_Library

2006/06/26(Mon)

先週

@Thinkpad s30

マザボの保守部品(新品)をオクで入手、生き返った。

ちなみに故障内容は、液晶の輝度をNormal以上にした状態で
アダプタを引っこ抜いて省電力モードに入ると突然バックライトが消灯するってもの。

Xがまともに動かんsiliconmotionとか、腐ったDSDTとか
すぐ接触不良になるインバータとか困ったもんだ。