I know I believe in nothing but it is my sweet nothing.:2006年07月分

2006/07/01(Sat)

TR 24731

@途中まで実装してみた。

モノは↓に置いてみました。
/distfiles/citrus/NetBSD/TR24731-20060701.tar.bz2
テストケースはOpenWatcomの http://www.openwatcom.org/ftp/devel/saferctests.zip
MITライセンスだったんで流用させてもらったけど

  • 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はn1135だとnull可なんだけど、OpenWatcomは不可になってる。
  • errno_t
    getenv_s(size_t * __restrict needed, char * __restrict value,
    rsize_t maxsize, const char * __restrict name)
    のneededはn1135だと'\0'まで含むサイズを返すことになってるけど
    OpenWatcomでは'\0'を含まない(つまりstrlen)サイズを返すことになってる。

あたりは修正してあります。
もしかしたら俺の読み間違い or その後仕様変更があったのかも。

@TR 24731 defect

strerror_sはマルチバイト文字の事なんかなーんも考えてない仕様でワロタ。

2006/07/03(Mon)

TR 24731

gets_sを追加
/distfiles/citrus/NetBSD/TR24731-20060703.tar.bz2
ちなみにVS2005には_getws_sもある。

fgetwc(3)

↑やってて気付いたんだけど、glibc2とFreeBSDのfgetwc(3)はEILSEQの場合
ストリームにエラー指示子をセットするのでferror(3)は0以外を返すのだけど
Solaris8とNetBSDはセットしてないね。。。SUSv3読む限りでは

if an encoding error occurs, the error indicator for the stream shall be set,

とあるのでglibc2/FreeBSDが正しいな。

2006/07/04(Tue)

bootstrap-pkgsrc for Cygwin

@CYGWIN=transparent_exe

http://cygwin.com/ml/cygwin-announce/2006-07/msg00000.html より

corinna: Implement CYGWIN environment variable "transparent_exe" option
which causes files which end in .exe to be used by appropriate functions
when an input filename is specified with no extension.

ふーん、これつかえば 拡張子の補完問題はおkなのか?

・・・逆に1.5.20-1以前のバージョンもサポートしようとすると頭痛の種が増えるのかも。
先日書いた このパッチのようにpkg_delete側で拡張子の補完をした場合、他の/var/db/pkg/*/+CONTENTSを
読むツール類(pkgsrc/pkgtools/pkg_tarupなど)でも同じ改造が必要だったんで困ってたとこなんだよね。

@つーわけで入れてみた。

CYGWIN=transparent_exe は使い物にならないな、これ。

$ tar cf hoge.tar /usr/pkg/bin/hoge

とした時、tar側で拡張子を補完しなくてもちゃんと/usr/pkg/bin/hoge.exeが格納されるんだけど
伸張するときに/usr/pkg/bin/hoge.exeでなく/usr/pkg/bin/hogeになってしまう。
やっぱり動的にPLIST書き換えて拡張子補完するしかなさそう、うはーやる気ナサス。

@

キーワード「pkg_view」でググる時I'm Feeling Luckyを押してしまってコーヒー吹いたwwwww

2006/07/18(Tue)

CVS

というわけでOpenCVSはまだかね(AA ry)
/distfiles/citrus/NetBSD/patch-opencvs
NetBSDでうごくようにしたけどまだpserverもext+sshもだめぽ。

2006/07/19(Wed)

続CVS

@PR/34030

うーん自分でcommitしないいうのもアレだけど(まあワークエリアじゃないし)
元のコードのmemset(3)でパラノイアックにメモリ上からパスワードを
消すという処理を尊重するのであれば、christos氏の修正では
cvs_passwordはゼロ埋めされないままfree()されちゃうので拙いと思うんだがね。
まあいいや、夜にでもまた投げるか…

2006/07/20(Thu)

SCMいろいろ

@CVS

PR/34030直った、ワーイ。

厳密にいえばauth_server()側でゼロ埋めしなくなったので
login()内でxstrdup()する必要もなくなったんだけど、
あの手のXXXなコードは下手に直すと別の地雷を踏むのでここまで。

@OpenCVS

ふーんOpenCVSの場合は

$ CVS_RSH=ssh cvs -d :ext:anoncvs@anoncvs.netbsd.org:/cvsroot co src

ではなく

$ opencvs -d :ssh:anoncvs@anoncvs.netbsd.org:/cvsroot co src

として使うのか、checkoutしたworking copyのCVS/CVSROOTの互換性ないじゃん。
一応先日のpatchでNetBSDで動いてる。
manを読む限りpserver clientはサポートする気なさげ。
その割にはcvs serverを実装してるのがよーわからんちん。

@Mercurial

OpenSolaris.orgが採用したSCM、pythonで書かれている。
http://www.opensolaris.org/os/community/tools/scm/dcm_evaluation_mercurial/
http://www.selenic.com/mercurial/wiki/index.cgi

Subversionと比較すると

  1. repository イコール working-copy の近頃はやりの分散SCM
  2. changesetに対して別名(tag)がつけられる
  3. 管理ファイル(.hg/*)はトップディレクトリのみ

2はウラヤマスイのだが(Subversionではtagはcopyなので、tagに対してもcommitできてしまう)
3はどうもなぁ…まるっとhg cloneしないとならないので、つまみ食いできないのが嫌。
ちまちまと機能ごとにrepositoryは分け、flatに配置(xorg6.9 → xorg7.0みたいにね)しないと悲惨。
あとpush/pullはファイル個別には行うことができないってのもわりと困りそうな。
微妙に内容の違うworking-copyがゴロゴロと…ってなる悪寒。
まあcommitはファイル単位でOKなのでmonotoneよかマシげ。

…つうかこのレベルの分散SCMってあんましメリット感じないのよね。

  • push先/pull元がSCMを選ばない(CVSでもSubversionでも何でもよい)
  • ↑の情報がworking copy単位でなく、ファイル単位で設定可能

なら話は別なんだが、さあ今すぐ誰か書くんだwwwwwwwwww

@TortoiseHG

まあそのうち誰かが作るであろうプロダクトなんだろーが
HGな亀ときたらピアスとか入ってるんだろうか(下品杉)。

2006/07/24(Mon)

CVS

@PR/34030

あのfixだとべつのmemory leakのもとなのでreopen。