[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[FDclone-users:00971] Re: LOG_DIR from within archive browser causes SEGV



 しらいです。

In Message-Id <86r4vxl4ic.knu@iDaemons.org>
        "Akinori MUSHA" <knu@iDaemons.org>さんwrites:
> >  従来は、OUT_DIR による移動時のみ直前の directory にカーソ
> > ル移動させていましたが、LOG_DIR や cd で .. に移動した場合も
> > 同じ処理になります。
> >  更には、../.. のように孫やひ孫の directory から移動した場
> > 合も直系の子にあたる directory にカーソル移動します。慣れな
> > いと気持ち悪いかも知れません。
> 
>  私は逆に、そういう仕様の方が一つ前のディレクトリを忘れずに済んでいい
> なと思っていたので違和感はないです。

 では、特に異論の出ない限りは新仕様として採用することにしま
しょう。色々意見は出て来るかも知れませんが、どちらの仕様でも
致命的な欠陥には至らないと思います。


>  アーカイブブラウザ内での cd は、アーカイブ内のディレクトリ構造に該当
> があれば(cwd の代わりに)アーカイブ内を移動するようになったんですね。

 いえ、相対パスなら仮想移動で、絶対パスだと実移動という仕様
です。これは元々 LOG_DIR の仕様で、それを cd にも拡張しただ
けなので、旧版でも LOG_DIR の動作で確認出来ると思います。


>     3.  「/a/b/c.tar:d」の状態で「cd ../..」とすると「/a/b/c.tar:..」に
>         移動
> 
>     4.  アーカイブブラウザ内での「cd .」は一律「cd: .: bad directory」
>         でエラー

 これは bug ですね。「/a/b/c.tar:..」のような表記が現れるの
は、実際に c.tar の中に .. から始まる filename が格納されて
いる場合のみの筈です。
 この場合、「/a/b/c.tar:」の状態で OUT_DIR の結果と LOG_DIR
.. の結果が異なり、それぞれ「/a/b/c.tar」「/a/b/c.tar:..」に
移行します。
 その辺りの parse 処理が甘かったので修正しました。下記 URL
に FD-3.00j からの差分として patch を置いたので、改めてこち
らでご確認お願いします。
ftp://ftp.unixusers.net/src/beta/fdclone/FD-3.00j-patch2.txt


>  シェル関数を書く上では、 cd はUnix的な chdir であってほしい気もします。

 ふむ。確かに一理ありますね。では、内部コマンドは仮想移動で
組込みコマンドは実移動ということにしましょう。組込みコマンド
だと他に pushd/popd があります。
 考えてみれば、pushd で仮想 CWD を stack されても困るだけな
ので、少なくとも pushd/popd だけは実移動にしておくべきでした
ね。


>  SCMを導入してブランチを使うと楽ですよ。

 別にバージョン管理をしていないという訳ではないのですが、何
も考えずに差分を作ると、誤字脱字の修正やインデントといった本
質的でない部分まで含んで肥大化してしまいます。
 Cygwin 関連や端末サイズの件など、今回の件とは明らかに異な
る修正点は別のタグを作ってあるので、割と容易に該当箇所だけを
抽出出来るのですが、同じタグになってると分離出来ません。
 勿論、それぞれ別のタグにしておけば良かったかも知れませんけ
ど、修正点が多過ぎて patch が肥大化したのは結果論なので、な
かなか最初から切り分けて修正するのは難しいですね。

                                               しらい たかし