わたなべです.

lndir ってなぜか X と一緒に配布されていて, GNU Win32 の環境
では shell script しかなく, これがすごく遅かったので(いちい
ち ln を起動するため) ruby で書きました.

本物とは違い todir は current directory 固定です.
CVS と RCS という名前の directory は copy しません.
また *~, *.bak, *.orig も copy しません.

例:
% tar xfvz ruby-1.1b7.tar.gz
% mkdir rbgw11b7
% chdir rbgw11b7
% lndir ../ruby-1.1b7
% ls -l COPYING
lrwxrwxrwx   1 watanabe sony           21 Feb 16 11:19 COPYING -> ../ruby-1.1b7/COPYING

実際に cygwin32 版や BOW 版を作るときにはこうしている.
configure --srcdir=hoge ができるようにしたほうがいいとも言え
るけど, patch とか作るときに便利.

-- 
わたなべひろふみ

#!/usr/local/bin/ruby # Create a symlink tree. # # Syntax: lndir srcdir raise "ruby 1.1b6 required" if VERSION < "1.1b6" srcdir = ARGV[0] unless srcdir puts "usage: #$0 srcdir" exit 1 end IGNORE_DIR = %w(. .. CVS RCS) IGNORE_FILE = /~$|\.(bak|orig)$/ def lndir dir if dir[0] == ?/ newsrcdir = dir else newsrcdir = "../#{dir}" end Dir.foreach dir do |f| if FileTest.directory? "#{dir}/#{f}" next if IGNORE_DIR.include? f puts "#{dir}/#{f}" Dir.mkdir f unless FileTest.directory? f Dir.chdir f lndir "#{newsrcdir}/#{f}" Dir.chdir ".." else next if IGNORE_FILE =~ f File.unlink f if FileTest.exist? f File.symlink "#{dir}/#{f}", f end end end lndir srcdir exit 0