history

青木日記 RSS

<前の日 | この月 | 次の日>

2004-08-05

fileutils バグ取り (1)

うー、だめだ、なかなかテンポが戻らない。

えーと、とりあえず CVS アカウントをもらわないとコミットできないな。 GPG の操作は初めてだからどうもよくわからん。

まずは中田さんがパッチを書いてくれた [ruby-talk:101077] から見よう。 ディレクトリをそのまま (a/* を b/* に) コピーしたいのか。 cp -r a b で b/a ができるのは cp(1) に合わせた仕様なのでしょーがない。

ああそうか、中田さんのパッチはこれを a/* → b/* にするパッチなのか……。 これは仕様が変わっちゃうからちょっと無理だなあ。

それより glob を使ってるほうがエラーになってるのが気になる。 これはいったいどういう状況で起きてるんだ。

うーむ、手元だと何も起きない。困ったな。 何なんだろう。シンボリックリンクかなあ。

うわあ、シンボリックリンクがコピーされてないよ! というか dereference されてるよ! これはまずいな。新たなバグと認定。 とりあえずテストだけ書いておこう。

そんでエラーは何なんだろうなあ。 ……あ、そうか、やっぱりシンボリックリンクか。 存在しないファイルを指すシンボリックリンクがあるとエラーになるんだ。 それじゃあさっきのバグを直せば自動的に直るってことだな。

(18:27)

fileutils バグ取り (2)

でも dereference できないとそれはそれで不便かなあ。 うーん…… cp(1) にもそういうオプションはないのか。じゃあいいや。

シンボリックリンク以外はどうだろう。 GNU の cp -R だとデバイスファイルとか FIFO はファイル自体をコピーするんだよな。 デバイスファイルの中身をコピーしたいってことはそうそうなさそうだし、 cp_r を cp -R 相当にしたほうが安全か。 よし、そうしよう。

(18:49)

fileutils バグ取り (3) ハマり道

あれえ、mknod ってないんだっけ?

ありゃ、mkfifo もない?

そうか、それで実装してなかったのか。 あ、[ruby-talk:91735] で中田さんがすでにパッチを出している。さすがだ。

うむむ、どうしようかな。 とりあえず外形だけ用意しておいて、 スキップするか……いや例外のほうがマシだ。

(20:11)

fileutils バグ取り (4)

想像以上に大きい変更になった。 きっと根源的にコピーという操作がややこしすぎるのだ。

なんで FileUtils.install に preserve なんてオプションがあるんだよ。 インストールするときにパーミッションを保持してどうする。 そのくせ owner と group がないというのがまた謎だ。 追加しておこう。

よし次。[ruby-talk:106434] は……NTFS かよ。やだなあ。 だいたいなんだ、なんで rm とマウントが関係あるんだ。 わけわかんねええよ。

(01:24)

本日のツッコミ(全2件) [ツッコミを入れる]
なかだ (2004-08-06 11:30)

installのpreserveが保持するのはタイムスタンプでは。

青木 (2004-08-09 07:59)

あ、そうでした。

しかし、それはそれで非統一な感じ……(まあいいか)

名前
メールアドレス

<前の日 | この月 | 次の日>
2002|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|04|05|06|09|10|
2009|07|
2010|09|

Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved. LIRS