Namazu-devel-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: mknmz: symlinked target directory
さとうふみやすです。
At Thu, 16 Nov 2000 16:43:55 JST,
NOKUBI Takatsugu wrote:
> >> --replace=CODE を指定するときなどやっかいなので、これを
> >> 防ぐパッチ。
> $ mkdir symlink
> $ cd symlink && ln -s ../en .
>
> として、tests/ 以下で
>
> $ mkdir idx14
> $ ../scripts/mknmz -O ./idx14 ./data/symlink/en
>
> とすると、
>
> $ cat idx14/NMZ.field.uri
> /home/knok/namazu/build/namazu-current/tests/data/symlink/en/../en/acrobat3.pdf
> こんな感じになってしまいます。2.0.5 ではこのような問題はありません。
うげ。すみません。`.', '..` の扱いを忘れていますね。
# 気にしてたのに、最後にはすっぱり忘れてしまった
$dh->read のループで `.', '..' をとばすようにしましたが、
UNIX 以外のプラットフォームでも大丈夫だろうか…。
--- mknmz.in.dist Thu Oct 5 13:58:19 2000
+++ mknmz.in Wed Nov 15 19:50:10 2000
@@ -36,6 +36,7 @@
use strict; # be strict since v1.2.0
use Getopt::Long;
use File::Copy;
+use DirHandle;
use vars qw($SYSTEM $LANG);
$SYSTEM = $^O;
@@ -1266,8 +1267,24 @@
if (-f $target) { # target is a file.
add_target($target, \@flist, \%counts);
} elsif (-d $target) { # target is a directory.
- my $cwd = cwd();
- chdir $target;
+ my @subtargets = ();
+
+ # Find subdirectories in target directory
+ # because File::Find::find() does not follow symlink.
+ if (-l $target) {
+ my $dh = new DirHandle($target);
+ while (defined(my $ent = $dh->read)) {
+ next if ($ent =~ /^\.{1,2}$/);
+ my $fname = "$target/$ent";
+ if (-d $fname) {
+ push(@subtargets, $fname);
+ } else {
+ add_target($fname, \@flist, \%counts);
+ }
+ }
+ } else {
+ @subtargets = ($target);
+ }
#
# Wanted routine for File::Find's find().
@@ -1277,8 +1294,7 @@
add_target($fname, \@flist, \%counts);
};
- find($wanted_closure, cwd());
- chdir $cwd;
+ find($wanted_closure, @subtargets);
} else {
print STDERR _("unsupported target: ") . $target;
}
…
# + next if ($ent eq "." || $ent eq "..");
# のほうがよい?
…
# デ変研 DocCat の doccat に -p オプション (Office ドキュメントの
# プロパティも表示) が付いたんですが、誰か Namazu で対応して
# くれないかぁ。 :-)
--
SATOH Fumiyasu <fumiya@xxxxxxxxxxx> <fsatoh@xxxxxxxxx>
Samba-JP, aka `Samba Users Group Japan' - http://www.samba.gr.jp/
Digital Design Co., Ltd. Tokyo Office - http://www.d-d.co.jp/