Fixed 'lufsd' wrapping detection.
[lufs.git] / kernel / Linux / prepmod.in
index f5ed430..86a836b 100755 (executable)
@@ -42,12 +42,18 @@ $kernel_gcc_args="";
 
 sub modext { my($uname_r)=@_; ($uname_r lt "2.5" ? "o" : "ko"); }
 
-my $lufsmnt_bin;
-if ($0 eq "lufsmnt" || $0=~m#/lufsmnt$#) {
+# mount(8) will util-linux/lib/env.c/sanitize_env()
+# including the clearance our $PATH:
+$ENV{"PATH"}=join(":",qw(/usr/local/bin /usr/bin /bin),($ENV{"PATH"} || ()));
+
+my $lufsd_base='lufsd';
+do { eval '$lufsd_base=~'.$_.';' if !/^@/; } for ('@program_transform_name@');
+my $lufsd_bin;
+if ($0 eq $lufsd_base || $0=~m#/\Q$lufsd_base\E$#) {
        $quiet=1;
-       $lufsmnt_bin='@bindir@/lufsmnt-bin';
-       $lufsmnt_bin=~s#\$\Q{exec_prefix}\E#'@exec_prefix@';#ge;
-       $lufsmnt_bin=~s#\$\Q{prefix}\E#'@prefix@';#ge;
+       $lufsd_bin='@bindir@/'.$lufsd_base.'-bin';
+       $lufsd_bin=~s#\$\Q{exec_prefix}\E#'@exec_prefix@';#ge;
+       $lufsd_bin=~s#\$\Q{prefix}\E#'@prefix@';#ge;
        }
 else {
        die if !GetOptions(
@@ -100,9 +106,9 @@ my($load)=@_;
                do { ($modproberc=_system $_) and cluck "$_ failed - ignoring"; }
                                for ("/sbin/depmod -aq","/sbin/modprobe lufs");
                }
-       exit ($modproberc ? 1 : 0) if !$lufsmnt_bin;
-       do { exec $lufsmnt_bin,@ARGV; };
-       confess "Failed to exec '$lufsmnt_bin': $!";
+       exit ($modproberc ? 1 : 0) if !$lufsd_bin;
+       do { exec $lufsd_bin,@ARGV; };
+       confess "Failed to exec '$lufsd_bin': $!";
 }
 
 
@@ -112,6 +118,8 @@ my $modules=_readfile "/proc/modules";      # 'lufs' may be already loaded
 _pass if $modules=~/^lufs\b/m;
 _pass if !_system "/sbin/modprobe lufs 2>/dev/null";
 
+print STDERR "Preparing LUFS kernel module - this may take several minutes...\n";      # if !$quiet;
+
 my $proc_version=_readfile "/proc/version";
 my $uname_r=($proc_version=~/^Linux version (\S+)/)[0] || _readfile "uname -r|";
 chomp $uname_r;