Namazu-devel-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
mknmz: symlinked target directory
- From: SATOH Fumiyasu <fsatoh@xxxxxxxxx>
- Date: Wed, 15 Nov 2000 20:03:26 +0900
- X-ml-name: namazu-devel-ja
- X-mail-count: 01097
さとうふみやすです。
mknmz の処理対象に、パスにシンボリックリンクが含まれるディレクトリを
指定した場合、インデックス対象を検索する処理において
chdir $target;
$target = cwd();
とされていて、指定した名前が変換(?)されてしまいます。
# 実際のコードはこれとは違います。念のため。
--replace=CODE を指定するときなどやっかいなので、これを
防ぐパッチ。
--- 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,23 @@
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)) {
+ 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 +1293,7 @@
add_target($fname, \@flist, \%counts);
};
- find($wanted_closure, cwd());
- chdir $cwd;
+ find($wanted_closure, @subtargets);
} else {
print STDERR _("unsupported target: ") . $target;
}
--
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/