dnl Some Makefiles use additional tests etc.
AM_CONDITIONAL(MAINTAINER_MODE,[test "$USE_MAINTAINER_MODE" = "yes"])
+
+AC_ARG_WITH(sbin-mountdir,
+ [ --with-sbin-mountdir=dir mount(8) 'mount.captive' directory (def.=/sbin)],,
+ [ with_sbin_mountdir="/sbin" ])
+AM_CONDITIONAL(WITH_SBIN_MOUNT,[test "$with_sbin_mount" != "no"])
+AC_SUBST(with_sbin_mountdir)
+
+AC_ARG_WITH(sbin-mount-fs,
+ [ --with-sbin-mount-fs=fs1:fs2 sbin-mount pre-installed symlinks (def.=ntfs:fastfat:cdfs:ext2fsd)],,
+ [ with_sbin_mount_fs="ntfs:fastfat:cdfs:ext2fsd" ])
+AC_SUBST(with_sbin_mount_fs)
+
AC_ARG_WITH(sandbox-setuid,
[ --with-sandbox-setuid=user non-privileged user for captive-sandbox-server (def.=captive)],
[ CAPTIVE_SANDBOX_SETUID="$withval" ],[ CAPTIVE_SANDBOX_SETUID="captive" ])
AC_CHECK_LIB(popt,poptParseArgvString,[POPT_LIBS="-lpopt"],[AC_MSG_ERROR([Captive requires popt library.])])
AC_SUBST(POPT_LIBS)
-AC_ARG_WITH(readline, [ --with-readline=[no/yes/auto] cmdline client w/line editing [default=auto]],,with_readline=auto)
+AC_ARG_WITH(readline, [ --with-readline=[no/yes/auto] cmdline client with line editing (def.=auto)],,with_readline=auto)
AC_CHECK_HEADERS(readline/history.h)
dnl Check for libraries, if needed by configuration options.
if test "$with_readline" != "no"
dnl "Makefile" output files MUST have pathnames incl./excl. "./" prefix as specified!
AC_OUTPUT([
-captive.spec
-Makefile
-./macros/Makefile
+./captive.spec
+./src/client/gnomevfs/captive.conf
+./src/client/lufs/mount.captive
./po/Makefile.in
+./Makefile
+./macros/Makefile
./src/Makefile
./src/libcaptive/Makefile
./src/libcaptive/include/Makefile
./src/TraceFS/Makefile
./doc/Makefile
./doc/apiref/Makefile
-./src/client/gnomevfs/captive.conf
])
dnl FIXME: Why is "po/POTFILES" being substituted?
--- /dev/null
+#! /usr/bin/perl -w
+#
+# $Id$
+# External mount command for mount(8) to interface lufsmount(1)
+# Copyright (C) 2003 Jan Kratochvil <project-captive@jankratochvil.net>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; exactly version 2 of June 1991 is required
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+use strict;
+use Carp qw(cluck confess);
+use Getopt::Long;
+# Do not use any non-core Perl modules here.
+# Be perl-5.0 compatible (is it needed if we require Linux kernel >= 2.4 ?)
+
+
+my $vardir='@localstatedir@/lib/captive';
+$vardir=~s#\$\Q{prefix}\E#'@prefix@';#ge;
+$vardir="/var/lib/captive" if $vardir=~/^@/;
+my $lufsmount_bin='@bindir@/lufsmount';
+$lufsmount_bin=~s#\$\Q{exec_prefix}\E#'@exec_prefix@';#ge;
+$lufsmount_bin=~s#\$\Q{prefix}\E#'@prefix@';#ge;
+$lufsmount_bin="/usr/bin/lufsmount" if $lufsmount_bin=~/^@/;
+my $captive_sandbox_server_bin='@sbindir@/captive-sandbox-server';
+$captive_sandbox_server_bin=~s#\$\Q{exec_prefix}\E#'@exec_prefix@';#ge;
+$captive_sandbox_server_bin=~s#\$\Q{prefix}\E#'@prefix@';#ge;
+$captive_sandbox_server_bin="/usr/sbin/captive-sandbox-server" if $captive_sandbox_server_bin=~/^@/;
+
+
+my $fsname=($0=~m#([^/]*)$#)[0] or die "Cannot detetect my basename from: $0";
+$fsname=~s/^mount[.]captive-// or die "Cannot detect captive filesystem module from my name: $fsname";
+my $image=shift @ARGV or die "Missing argv[1]: device or image pathname";
+-r $image or die "Image pathname not readable: $image";
+my $dir=shift @ARGV or die "Missing argv[2]: mount point directory";
+-d $dir or die "Mount point directory not a valid directory: $dir";
+shift @ARGV if my $nomtab =$ARGV[0] && $ARGV[0] eq "-n";
+shift @ARGV if my $verbose=$ARGV[0] && $ARGV[0] eq "-v";
+my $oo="";
+do { shift @ARGV; $oo=shift @ARGV; } if $ARGV[0] && $ARGV[0] eq "-o";
+die "Excessive arguments: @ARGV" if @ARGV;
+
+my $filesystem=$vardir."/".$fsname.".sys";
+-r $filesystem or die "W32 filesystem .sys module not readable: $filesystem";
+my $ntoskrnl=$vardir."/ntoskrnl.exe";
+-r $ntoskrnl or die "W32 ntoskrnl.exe not readable: $ntoskrnl";
+
+# Double-dashes are generally optional here.
+$oo=""
+ .($fsname eq "cdfs" ? "--cdrom,--ro," : "--disk,--rw,")
+ ."--load-module=$ntoskrnl,--filesystem=$filesystem,"
+ ."--sandbox-server=$captive_sandbox_server_bin,"
+ ."--bug-pathname=$vardir/bug-%FT%T.captivebug.xml.gz,"
+ ."mntent.mnt_fsname=$image,mntent.mnt_type=captive-$fsname," # Double-dashes forbidden.
+ ."image=$image,"
+ .$oo;
+
+warn "$0: '-n' not supported - ignored" if $nomtab;
+
+# Use "'$oo'" to permit another expansion by bash(1) during lufsmnt(8) execution.
+my @argv=($lufsmount_bin,"captivefs://",$dir,"-o","'$oo'");
+
+print STDERR "$0: @argv\n" if $verbose;
+exec $lufsmount_bin @argv;
+die "Failed to execute: @argv";