* Re: module development
2007-02-28 2:00 ` Ian Kent
@ 2007-02-28 14:34 ` Jordi Prats
2007-03-01 7:48 ` Ian Kent
0 siblings, 1 reply; 8+ messages in thread
From: Jordi Prats @ 2007-02-28 14:34 UTC (permalink / raw)
To: autofs
[-- Attachment #1: Type: text/plain, Size: 1580 bytes --]
Hi all,
I have modified autofs's source code to create an entry point for the
umount operation. Here I attach a patch for autofs-4.1.4
This patch will allow to create a custom umount operation. In my case I
need to perform an operation before mounting the fs and after. So, I
think this could help others.
What I need to do to contribute this code?
Thank you,
--
......................................................................
__
/ / Jordi Prats
C E / S / C A Dept. de Sistemes
/_/ Centre de Supercomputació de Catalunya
Gran Capità, 2-4 (Edifici Nexus) · 08034 Barcelona
T. 93 205 6464 · F. 93 205 6979 · jprats@cesca.es
......................................................................
Ian Kent wrote:
> On Tue, 2007-02-27 at 23:09 +0100, Jordi Prats wrote:
>
>> Hi all,
>> I'm new to this list. I need to develop a module for autofs for a custom
>> fs type, but I'm not really familiar with autofs. I'm supposing to do
>> this I need to do a module like modules/mount_generic.c but with my
>> custom stuff. For the mounting process it's all right, but to umount the
>> fs I also need to do some operations.
>>
>> There isn't any hook to do my custom operations before or after (in my
>> cas doesn't matter) umounting it?
>>
>> I'm sorry if this a simple or trivial question, but I didn't found how
>> to do this as a module.
>>
>
> Your right, at this stage there isn't an entry point for the umount
> operation.
>
> Ian
>
>
>
>
>
[-- Attachment #2: patch-umount --]
[-- Type: text/plain, Size: 101058 bytes --]
diff -Naur autofs-4.1.4/config.log autofs-modificat/config.log
--- autofs-4.1.4/config.log 1970-01-01 01:00:00.000000000 +0100
+++ autofs-modificat/config.log 2007-02-28 10:46:55.000000000 +0100
@@ -0,0 +1,537 @@
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by configure, which was
+generated by GNU Autoconf 2.59. Invocation command line was
+
+ $ ./configure
+
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = inf12
+uname -m = i686
+uname -r = 2.6.19-1.2911.fc6xen
+uname -s = Linux
+uname -v = #1 SMP Sat Feb 10 16:09:50 EST 2007
+
+/usr/bin/uname -p = unknown
+/bin/uname -X = unknown
+
+/bin/arch = i686
+/usr/bin/arch -k = unknown
+/usr/convex/getsysinfo = unknown
+hostinfo = unknown
+/bin/machine = unknown
+/usr/bin/oslevel = unknown
+/bin/universe = unknown
+
+PATH: /usr/kerberos/sbin
+PATH: /usr/kerberos/bin
+PATH: /usr/local/sbin
+PATH: /usr/local/bin
+PATH: /sbin
+PATH: /bin
+PATH: /usr/sbin
+PATH: /usr/bin
+PATH: /root/bin
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+configure:1307: checking for binaries in
+configure:1309: result: /usr/bin:/bin:/usr/sbin:/sbin
+configure:1319: checking for mount
+configure:1337: found /bin/mount
+configure:1349: result: /bin/mount
+configure:1378: checking for umount
+configure:1396: found /bin/umount
+configure:1408: result: /bin/umount
+configure:1437: checking for fsck.ext2
+configure:1455: found /sbin/fsck.ext2
+configure:1467: result: /sbin/fsck.ext2
+configure:1495: checking for fsck.ext3
+configure:1513: found /sbin/fsck.ext3
+configure:1525: result: /sbin/fsck.ext3
+configure:1555: checking if mount accepts the -s option
+configure:1562: result: yes
+configure:1619: checking for gcc
+configure:1635: found /usr/bin/gcc
+configure:1645: result: gcc
+configure:1889: checking for C compiler version
+configure:1892: gcc --version </dev/null >&5
+gcc (GCC) 4.1.1 20070105 (Red Hat 4.1.1-51)
+Copyright (C) 2006 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+configure:1895: $? = 0
+configure:1897: gcc -v </dev/null >&5
+Using built-in specs.
+Target: i386-redhat-linux
+Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --enable-plugin --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --with-cpu=generic --host=i386-redhat-linux
+Thread model: posix
+gcc version 4.1.1 20070105 (Red Hat 4.1.1-51)
+configure:1900: $? = 0
+configure:1902: gcc -V </dev/null >&5
+gcc: '-V' option must have argument
+configure:1905: $? = 1
+configure:1928: checking for C compiler default output file name
+configure:1931: gcc conftest.c >&5
+configure:1934: $? = 0
+configure:1980: result: a.out
+configure:1985: checking whether the C compiler works
+configure:1991: ./a.out
+configure:1994: $? = 0
+configure:2011: result: yes
+configure:2018: checking whether we are cross compiling
+configure:2020: result: no
+configure:2023: checking for suffix of executables
+configure:2025: gcc -o conftest conftest.c >&5
+configure:2028: $? = 0
+configure:2053: result:
+configure:2059: checking for suffix of object files
+configure:2080: gcc -c conftest.c >&5
+configure:2083: $? = 0
+configure:2105: result: o
+configure:2109: checking whether we are using the GNU C compiler
+configure:2133: gcc -c conftest.c >&5
+configure:2139: $? = 0
+configure:2143: test -z
+ || test ! -s conftest.err
+configure:2146: $? = 0
+configure:2149: test -s conftest.o
+configure:2152: $? = 0
+configure:2165: result: yes
+configure:2171: checking whether gcc accepts -g
+configure:2192: gcc -c -g conftest.c >&5
+configure:2198: $? = 0
+configure:2202: test -z
+ || test ! -s conftest.err
+configure:2205: $? = 0
+configure:2208: test -s conftest.o
+configure:2211: $? = 0
+configure:2222: result: yes
+configure:2239: checking for gcc option to accept ANSI C
+configure:2309: gcc -c -g -O2 conftest.c >&5
+configure:2315: $? = 0
+configure:2319: test -z
+ || test ! -s conftest.err
+configure:2322: $? = 0
+configure:2325: test -s conftest.o
+configure:2328: $? = 0
+configure:2346: result: none needed
+configure:2364: gcc -c -g -O2 conftest.c >&5
+conftest.c:2: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'me'
+configure:2370: $? = 1
+configure: failed program was:
+| #ifndef __cplusplus
+| choke me
+| #endif
+configure:2504: checking for yp_match in -lnsl
+configure:2534: gcc -o conftest -g -O2 conftest.c -lnsl >&5
+configure:2540: $? = 0
+configure:2544: test -z
+ || test ! -s conftest.err
+configure:2547: $? = 0
+configure:2550: test -s conftest
+configure:2553: $? = 0
+configure:2566: result: yes
+configure:2574: checking for res_query in -lresolv
+configure:2604: gcc -o conftest -g -O2 conftest.c -lresolv >&5
+configure:2610: $? = 0
+configure:2614: test -z
+ || test ! -s conftest.err
+configure:2617: $? = 0
+configure:2620: test -s conftest
+configure:2623: $? = 0
+configure:2636: result: yes
+configure:2672: checking for hes_resolve in -lhesiod
+configure:2702: gcc -o conftest -g -O2 conftest.c -lhesiod -lresolv >&5
+configure:2708: $? = 0
+configure:2712: test -z
+ || test ! -s conftest.err
+configure:2715: $? = 0
+configure:2718: test -s conftest
+configure:2721: $? = 0
+configure:2734: result: yes
+configure:2753: checking how to run the C preprocessor
+configure:2788: gcc -E conftest.c
+configure:2794: $? = 0
+configure:2826: gcc -E conftest.c
+conftest.c:18:28: error: ac_nonexistent.h: No such file or directory
+configure:2832: $? = 1
+configure: failed program was:
+| /* confdefs.h. */
+|
+| #define PACKAGE_NAME ""
+| #define PACKAGE_TARNAME ""
+| #define PACKAGE_VERSION ""
+| #define PACKAGE_STRING ""
+| #define PACKAGE_BUGREPORT ""
+| #define HAVE_MOUNT 1
+| #define PATH_MOUNT "/bin/mount"
+| #define HAVE_UMOUNT 1
+| #define PATH_UMOUNT "/bin/umount"
+| #define HAVE_E2FSCK 1
+| #define PATH_E2FSCK "/sbin/fsck.ext2"
+| #define HAVE_E3FSCK 1
+| #define PATH_E3FSCK "/sbin/fsck.ext3"
+| #define HAVE_SLOPPY_MOUNT 1
+| /* end confdefs.h. */
+| #include <ac_nonexistent.h>
+configure:2871: result: gcc -E
+configure:2895: gcc -E conftest.c
+configure:2901: $? = 0
+configure:2933: gcc -E conftest.c
+conftest.c:18:28: error: ac_nonexistent.h: No such file or directory
+configure:2939: $? = 1
+configure: failed program was:
+| /* confdefs.h. */
+|
+| #define PACKAGE_NAME ""
+| #define PACKAGE_TARNAME ""
+| #define PACKAGE_VERSION ""
+| #define PACKAGE_STRING ""
+| #define PACKAGE_BUGREPORT ""
+| #define HAVE_MOUNT 1
+| #define PATH_MOUNT "/bin/mount"
+| #define HAVE_UMOUNT 1
+| #define PATH_UMOUNT "/bin/umount"
+| #define HAVE_E2FSCK 1
+| #define PATH_E2FSCK "/sbin/fsck.ext2"
+| #define HAVE_E3FSCK 1
+| #define PATH_E3FSCK "/sbin/fsck.ext3"
+| #define HAVE_SLOPPY_MOUNT 1
+| /* end confdefs.h. */
+| #include <ac_nonexistent.h>
+configure:2983: checking for egrep
+configure:2993: result: grep -E
+configure:2998: checking for ANSI C header files
+configure:3023: gcc -c -g -O2 conftest.c >&5
+configure:3029: $? = 0
+configure:3033: test -z
+ || test ! -s conftest.err
+configure:3036: $? = 0
+configure:3039: test -s conftest.o
+configure:3042: $? = 0
+configure:3131: gcc -o conftest -g -O2 conftest.c >&5
+conftest.c: In function 'main':
+conftest.c:35: warning: incompatible implicit declaration of built-in function 'exit'
+configure:3134: $? = 0
+configure:3136: ./conftest
+configure:3139: $? = 0
+configure:3154: result: yes
+configure:3178: checking for sys/types.h
+configure:3194: gcc -c -g -O2 conftest.c >&5
+configure:3200: $? = 0
+configure:3204: test -z
+ || test ! -s conftest.err
+configure:3207: $? = 0
+configure:3210: test -s conftest.o
+configure:3213: $? = 0
+configure:3224: result: yes
+configure:3178: checking for sys/stat.h
+configure:3194: gcc -c -g -O2 conftest.c >&5
+configure:3200: $? = 0
+configure:3204: test -z
+ || test ! -s conftest.err
+configure:3207: $? = 0
+configure:3210: test -s conftest.o
+configure:3213: $? = 0
+configure:3224: result: yes
+configure:3178: checking for stdlib.h
+configure:3194: gcc -c -g -O2 conftest.c >&5
+configure:3200: $? = 0
+configure:3204: test -z
+ || test ! -s conftest.err
+configure:3207: $? = 0
+configure:3210: test -s conftest.o
+configure:3213: $? = 0
+configure:3224: result: yes
+configure:3178: checking for string.h
+configure:3194: gcc -c -g -O2 conftest.c >&5
+configure:3200: $? = 0
+configure:3204: test -z
+ || test ! -s conftest.err
+configure:3207: $? = 0
+configure:3210: test -s conftest.o
+configure:3213: $? = 0
+configure:3224: result: yes
+configure:3178: checking for memory.h
+configure:3194: gcc -c -g -O2 conftest.c >&5
+configure:3200: $? = 0
+configure:3204: test -z
+ || test ! -s conftest.err
+configure:3207: $? = 0
+configure:3210: test -s conftest.o
+configure:3213: $? = 0
+configure:3224: result: yes
+configure:3178: checking for strings.h
+configure:3194: gcc -c -g -O2 conftest.c >&5
+configure:3200: $? = 0
+configure:3204: test -z
+ || test ! -s conftest.err
+configure:3207: $? = 0
+configure:3210: test -s conftest.o
+configure:3213: $? = 0
+configure:3224: result: yes
+configure:3178: checking for inttypes.h
+configure:3194: gcc -c -g -O2 conftest.c >&5
+configure:3200: $? = 0
+configure:3204: test -z
+ || test ! -s conftest.err
+configure:3207: $? = 0
+configure:3210: test -s conftest.o
+configure:3213: $? = 0
+configure:3224: result: yes
+configure:3178: checking for stdint.h
+configure:3194: gcc -c -g -O2 conftest.c >&5
+configure:3200: $? = 0
+configure:3204: test -z
+ || test ! -s conftest.err
+configure:3207: $? = 0
+configure:3210: test -s conftest.o
+configure:3213: $? = 0
+configure:3224: result: yes
+configure:3178: checking for unistd.h
+configure:3194: gcc -c -g -O2 conftest.c >&5
+configure:3200: $? = 0
+configure:3204: test -z
+ || test ! -s conftest.err
+configure:3207: $? = 0
+configure:3210: test -s conftest.o
+configure:3213: $? = 0
+configure:3224: result: yes
+configure:3246: checking rpcsvc/nis.h usability
+configure:3258: gcc -c -g -O2 conftest.c >&5
+configure:3264: $? = 0
+configure:3268: test -z
+ || test ! -s conftest.err
+configure:3271: $? = 0
+configure:3274: test -s conftest.o
+configure:3277: $? = 0
+configure:3287: result: yes
+configure:3291: checking rpcsvc/nis.h presence
+configure:3301: gcc -E conftest.c
+configure:3307: $? = 0
+configure:3327: result: yes
+configure:3362: checking for rpcsvc/nis.h
+configure:3369: result: yes
+configure:3405: checking for ldap_init in -lldap
+configure:3435: gcc -o conftest -g -O2 conftest.c -lldap -llber -lresolv >&5
+configure:3441: $? = 0
+configure:3445: test -z
+ || test ! -s conftest.err
+configure:3448: $? = 0
+configure:3451: test -s conftest
+configure:3454: $? = 0
+configure:3467: result: yes
+configure:3529: checking for gcc
+configure:3555: result: gcc
+configure:3799: checking for C compiler version
+configure:3802: gcc --version </dev/null >&5
+gcc (GCC) 4.1.1 20070105 (Red Hat 4.1.1-51)
+Copyright (C) 2006 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+configure:3805: $? = 0
+configure:3807: gcc -v </dev/null >&5
+Using built-in specs.
+Target: i386-redhat-linux
+Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --enable-plugin --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --with-cpu=generic --host=i386-redhat-linux
+Thread model: posix
+gcc version 4.1.1 20070105 (Red Hat 4.1.1-51)
+configure:3810: $? = 0
+configure:3812: gcc -V </dev/null >&5
+gcc: '-V' option must have argument
+configure:3815: $? = 1
+configure:3818: checking whether we are using the GNU C compiler
+configure:3874: result: yes
+configure:3880: checking whether gcc accepts -g
+configure:3931: result: yes
+configure:3948: checking for gcc option to accept ANSI C
+configure:4055: result: none needed
+configure:4073: gcc -c -g -O2 conftest.c >&5
+conftest.c:2: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'me'
+configure:4079: $? = 1
+configure: failed program was:
+| #ifndef __cplusplus
+| choke me
+| #endif
+configure:4219: checking whether gcc -fPIE works
+configure:4244: gcc -o conftest -fPIE -pie conftest.c >&5
+configure:4247: $? = 0
+configure:4249: ./conftest
+configure:4252: $? = 0
+configure:4265: result: yes
+configure:4279: checking location of the init.d directory
+configure:4285: result: /etc/init.d
+configure:4358: creating ./config.status
+
+## ---------------------- ##
+## Running config.status. ##
+## ---------------------- ##
+
+This file was extended by config.status, which was
+generated by GNU Autoconf 2.59. Invocation command line was
+
+ CONFIG_FILES =
+ CONFIG_HEADERS =
+ CONFIG_LINKS =
+ CONFIG_COMMANDS =
+ $ ./config.status
+
+on inf12
+
+config.status:661: creating Makefile.conf
+config.status:764: creating include/config.h
+
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+
+ac_cv_c_compiler_gnu=yes
+ac_cv_env_CC_set=
+ac_cv_env_CC_value=
+ac_cv_env_CFLAGS_set=
+ac_cv_env_CFLAGS_value=
+ac_cv_env_CPPFLAGS_set=
+ac_cv_env_CPPFLAGS_value=
+ac_cv_env_CPP_set=
+ac_cv_env_CPP_value=
+ac_cv_env_LDFLAGS_set=
+ac_cv_env_LDFLAGS_value=
+ac_cv_env_build_alias_set=
+ac_cv_env_build_alias_value=
+ac_cv_env_host_alias_set=
+ac_cv_env_host_alias_value=
+ac_cv_env_target_alias_set=
+ac_cv_env_target_alias_value=
+ac_cv_exeext=
+ac_cv_header_inttypes_h=yes
+ac_cv_header_memory_h=yes
+ac_cv_header_rpcsvc_nis_h=yes
+ac_cv_header_stdc=yes
+ac_cv_header_stdint_h=yes
+ac_cv_header_stdlib_h=yes
+ac_cv_header_string_h=yes
+ac_cv_header_strings_h=yes
+ac_cv_header_sys_stat_h=yes
+ac_cv_header_sys_types_h=yes
+ac_cv_header_unistd_h=yes
+ac_cv_lib_hesiod_hes_resolve=yes
+ac_cv_lib_ldap_ldap_init=yes
+ac_cv_lib_nsl_yp_match=yes
+ac_cv_lib_resolv_res_query=yes
+ac_cv_objext=o
+ac_cv_path_E2FSCK=/sbin/fsck.ext2
+ac_cv_path_E3FSCK=/sbin/fsck.ext3
+ac_cv_path_MOUNT=/bin/mount
+ac_cv_path_UMOUNT=/bin/umount
+ac_cv_prog_CPP='gcc -E'
+ac_cv_prog_ac_ct_CC=gcc
+ac_cv_prog_cc_g=yes
+ac_cv_prog_cc_stdc=
+ac_cv_prog_egrep='grep -E'
+
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+
+CC='gcc'
+CFLAGS='-fPIE'
+CPP='gcc -E'
+CPPFLAGS=''
+DAEMON_CFLAGS='-fPIE'
+DAEMON_LDFLAGS='-pie'
+DEFS='-DHAVE_CONFIG_H'
+E2FSCK='/sbin/fsck.ext2'
+E3FSCK='/sbin/fsck.ext3'
+ECHO_C=''
+ECHO_N='-n'
+ECHO_T=''
+EGREP='grep -E'
+EXEEXT=''
+HAVE_E2FSCK='1'
+HAVE_E3FSCK='1'
+HAVE_HESIOD='1'
+HAVE_LDAP='1'
+HAVE_MOUNT='1'
+HAVE_NISPLUS='1'
+HAVE_UMOUNT='1'
+HESIOD_FLAGS=''
+LDAP_FLAGS=''
+LDFLAGS='-pie'
+LIBHESIOD=' -lhesiod'
+LIBLDAP=' -lldap -llber -lresolv'
+LIBNSL='-lnsl'
+LIBOBJS=''
+LIBRESOLV='-lresolv'
+LIBS=''
+LTLIBOBJS=''
+MOUNT='/bin/mount'
+OBJEXT='o'
+PACKAGE_BUGREPORT=''
+PACKAGE_NAME=''
+PACKAGE_STRING=''
+PACKAGE_TARNAME=''
+PACKAGE_VERSION=''
+PATH_SEPARATOR=':'
+SHELL='/bin/sh'
+UMOUNT='/bin/umount'
+ac_ct_CC='gcc'
+bindir='${exec_prefix}/bin'
+build_alias=''
+datadir='${prefix}/share'
+exec_prefix='${prefix}'
+host_alias=''
+includedir='${prefix}/include'
+infodir='${prefix}/info'
+initdir='/etc/init.d'
+libdir='${exec_prefix}/lib'
+libexecdir='${exec_prefix}/libexec'
+localstatedir='${prefix}/var'
+mandir='${prefix}/man'
+oldincludedir='/usr/include'
+prefix='/usr'
+program_transform_name='s,x,x,'
+sbindir='${exec_prefix}/sbin'
+sharedstatedir='${prefix}/com'
+sysconfdir='${prefix}/etc'
+target_alias=''
+
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+
+#define HAVE_E2FSCK 1
+#define HAVE_E3FSCK 1
+#define HAVE_INTTYPES_H 1
+#define HAVE_MEMORY_H 1
+#define HAVE_MOUNT 1
+#define HAVE_SLOPPY_MOUNT 1
+#define HAVE_STDINT_H 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STRINGS_H 1
+#define HAVE_STRING_H 1
+#define HAVE_SYS_STAT_H 1
+#define HAVE_SYS_TYPES_H 1
+#define HAVE_UMOUNT 1
+#define HAVE_UNISTD_H 1
+#define PACKAGE_BUGREPORT ""
+#define PACKAGE_NAME ""
+#define PACKAGE_STRING ""
+#define PACKAGE_TARNAME ""
+#define PACKAGE_VERSION ""
+#define PATH_E2FSCK "/sbin/fsck.ext2"
+#define PATH_E3FSCK "/sbin/fsck.ext3"
+#define PATH_MOUNT "/bin/mount"
+#define PATH_UMOUNT "/bin/umount"
+#define STDC_HEADERS 1
+
+configure: exit 0
diff -Naur autofs-4.1.4/config.status autofs-modificat/config.status
--- autofs-4.1.4/config.status 1970-01-01 01:00:00.000000000 +0100
+++ autofs-modificat/config.status 2007-02-28 10:46:55.000000000 +0100
@@ -0,0 +1,933 @@
+#! /bin/sh
+# Generated by configure.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=${CONFIG_SHELL-/bin/sh}
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+ set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)$' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+ /^X\/\(\/\/\)$/{ s//\1/; q; }
+ /^X\/\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" || {
+ # Find who we are. Look in the path if we contain no path at all
+ # relative or not.
+ case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+ ;;
+ esac
+ # We did not find ourselves, most probably we were run as `sh COMMAND'
+ # in which case we are not to be found in the path.
+ if test "x$as_myself" = x; then
+ as_myself=$0
+ fi
+ if test ! -f "$as_myself"; then
+ { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ case $CONFIG_SHELL in
+ '')
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for as_base in sh bash ksh sh5; do
+ case $as_dir in
+ /*)
+ if ("$as_dir/$as_base" -c '
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+ CONFIG_SHELL=$as_dir/$as_base
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+ fi;;
+ esac
+ done
+done
+;;
+ esac
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line before each line; the second 'sed' does the real
+ # work. The second script uses 'N' to pair each line-number line
+ # with the numbered line, and appends trailing '-' during
+ # substitution so that $LINENO is not a special case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+ sed '=' <$as_myself |
+ sed '
+ N
+ s,$,-,
+ : loop
+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+ t loop
+ s,-$,,
+ s,^['$as_cr_digits']*\n,,
+ ' >$as_me.lineno &&
+ chmod +x $as_me.lineno ||
+ { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensible to this).
+ . ./$as_me.lineno
+ # Exit status is that of the last command.
+ exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T=' ' ;;
+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ # We could just check for DJGPP; but this test a) works b) is more generic
+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+ if test -f conf$$.exe; then
+ # Don't use ln at all; we don't have any links
+ as_ln_s='cp -p'
+ else
+ as_ln_s='ln -s'
+ fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" $as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+exec 6>&1
+
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling. Logging --version etc. is OK.
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+cat >&5 <<_CSEOF
+
+This file was extended by $as_me, which was
+generated by GNU Autoconf 2.59. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+_CSEOF
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+echo >&5
+config_files=" Makefile.conf"
+config_headers=" include/config.h"
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Report bugs to <bug-autoconf@gnu.org>."
+ac_cs_version="\
+config.status
+configured by ./configure, generated by GNU Autoconf 2.59,
+ with options \"\"
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=.
+# If no file are specified by the user, then we need to provide default
+# value. By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=*)
+ ac_option=`expr "x$1" : 'x\([^=]*\)='`
+ ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ -*)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ *) # This is not an option, so the user has probably given explicit
+ # arguments.
+ ac_option=$1
+ ac_need_defaults=false;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --vers* | -V )
+ echo "$ac_cs_version"; exit 0 ;;
+ --he | --h)
+ # Conflict between --help and --header
+ { { echo "$as_me:$LINENO: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+ { (exit 1); exit 1; }; };;
+ --help | --hel | -h )
+ echo "$ac_cs_usage"; exit 0 ;;
+ --debug | --d* | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ $ac_shift
+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+ ac_need_defaults=false;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+ { (exit 1); exit 1; }; } ;;
+
+ *) ac_config_targets="$ac_config_targets $1" ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+if $ac_cs_recheck; then
+ echo "running /bin/sh ./configure " $ac_configure_extra_args " --no-create --no-recursion" >&6
+ exec /bin/sh ./configure $ac_configure_extra_args --no-create --no-recursion
+fi
+
+for ac_config_target in $ac_config_targets
+do
+ case "$ac_config_target" in
+ # Handling of arguments.
+ "Makefile.conf" ) CONFIG_FILES="$CONFIG_FILES Makefile.conf" ;;
+ "include/config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS include/config.h" ;;
+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason to put it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=./confstat$$-$RANDOM
+ (umask 077 && mkdir $tmp)
+} ||
+{
+ echo "$me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+}
+
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "$CONFIG_FILES"; then
+ # Protect against being on the right side of a sed subst in config.status.
+ sed 's/,@/@@/; s/@,/@@/; s/,;t t$/@;t t/; /@;t t$/s/[\\&,]/\\&/g;
+ s/@@/,@/; s/@@/@,/; s/@;t t$/,;t t/' >$tmp/subs.sed <<\CEOF
+s,@SHELL@,/bin/sh,;t t
+s,@PATH_SEPARATOR@,:,;t t
+s,@PACKAGE_NAME@,,;t t
+s,@PACKAGE_TARNAME@,,;t t
+s,@PACKAGE_VERSION@,,;t t
+s,@PACKAGE_STRING@,,;t t
+s,@PACKAGE_BUGREPORT@,,;t t
+s,@exec_prefix@,${prefix},;t t
+s,@prefix@,/usr,;t t
+s,@program_transform_name@,s,x,x,,;t t
+s,@bindir@,${exec_prefix}/bin,;t t
+s,@sbindir@,${exec_prefix}/sbin,;t t
+s,@libexecdir@,${exec_prefix}/libexec,;t t
+s,@datadir@,${prefix}/share,;t t
+s,@sysconfdir@,${prefix}/etc,;t t
+s,@sharedstatedir@,${prefix}/com,;t t
+s,@localstatedir@,${prefix}/var,;t t
+s,@libdir@,${exec_prefix}/lib,;t t
+s,@includedir@,${prefix}/include,;t t
+s,@oldincludedir@,/usr/include,;t t
+s,@infodir@,${prefix}/info,;t t
+s,@mandir@,${prefix}/man,;t t
+s,@build_alias@,,;t t
+s,@host_alias@,,;t t
+s,@target_alias@,,;t t
+s,@DEFS@,-DHAVE_CONFIG_H,;t t
+s,@ECHO_C@,,;t t
+s,@ECHO_N@,-n,;t t
+s,@ECHO_T@,,;t t
+s,@LIBS@,,;t t
+s,@MOUNT@,/bin/mount,;t t
+s,@HAVE_MOUNT@,1,;t t
+s,@UMOUNT@,/bin/umount,;t t
+s,@HAVE_UMOUNT@,1,;t t
+s,@E2FSCK@,/sbin/fsck.ext2,;t t
+s,@HAVE_E2FSCK@,1,;t t
+s,@E3FSCK@,/sbin/fsck.ext3,;t t
+s,@HAVE_E3FSCK@,1,;t t
+s,@CC@,gcc,;t t
+s,@CFLAGS@,-fPIE,;t t
+s,@LDFLAGS@,-pie,;t t
+s,@CPPFLAGS@,,;t t
+s,@ac_ct_CC@,gcc,;t t
+s,@EXEEXT@,,;t t
+s,@OBJEXT@,o,;t t
+s,@LIBNSL@,-lnsl,;t t
+s,@LIBRESOLV@,-lresolv,;t t
+s,@HAVE_HESIOD@,1,;t t
+s,@LIBHESIOD@, -lhesiod,;t t
+s,@HESIOD_FLAGS@,,;t t
+s,@CPP@,gcc -E,;t t
+s,@EGREP@,grep -E,;t t
+s,@HAVE_NISPLUS@,1,;t t
+s,@LDAP_FLAGS@,,;t t
+s,@HAVE_LDAP@,1,;t t
+s,@LIBLDAP@, -lldap -llber -lresolv,;t t
+s,@DAEMON_CFLAGS@,-fPIE,;t t
+s,@DAEMON_LDFLAGS@,-pie,;t t
+s,@initdir@,/etc/init.d,;t t
+s,@LIBOBJS@,,;t t
+s,@LTLIBOBJS@,,;t t
+CEOF
+
+ # Split the substitutions into bite-sized pieces for seds with
+ # small command number limits, like on Digital OSF/1 and HP-UX.
+ ac_max_sed_lines=48
+ ac_sed_frag=1 # Number of current file.
+ ac_beg=1 # First line for current file.
+ ac_end=$ac_max_sed_lines # Line after last line for current file.
+ ac_more_lines=:
+ ac_sed_cmds=
+ while $ac_more_lines; do
+ if test $ac_beg -gt 1; then
+ sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ else
+ sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ fi
+ if test ! -s $tmp/subs.frag; then
+ ac_more_lines=false
+ else
+ # The purpose of the label and of the branching condition is to
+ # speed up the sed processing (if there are no `@' at all, there
+ # is no need to browse any of the substitutions).
+ # These are the two extra sed commands mentioned above.
+ (echo ':t
+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+ else
+ ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+ fi
+ ac_sed_frag=`expr $ac_sed_frag + 1`
+ ac_beg=$ac_end
+ ac_end=`expr $ac_end + $ac_max_sed_lines`
+ fi
+ done
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds=cat
+ fi
+fi # test -n "$CONFIG_FILES"
+
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
+ esac
+
+ # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ ac_builddir=.
+
+if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+ ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+ if test -z "$ac_top_builddir"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
+ *) # Relative path.
+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
+
+
+
+ if test x"$ac_file" != x-; then
+ { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+ rm -f "$ac_file"
+ fi
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ if test x"$ac_file" = x-; then
+ configure_input=
+ else
+ configure_input="$ac_file. "
+ fi
+ configure_input=$configure_input"Generated from `echo $ac_file_in |
+ sed 's,.*/,,'` by configure."
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ echo "$f";;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+ sed "/^[ ]*VPATH[ ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[ ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[ ]*$//;
+}
+
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s,@configure_input@,$configure_input,;t t
+s,@srcdir@,$ac_srcdir,;t t
+s,@abs_srcdir@,$ac_abs_srcdir,;t t
+s,@top_srcdir@,$ac_top_srcdir,;t t
+s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+s,@builddir@,$ac_builddir,;t t
+s,@abs_builddir@,$ac_abs_builddir,;t t
+s,@top_builddir@,$ac_top_builddir,;t t
+s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+ rm -f $tmp/stdin
+ if test x"$ac_file" != x-; then
+ mv $tmp/out $ac_file
+ else
+ cat $tmp/out
+ rm -f $tmp/out
+ fi
+
+done
+
+#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+ac_dB='[ ].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_uB='$,\1#\2define\3'
+ac_uC=' '
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
+ esac
+
+ test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ # Do quote $f, to prevent DOS paths from being IFS'd.
+ echo "$f";;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+ # Remove the trailing spaces.
+ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
+
+ # Handle all the #define templates only if necessary.
+ if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then
+ # If there are no defines, we may have an empty if/fi
+ :
+ cat >$tmp/defines.sed <<CEOF
+/^[ ]*#[ ]*define/!b
+t clr
+: clr
+${ac_dA}PACKAGE_NAME${ac_dB}PACKAGE_NAME${ac_dC}""${ac_dD}
+${ac_dA}PACKAGE_TARNAME${ac_dB}PACKAGE_TARNAME${ac_dC}""${ac_dD}
+${ac_dA}PACKAGE_VERSION${ac_dB}PACKAGE_VERSION${ac_dC}""${ac_dD}
+${ac_dA}PACKAGE_STRING${ac_dB}PACKAGE_STRING${ac_dC}""${ac_dD}
+${ac_dA}PACKAGE_BUGREPORT${ac_dB}PACKAGE_BUGREPORT${ac_dC}""${ac_dD}
+${ac_dA}HAVE_MOUNT${ac_dB}HAVE_MOUNT${ac_dC}1${ac_dD}
+${ac_dA}PATH_MOUNT${ac_dB}PATH_MOUNT${ac_dC}"/bin/mount"${ac_dD}
+${ac_dA}HAVE_UMOUNT${ac_dB}HAVE_UMOUNT${ac_dC}1${ac_dD}
+${ac_dA}PATH_UMOUNT${ac_dB}PATH_UMOUNT${ac_dC}"/bin/umount"${ac_dD}
+${ac_dA}HAVE_E2FSCK${ac_dB}HAVE_E2FSCK${ac_dC}1${ac_dD}
+${ac_dA}PATH_E2FSCK${ac_dB}PATH_E2FSCK${ac_dC}"/sbin/fsck.ext2"${ac_dD}
+${ac_dA}HAVE_E3FSCK${ac_dB}HAVE_E3FSCK${ac_dC}1${ac_dD}
+${ac_dA}PATH_E3FSCK${ac_dB}PATH_E3FSCK${ac_dC}"/sbin/fsck.ext3"${ac_dD}
+${ac_dA}HAVE_SLOPPY_MOUNT${ac_dB}HAVE_SLOPPY_MOUNT${ac_dC}1${ac_dD}
+${ac_dA}STDC_HEADERS${ac_dB}STDC_HEADERS${ac_dC}1${ac_dD}
+${ac_dA}HAVE_SYS_TYPES_H${ac_dB}HAVE_SYS_TYPES_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_SYS_STAT_H${ac_dB}HAVE_SYS_STAT_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_STDLIB_H${ac_dB}HAVE_STDLIB_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_STRING_H${ac_dB}HAVE_STRING_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_MEMORY_H${ac_dB}HAVE_MEMORY_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_STRINGS_H${ac_dB}HAVE_STRINGS_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_INTTYPES_H${ac_dB}HAVE_INTTYPES_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_STDINT_H${ac_dB}HAVE_STDINT_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_UNISTD_H${ac_dB}HAVE_UNISTD_H${ac_dC}1${ac_dD}
+CEOF
+ sed -f $tmp/defines.sed $tmp/in >$tmp/out
+ rm -f $tmp/in
+ mv $tmp/out $tmp/in
+
+ fi # grep
+
+ # Handle all the #undef templates
+ cat >$tmp/undefs.sed <<CEOF
+/^[ ]*#[ ]*undef/!b
+t clr
+: clr
+${ac_uA}PACKAGE_NAME${ac_uB}PACKAGE_NAME${ac_uC}""${ac_uD}
+${ac_uA}PACKAGE_TARNAME${ac_uB}PACKAGE_TARNAME${ac_uC}""${ac_uD}
+${ac_uA}PACKAGE_VERSION${ac_uB}PACKAGE_VERSION${ac_uC}""${ac_uD}
+${ac_uA}PACKAGE_STRING${ac_uB}PACKAGE_STRING${ac_uC}""${ac_uD}
+${ac_uA}PACKAGE_BUGREPORT${ac_uB}PACKAGE_BUGREPORT${ac_uC}""${ac_uD}
+${ac_uA}HAVE_MOUNT${ac_uB}HAVE_MOUNT${ac_uC}1${ac_uD}
+${ac_uA}PATH_MOUNT${ac_uB}PATH_MOUNT${ac_uC}"/bin/mount"${ac_uD}
+${ac_uA}HAVE_UMOUNT${ac_uB}HAVE_UMOUNT${ac_uC}1${ac_uD}
+${ac_uA}PATH_UMOUNT${ac_uB}PATH_UMOUNT${ac_uC}"/bin/umount"${ac_uD}
+${ac_uA}HAVE_E2FSCK${ac_uB}HAVE_E2FSCK${ac_uC}1${ac_uD}
+${ac_uA}PATH_E2FSCK${ac_uB}PATH_E2FSCK${ac_uC}"/sbin/fsck.ext2"${ac_uD}
+${ac_uA}HAVE_E3FSCK${ac_uB}HAVE_E3FSCK${ac_uC}1${ac_uD}
+${ac_uA}PATH_E3FSCK${ac_uB}PATH_E3FSCK${ac_uC}"/sbin/fsck.ext3"${ac_uD}
+${ac_uA}HAVE_SLOPPY_MOUNT${ac_uB}HAVE_SLOPPY_MOUNT${ac_uC}1${ac_uD}
+${ac_uA}STDC_HEADERS${ac_uB}STDC_HEADERS${ac_uC}1${ac_uD}
+${ac_uA}HAVE_SYS_TYPES_H${ac_uB}HAVE_SYS_TYPES_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_SYS_STAT_H${ac_uB}HAVE_SYS_STAT_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_STDLIB_H${ac_uB}HAVE_STDLIB_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_STRING_H${ac_uB}HAVE_STRING_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_MEMORY_H${ac_uB}HAVE_MEMORY_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_STRINGS_H${ac_uB}HAVE_STRINGS_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_INTTYPES_H${ac_uB}HAVE_INTTYPES_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_STDINT_H${ac_uB}HAVE_STDINT_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_UNISTD_H${ac_uB}HAVE_UNISTD_H${ac_uC}1${ac_uD}
+s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+CEOF
+ sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+ rm -f $tmp/in
+ mv $tmp/out $tmp/in
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ if test x"$ac_file" = x-; then
+ echo "/* Generated by configure. */" >$tmp/config.h
+ else
+ echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
+ fi
+ cat $tmp/in >>$tmp/config.h
+ rm -f $tmp/in
+ if test x"$ac_file" != x-; then
+ if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ rm -f $ac_file
+ mv $tmp/config.h $ac_file
+ fi
+ else
+ cat $tmp/config.h
+ rm -f $tmp/config.h
+ fi
+done
+
+{ (exit 0); exit 0; }
diff -Naur autofs-4.1.4/daemon/automount.c autofs-modificat/daemon/automount.c
--- autofs-4.1.4/daemon/automount.c 2005-03-06 10:43:55.000000000 +0100
+++ autofs-modificat/daemon/automount.c 2007-02-28 11:55:00.000000000 +0100
@@ -139,31 +139,7 @@
static int umount_ent(const char *root, const char *name, const char *type)
{
- char path_buf[PATH_MAX];
- struct stat st;
- int sav_errno;
- int is_smbfs = (strcmp(type, "smbfs") == 0);
- int status;
- int rv = 0;
-
- sprintf(path_buf, "%s/%s", root, name);
- status = lstat(path_buf, &st);
- sav_errno = errno;
-
- /* EIO appears to correspond to an smb mount that has gone away */
- if (!status ||
- (is_smbfs && (sav_errno == EIO || sav_errno == EBADSLT))) {
- int umount_ok = 0;
-
- if (!status && (S_ISDIR(st.st_mode) && (st.st_dev != ap.dev)))
- umount_ok = 1;
-
- if (umount_ok || is_smbfs) {
- rv = spawnll(LOG_DEBUG,
- PATH_UMOUNT, PATH_UMOUNT, path_buf, NULL);
- }
- }
- return rv;
+ return do_umount(root, name, type);
}
/* Like ftw, except fn gets called twice: before a directory is
diff -Naur autofs-4.1.4/daemon/Makefile autofs-modificat/daemon/Makefile
--- autofs-4.1.4/daemon/Makefile 2004-04-03 09:14:33.000000000 +0200
+++ autofs-modificat/daemon/Makefile 2007-02-28 11:03:47.000000000 +0100
@@ -6,8 +6,8 @@
-include ../Makefile.conf
include ../Makefile.rules
-SRCS = automount.c spawn.c module.c mount.c
-OBJS = automount.o spawn.o module.o mount.o
+SRCS = automount.c spawn.c module.c mount.c umount.c
+OBJS = automount.o spawn.o module.o mount.o umount.o
version := $(shell cat ../.version)
diff -Naur autofs-4.1.4/daemon/module.c autofs-modificat/daemon/module.c
--- autofs-4.1.4/daemon/module.c 2004-01-29 17:01:22.000000000 +0100
+++ autofs-modificat/daemon/module.c 2007-02-28 13:27:28.000000000 +0100
@@ -240,6 +240,75 @@
return mod;
}
+
+struct mount_mod *open_umount(const char *name, const char *err_prefix)
+{
+ struct mount_mod *mod;
+ char *fnbuf;
+ size_t size_name;
+ size_t size_fnbuf;
+ void *dh;
+ int *ver;
+
+ size_name = _strlen(name, PATH_MAX + 1);
+ if (!size_name)
+ return NULL;
+
+ mod = malloc(sizeof(struct mount_mod));
+ if (!mod) {
+ if (err_prefix)
+ crit("%s%m", err_prefix);
+ return NULL;
+ }
+
+ size_fnbuf = size_name + strlen(AUTOFS_LIB_DIR) + 13;
+ fnbuf = alloca(size_fnbuf);
+ if (!fnbuf) {
+ free(mod);
+ if (err_prefix)
+ crit("%s%m", err_prefix);
+ return NULL;
+ }
+ snprintf(fnbuf, size_fnbuf, "%s/umount_%s.so", AUTOFS_LIB_DIR, name);
+
+ if (!(dh = dlopen(fnbuf, RTLD_NOW))) {
+ if (err_prefix)
+ crit("%scannot open umount module %s (%s)",
+ err_prefix, name, dlerror());
+ free(mod);
+ return NULL;
+ }
+
+ if (!(ver = (int *) dlsym(dh, "mount_version"))
+ || *ver != AUTOFS_MOUNT_VERSION) {
+ if (err_prefix)
+ crit("%smount module %s version mismatch",
+ err_prefix, name);
+ dlclose(dh);
+ free(mod);
+ return NULL;
+ }
+
+ if (!(mod->mount_init = (mount_init_t) dlsym(dh, "mount_init")) ||
+ !(mod->mount_umount = (mount_umount_t) dlsym(dh, "mount_umount")) ||
+ !(mod->mount_done = (mount_done_t) dlsym(dh, "mount_done"))) {
+ if (err_prefix)
+ crit("%smount module %s corrupt", err_prefix, name);
+ dlclose(dh);
+ free(mod);
+ return NULL;
+ }
+
+ if (mod->mount_init(&mod->context)) {
+ dlclose(dh);
+ free(mod);
+ return NULL;
+ }
+ mod->dlhandle = dh;
+ return mod;
+}
+
+
int close_mount(struct mount_mod *mod)
{
int rv = mod->mount_done(mod->context);
diff -Naur autofs-4.1.4/daemon/umount.c autofs-modificat/daemon/umount.c
--- autofs-4.1.4/daemon/umount.c 1970-01-01 01:00:00.000000000 +0100
+++ autofs-modificat/daemon/umount.c 2007-02-28 15:05:30.000000000 +0100
@@ -0,0 +1,63 @@
+/* ----------------------------------------------------------------------- *
+ *
+ * umount.c - Abstract umount code used by modules for an unexpected
+ * filesystem type
+ *
+ * Copyright 2007 Jordi Prats - CESCA - All Rights Reserved
+ *
+ * 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, Inc., 675 Mass Ave, Cambridge MA 02139,
+ * USA; either version 2 of the License, or (at your option) any later
+ * version.
+ *
+ * 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.
+ *
+ * ----------------------------------------------------------------------- */
+
+#include <syslog.h>
+#include <stdlib.h>
+#include <string.h>
+#include "automount.h"
+
+/* These filesystems are known not to work with the "generic" module */
+static char *not_generic[] = { "ext3lvm",
+ NULL
+};
+
+// (const char *root, const char *name, int name_len,
+// const char *what, const char *fstype, const char *options)
+
+int do_umount(const char *root, const char *name, const char *type)
+{
+ struct mount_mod *mod;
+ const char *modstr;
+ char **ngp;
+ int rv;
+
+ mod = open_umount(modstr = type, NULL);
+ if (!mod) {
+ for (ngp = not_generic; *ngp; ngp++) {
+ if (!strcmp(type, *ngp))
+ break;
+ }
+ if (!*ngp)
+ mod = open_umount(modstr = "generic", NULL);
+ if (!mod) {
+ error("cannot find umount method for filesystem %s",
+ type);
+ return -1;
+ }
+ }
+
+ debug("do_umount root %s name type %s",
+ root, name, type);
+
+ rv = mod->mount_umount(root, name, strlen(name), type, mod->context);
+ close_mount(mod);
+
+ return rv;
+}
diff -Naur autofs-4.1.4/daemon/umount.c~ autofs-modificat/daemon/umount.c~
--- autofs-4.1.4/daemon/umount.c~ 1970-01-01 01:00:00.000000000 +0100
+++ autofs-modificat/daemon/umount.c~ 2007-02-28 13:27:10.000000000 +0100
@@ -0,0 +1,64 @@
+#ident "$Id: mount.c,v 1.5 2004/11/17 14:38:27 raven Exp $"
+/* ----------------------------------------------------------------------- *
+ *
+ * umount.c - Abstract mount code used by modules for an unexpected
+ * filesystem type
+ *
+ * Copyright 2007 CESCA - All Rights Reserved
+ *
+ * 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, Inc., 675 Mass Ave, Cambridge MA 02139,
+ * USA; either version 2 of the License, or (at your option) any later
+ * version.
+ *
+ * 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.
+ *
+ * ----------------------------------------------------------------------- */
+
+#include <syslog.h>
+#include <stdlib.h>
+#include <string.h>
+#include "automount.h"
+
+/* These filesystems are known not to work with the "generic" module */
+static char *not_generic[] = { "ext3lvm",
+ NULL
+};
+
+// (const char *root, const char *name, int name_len,
+// const char *what, const char *fstype, const char *options)
+
+int do_umount(const char *root, const char *name, const char *type)
+{
+ struct mount_mod *mod;
+ const char *modstr;
+ char **ngp;
+ int rv;
+
+ mod = open_umount(modstr = type, NULL);
+ if (!mod) {
+ for (ngp = not_generic; *ngp; ngp++) {
+ if (!strcmp(type, *ngp))
+ break;
+ }
+ if (!*ngp)
+ mod = open_umount(modstr = "generic", NULL);
+ if (!mod) {
+ error("cannot find umount method for filesystem %s",
+ type);
+ return -1;
+ }
+ }
+
+ debug("do_umount root %s name type %s",
+ root, name, type);
+
+ rv = mod->mount_umount(root, name, strlen(name), type, mod->context);
+ close_mount(mod);
+
+ return rv;
+}
diff -Naur autofs-4.1.4/include/automount.h autofs-modificat/include/automount.h
--- autofs-4.1.4/include/automount.h 2005-01-26 14:03:02.000000000 +0100
+++ autofs-modificat/include/automount.h 2007-02-28 11:54:07.000000000 +0100
@@ -130,6 +130,9 @@
int signal_children(int sig);
int do_mount(const char *root, const char *name, int name_len,
const char *what, const char *fstype, const char *options);
+
+int do_umount(const char *root, const char *name, const char *type);
+
int mkdir_path(const char *path, mode_t mode);
int rmdir_path(const char *path);
@@ -200,22 +203,32 @@
int mount_init(void **context);
int mount_mount(const char *root, const char *name, int name_len,
const char *what, const char *fstype, const char *options, void *context);
+
+int mount_umount(const char *root, const char *name, int name_len,
+ const char *fstype, void *context);
+
int mount_done(void *context);
#endif
typedef int (*mount_init_t) (void **);
typedef int (*mount_mount_t) (const char *, const char *, int, const char *, const char *,
const char *, void *);
+
+typedef int (*mount_umount_t) (const char *, const char *, int, const char *,
+ void *);
+
typedef int (*mount_done_t) (void *);
struct mount_mod {
mount_init_t mount_init;
mount_mount_t mount_mount;
+ mount_umount_t mount_umount;
mount_done_t mount_done;
void *dlhandle;
void *context;
};
struct mount_mod *open_mount(const char *name, const char *err_prefix);
+struct mount_mod *open_umount(const char *name, const char *err_prefix);
int close_mount(struct mount_mod *);
/* mapent cache definition */
diff -Naur autofs-4.1.4/include/config.h autofs-modificat/include/config.h
--- autofs-4.1.4/include/config.h 1970-01-01 01:00:00.000000000 +0100
+++ autofs-modificat/include/config.h 2007-02-28 10:46:55.000000000 +0100
@@ -0,0 +1,28 @@
+/* include/config.h. Generated by configure. */
+#ident "$Id: config.h.in,v 1.4 2004/02/03 15:23:21 raven Exp $"
+/* -*- c -*-
+ *
+ * config.h.in: Pattern file for autofs to be filled in by configure
+ *
+ */
+
+/* Program paths */
+#define HAVE_MOUNT 1
+#define PATH_MOUNT "/bin/mount"
+
+#define HAVE_UMOUNT 1
+#define PATH_UMOUNT "/bin/umount"
+
+/* #undef HAVE_SMBMOUNT */
+/* #undef PATH_SMBMOUNT */
+
+#define HAVE_E2FSCK 1
+#define PATH_E2FSCK "/sbin/fsck.ext2"
+
+#define HAVE_E3FSCK 1
+#define PATH_E3FSCK "/sbin/fsck.ext3"
+
+/* Define this option if mount(8) supports the -s (sloppy) option */
+#define HAVE_SLOPPY_MOUNT 1
+
+/* #undef ENABLE_EXT_ENV */
diff -Naur autofs-4.1.4/Makefile.conf autofs-modificat/Makefile.conf
--- autofs-4.1.4/Makefile.conf 1970-01-01 01:00:00.000000000 +0100
+++ autofs-modificat/Makefile.conf 2007-02-28 10:46:55.000000000 +0100
@@ -0,0 +1,60 @@
+#
+# $id$
+#
+# Makefile.conf.in
+#
+# Pattern file to be filled in by configure; contains specific options to
+# build autofs.
+#
+
+# Do we build with -fpie?
+DAEMON_CFLAGS = -fPIE
+DAEMON_LDFLAGS = -pie
+
+# Special parameters for glibc (libc 6)
+LIBNSL = -lnsl
+LIBRESOLV = -lresolv
+
+# Hesiod support: yes (1) no (0)
+HESIOD = 1
+LIBHESIOD = -lhesiod
+HESIOD_FLAGS =
+
+# LDAP support: yes (1) no (0)
+LDAP = 1
+LIBLDAP= -lldap -llber -lresolv
+LDAP_FLAGS =
+
+# NIS+ support: yes (1) no (0)
+NISPLUS = 1
+
+# SMBFS support: yes (1) no (0)
+SMBFS = @HAVE_SMBMOUNT@
+
+# Support for calling e2fsck when mounting ext2 filesystems
+EXT2FS = 1
+
+# Support for calling e3fsck when mounting ext3 filesystems
+EXT3FS = 1
+
+#
+# Note: the DESTDIR define is so you can build autofs into a temporary
+# directory and still have all the compiled-in paths point to the right
+# place.
+#
+
+# Common install prefix
+prefix = /usr
+exec_prefix = ${prefix}
+
+# Directory for autofs modules
+autofslibdir = ${exec_prefix}/lib/autofs
+
+# Where to install the automount program
+sbindir = ${exec_prefix}/sbin
+
+# Where to install man pages
+mandir = ${prefix}/man
+
+# Location for init.d files
+initdir = /etc/init.d
diff -Naur autofs-4.1.4/modules/Makefile autofs-modificat/modules/Makefile
--- autofs-4.1.4/modules/Makefile 2004-08-29 14:46:23.000000000 +0200
+++ autofs-modificat/modules/Makefile 2007-02-28 13:03:49.000000000 +0100
@@ -10,13 +10,13 @@
lookup_multi.c \
parse_sun.c \
mount_generic.c mount_nfs.c mount_afs.c mount_autofs.c \
- mount_changer.c mount_bind.c
+ mount_changer.c mount_bind.c umount_generic.c
MODS := lookup_yp.so lookup_file.so lookup_program.so lookup_userhome.so \
lookup_multi.so \
parse_sun.so \
mount_generic.so mount_nfs.so mount_afs.so mount_autofs.so \
- mount_changer.so mount_bind.so
+ mount_changer.so mount_bind.so umount_generic.so
ifeq ($(EXT2FS), 1)
SRCS += mount_ext2.c
diff -Naur autofs-4.1.4/modules/#umount_generic.# autofs-modificat/modules/#umount_generic.#
--- autofs-4.1.4/modules/#umount_generic.# 1970-01-01 01:00:00.000000000 +0100
+++ autofs-modificat/modules/#umount_generic.# 2007-02-28 11:55:41.000000000 +0100
@@ -0,0 +1 @@
+-cn
\ No newline at end of file
diff -Naur autofs-4.1.4/modules/umount_generic.c autofs-modificat/modules/umount_generic.c
--- autofs-4.1.4/modules/umount_generic.c 1970-01-01 01:00:00.000000000 +0100
+++ autofs-modificat/modules/umount_generic.c 2007-02-28 15:06:18.000000000 +0100
@@ -0,0 +1,73 @@
+/* ----------------------------------------------------------------------- *
+ *
+ * umount_generic.c - module for Linux automountd to umount filesystems
+ * for which no special magic is required
+ *
+ * Copyright 2007 Jordi Prats - CESCA - All Rights Reserved
+ *
+ * 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, Inc., 675 Mass Ave, Cambridge MA 02139,
+ * USA; either version 2 of the License, or (at your option) any later
+ * version; incorporated herein by reference.
+ *
+ * ----------------------------------------------------------------------- */
+
+#include <stdio.h>
+#include <malloc.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <syslog.h>
+#include <string.h>
+#include <stdlib.h>
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#define MODULE_MOUNT
+#include "automount.h"
+
+#define MODPREFIX "umount(generic): "
+
+int mount_version = AUTOFS_MOUNT_VERSION; /* Required by protocol */
+
+int mount_init(void **context)
+{
+ return 0;
+}
+
+int mount_umount(const char *root, const char *name, int name_len,
+ const char *fstype, void *context)
+{
+ char path_buf[PATH_MAX];
+ struct stat st;
+ int sav_errno;
+ int is_smbfs = (strcmp(fstype, "smbfs") == 0);
+ int status;
+ int rv = 0;
+
+ sprintf(path_buf, "%s/%s", root, name);
+ status = lstat(path_buf, &st);
+ sav_errno = errno;
+
+ /* EIO appears to correspond to an smb mount that has gone away */
+ if (!status ||
+ (is_smbfs && (sav_errno == EIO || sav_errno == EBADSLT))) {
+ int umount_ok = 0;
+
+ if (!status && (S_ISDIR(st.st_mode) && (st.st_dev != ap.dev)))
+ umount_ok = 1;
+
+ if (umount_ok || is_smbfs) {
+ rv = spawnll(LOG_DEBUG,
+ PATH_UMOUNT, PATH_UMOUNT, path_buf, NULL);
+ }
+ }
+ return rv;
+}
+
+int mount_done(void *context)
+{
+ return 0;
+}
diff -Naur autofs-4.1.4/modules/umount_generic.c~ autofs-modificat/modules/umount_generic.c~
--- autofs-4.1.4/modules/umount_generic.c~ 1970-01-01 01:00:00.000000000 +0100
+++ autofs-modificat/modules/umount_generic.c~ 2007-02-28 13:27:42.000000000 +0100
@@ -0,0 +1,74 @@
+#ident "$Id: mount_generic.c,v 1.15 2005/01/10 13:28:29 raven Exp $"
+/* ----------------------------------------------------------------------- *
+ *
+ * mount_generic.c - module for Linux automountd to mount filesystems
+ * for which no special magic is required
+ *
+ * Copyright 1997-1999 Transmeta Corporation - All Rights Reserved
+ *
+ * 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, Inc., 675 Mass Ave, Cambridge MA 02139,
+ * USA; either version 2 of the License, or (at your option) any later
+ * version; incorporated herein by reference.
+ *
+ * ----------------------------------------------------------------------- */
+
+#include <stdio.h>
+#include <malloc.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <syslog.h>
+#include <string.h>
+#include <stdlib.h>
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#define MODULE_MOUNT
+#include "automount.h"
+
+#define MODPREFIX "umount(generic): "
+
+int mount_version = AUTOFS_MOUNT_VERSION; /* Required by protocol */
+
+int mount_init(void **context)
+{
+ return 0;
+}
+
+int mount_umount(const char *root, const char *name, int name_len,
+ const char *fstype, void *context)
+{
+ char path_buf[PATH_MAX];
+ struct stat st;
+ int sav_errno;
+ int is_smbfs = (strcmp(fstype, "smbfs") == 0);
+ int status;
+ int rv = 0;
+
+ sprintf(path_buf, "%s/%s", root, name);
+ status = lstat(path_buf, &st);
+ sav_errno = errno;
+
+ /* EIO appears to correspond to an smb mount that has gone away */
+ if (!status ||
+ (is_smbfs && (sav_errno == EIO || sav_errno == EBADSLT))) {
+ int umount_ok = 0;
+
+ if (!status && (S_ISDIR(st.st_mode) && (st.st_dev != ap.dev)))
+ umount_ok = 1;
+
+ if (umount_ok || is_smbfs) {
+ rv = spawnll(LOG_DEBUG,
+ PATH_UMOUNT, PATH_UMOUNT, path_buf, NULL);
+ }
+ }
+ return rv;
+}
+
+int mount_done(void *context)
+{
+ return 0;
+}
diff -Naur autofs-4.1.4/samples/autofs-ldap-auto-master autofs-modificat/samples/autofs-ldap-auto-master
--- autofs-4.1.4/samples/autofs-ldap-auto-master 1970-01-01 01:00:00.000000000 +0100
+++ autofs-modificat/samples/autofs-ldap-auto-master 2007-02-28 11:02:14.000000000 +0100
@@ -0,0 +1,17 @@
+\x7fELF\x01\x01\x01\0\0\0\0\0\0\0\0\0\x02\0\x03\0\x01\0\0\0\0\x04\b4\0\0\0\x18\x1f\0\0\0\0\0\04\0 \0\a\0(\0\x1a\0\x19\0\x06\0\0\04\0\0\04\x04\b4\x04\bà\0\0\0à\0\0\0\x05\0\0\0\x04\0\0\0\x03\0\0\0\x14\x01\0\0\x14\x04\b\x14\x04\b\x13\0\0\0\x13\0\0\0\x04\0\0\0\x01\0\0\0\x01\0\0\0\0\0\0\0\0\x04\b\0\x04\bÈ^[\0\0È^[\0\0\x05\0\0\0\0\x10\0\0\x01\0\0\0È^[\0\0È«\x04\bÈ«\x04\bp\x01\0\0\x01\0\0\x06\0\0\0\0\x10\0\0\x02\0\0\0Ü^[\0\0Ü«\x04\bÜ«\x04\bØ\0\0\0Ø\0\0\0\x06\0\0\0\x04\0\0\0\x04\0\0\0(\x01\0\0(\x04\b(\x04\b \0\0\0 \0\0\0\x04\0\0\0\x04\0\0\0Qåtd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\0\0\0\x04\0\0\0/lib/ld-linux.so.2\0\0\x04\0\0\0\x10\0\0\0\x01\0\0\0GNU\0\0\0\0\0\x02\0\0\0\x06\0\0\0 \0\0\0\x03\0\0\0\x1d\0\0\0\x02\0\0\0\x06\0\0\0\0 \x01\0åM\v\x1d\0\0\0\x1f\0\0\0#\0\0\0ºã|CEÕì¬KãÀ8ò\x1cØqX\x1c¹ñ\x0eêÓï\x0e2Ä÷\x12³¢÷\x12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0N\0\0\0\0\0\0\0Á\0\0\0\x12\0\0\0µ\0\0\0\0\0\0\0+\0\0\0\x12\0\0\0\0\0\0\0\0\0\0Ø\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0 \0\0\0!\0\0\0\0\0\0\0\0\0\0\0 \0\0\0~\x01\0\0\0\0\0\0g\x01\0\0\x12\0\0\0ÿ\0\0\0\0\0\0\0\x10\x06\0\0\x12\0\0\0[\x01\0\0\0\0\0\0C\0\0\0\x12\0\0\0\x01\0\0\0\0\0\0\x01\0\0\x12\0\0\0J\x01\0\0\0\0\0\0¹\x01\0\0\x12\0\0\0\0\0\0\0\0\0\0ä\x01\0\0\x12\0\0\0s\0\0\0\0\0\0\0Æ\0\0\0\x12\0\0\0ó\0\0\0\0\0\0\0u\0\0\0\x12\0\0\0a\0\0\0\0\0\0\0e\0\0\0\x12\0\0\0b\x01\0\0\0\0\0\0I\0\0\0\x12\0\0\0Â\0\0\0\0\0\0\0Â\0\0\0\x12\0\0\09\x01\0\0\0\0\0\0^\x06\0\0\x12\0\0\0Ù\0\0\0\0\0\0\0\0\0\0\x12\0\0\0\x01\0\0\0\0\0\09\0\0\0\x12\0\0\05\0\0\0\0\0\0\0¨\0\0\0\x12\0\0\0w\x01\0\0\0\0\0\0_\x01\0\0\x12\0\0\0\0\0\0\0\0\0\0+\0\0\0\x12\0\0\0
\x01\0\0\0\0\0\0$\0\0\0\x12\0\0\0¥\0\0\0\0\0\0\0¼\0\0\0\x12\0\0\0B\0\0\0\0\0\0\0}\x01\0\0\x12\0\0\0ã\0\0\0\0\0\0\0b\x02\0\0\x12\0\0\0\x01\0\0\0\0\0\0;\0\0\0\x12\0\0\0R\x01\0\0\0\0\0\0W\0\0\0\x12\0\0\0»\x01\0\0H\x04\b\0\0\0\0\x10\0ñÿ¨\x01\0\08\x04\b\0\0\0\0\x10\0ñÿ*\x01\0\0È\x04\b\x04\0\0\0\x11\0\x0e\0p\x01\0\0<\x04\b\x04\0\0\0\x11\0\x17\0¯\x01\0\08\x04\b\0\0\0\0\x10\0ñÿÝ\0\0\0 \x04\b\0\0\0\0\x12\0
+\0Ó\0\0\0¨\x04\b\0\0\0\0\x12\0\r\0C\x01\0\08\x04\b\x04\0\0\0\x11\0\x17\0i\x01\0\0@\x04\b\x04\0\0\0\x11\0\x17\0\0libldap-2.3.so.0\0__gmon_start__\0_Jv_RegisterClasses\0ldap_msgfree\0ldap_get_dn\0ldap_simple_bind_s\0ldap_control_free\0ldap_next_entry\0ldap_value_free\0ldap_search_ext_s\0ldap_err2string\0ldap_memfree\0ldap_first_entry\0_fini\0ldap_init\0ldap_get_values\0ldap_unbind\0ldap_set_option\0liblber-2.3.so.0\0libc.so.6\0_IO_stdin_used\0setlocale\0optind\0strrchr\0__strdup\0memset\0getopt\0optarg\0stderr\0fwrite\0strchr\0fprintf\0__libc_start_main\0snprintf\0_edata\0__bss_start\0_end\0GLIBC_2.0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\0\0\x02\0\x02\0\x02\0\x02\0\0\0\0\0\0\0\x02\0\0\0\x02\0\0\0\x02\0\0\0\x02\0\0\0\x02\0\0\0\0\0\0\0\x02\0\x02\0\x01\0\x01\0\x01\0\x02\0\x01\0\x01\0\x01\0\x02\0\x02\0\0\0\x01\0\x01\0 \x01\0\0\x10\0\0\0\0\0\0\0\x10ii\r\0\0\x02\0À\x01\0\0\0\0\0\0´¬\x04\b\x06\x04\0\08\x04\b\x05$\0\0<\x04\b\x05 \0\0@\x04\b\x05%\0\0Ĭ\x04\b\a\x01\0\0Ȭ\x04\b\a\x02\0\0̬\x04\b\a\x03\0\0Ь\x04\b\a\x04\0\0Ô¬\x04\b\a\x06\0\0ج\x04\b\a\a\0\0ܬ\x04\b\a\b\0\0à¬\x04\b\a \0\0ä¬\x04\b\a
+\0\0è¬\x04\b\a\v\0\0ì¬\x04\b\a\f\0\0ð¬\x04\b\a\r\0\0ô¬\x04\b\a\x0e\0\0ø¬\x04\b\a\x0f\0\0ü¬\x04\b\a\x10\0\0\0\x04\b\a\x11\0\0\x04\x04\b\a\x12\0\0\b\x04\b\a\x13\0\0\f\x04\b\a\x14\0\0\x10\x04\b\a\x15\0\0\x14\x04\b\a\x16\0\0\x18\x04\b\a\x17\0\0\x1c\x04\b\a\x18\0\0 \x04\b\a\x19\0\0$\x04\b\a\x1a\0\0(\x04\b\a^[\0\0,\x04\b\a\x1c\0\0Uåì\bèù\x01\0\0èP\x02\0\0èK
+\0\0ÉÃ\0ÿ5¼¬\x04\bÿ%À¬\x04\b\0\0\0\0ÿ%Ĭ\x04\bh\0\0\0\0éàÿÿÿÿ%Ȭ\x04\bh\b\0\0\0éÐÿÿÿÿ%̬\x04\bh\x10\0\0\0éÀÿÿÿÿ%Ь\x04\bh\x18\0\0\0é°ÿÿÿÿ%Ô¬\x04\bh \0\0\0é ÿÿÿÿ%ج\x04\bh(\0\0\0éÿÿÿÿ%ܬ\x04\bh0\0\0\0éÿÿÿÿ%à¬\x04\bh8\0\0\0épÿÿÿÿ%ä¬\x04\bh@\0\0\0é`ÿÿÿÿ%è¬\x04\bhH\0\0\0éPÿÿÿÿ%ì¬\x04\bhP\0\0\0é@ÿÿÿÿ%ð¬\x04\bhX\0\0\0é0ÿÿÿÿ%ô¬\x04\bh`\0\0\0é ÿÿÿÿ%ø¬\x04\bhh\0\0\0é\x10ÿÿÿÿ%ü¬\x04\bhp\0\0\0é\0ÿÿÿÿ%\0\x04\bhx\0\0\0éðþÿÿÿ%\x04\x04\bh\0\0\0éàþÿÿÿ%\b\x04\bh\0\0\0éÐþÿÿÿ%\f\x04\bh\0\0\0éÀþÿÿÿ%\x10\x04\bh\0\0\0é°þÿÿÿ%\x14\x04\bh \0\0\0é þÿÿÿ%\x18\x04\bh¨\0\0\0éþÿÿÿ%\x1c\x04\bh°\0\0\0éþÿÿÿ% \x04\bh¸\0\0\0épþÿÿÿ%$\x04\bhÀ\0\0\0é`þÿÿÿ%(\x04\bhÈ\0\0\0éPþÿÿÿ%,\x04\bhÐ\0\0\0é@þÿÿ\0\0\0\0\0\0\0\01í^áäðPTRh\0\x04\bh\x10\x04\bQVh\x04\bèþÿÿôUåSì\x04è\0\0\0\0[Ã#\0\0üÿÿÿ
Òt\x05è2þÿÿX[ÉÃUåì\b=D\x04\b\0t\fë\x1cÀ\x04£4\x04\bÿÒ¡4\x04\b\x10
ÒuëÆ\x05D\x04\b\x01ÉÃUåì\b¡Ø«\x04\b
Àt\x12¸\0\0\0\0
Àt Ç\x04$Ø«\x04\bÿÐÉÃUÅWÏVÖSì\\b\0\0\x0f¶\x05\x04\b$t\b\0\0Ç$X\b\0\0\0\0\0\0Ç$T\b\0\0\0\0\0\0D$DD$EÇ$P\b\0\0\0\0\0\0ÇD$\bÿ\a\0\0ÇD$\x04\0\0\0\0\x04$èýÿÿ\x1c$èÑþÿÿ$D\b\0\0$|\b\0\0\x04$è»þÿÿ\$\x10\$Dt$\x14´$D\b\0\0|$\f¼$X\b\0\0Ç$L\b\0\0\0\0\0\0ÇD$\bÐ\x04\b$H\b\0\0ÇD$\x04\0\b\0\0\x1c$ècþÿÿ$P\b\0\0D$($T\b\0\0ÇD$$\0\0\0\0ÇD$ \0\0\0\0D$\x1c|$\x18ÇD$\x14\0\0\0\0t$\x10\$\fÇD$\b\x02\0\0\0ÇD$\x04\0\0\0\0,$è¡üÿÿ
Àt\x17ÇD$8\0\0\0\0D$8Ä\\b\0\0[^_]Ã$P\b\0\0,$D$\x04è3ýÿÿ
ÀtÒD$\x04,$è³ýÿÿ
ÀD$4t¾8\0t¹$p\b\0\0ÇD$\bë\x04\bÇD$\x04\0\b\0\0\x1c$D$\fè£ýÿÿ$D\b\0\0\x04$èüÿÿ$H\b\0\0\x04$è
üÿÿ$X\b\0\0
Àt\x13\x04$è¢üÿÿÇ$X\b\0\0\0\0\0\0$T\b\0\0
Àt\x13\x04$èüÿÿÇ$T\b\0\0\0\0\0\0$P\b\0\0
Àt\x13\x04$èÆüÿÿÇ$P\b\0\0\0\0\0\0$x\b\0\0\x04$è,ýÿÿ$D\b\0\0$|\b\0\0\x04$è\x16ýÿÿÇ$L\b\0\0\0\0\0\0ÇD$$\0\0\0\0ÇD$ \0\0\0\0|$\x18ÇD$\x14\0\0\0\0$H\b\0\0$P\b\0\0D$($T\b\0\0D$\x1cD$4t$\x10\$\fÇD$\b\x02\0\0\0D$\x04,$è2ûÿÿ
À\x0f
þÿÿ$P\b\0\0,$D$\x04è×ûÿÿÇD$8\0\0\0\0
ÀÆu\x17é\0\0\0t$\x04,$èxûÿÿ
ÀÆt\x7f$x\b\0\0t$\x04,$D$\bè;üÿÿt$\x04,$Ã$|\b\0\0D$\bè"üÿÿ
ÛÇt4\x13
Òt&
Àt"\0
Àt\x1cD$\bT$\x04Ç\x04$ü\x04\bèûÿÿÇD$8\x01\0\0\0\x1c$è¨ûÿÿ
ÿt<$èûÿÿt&\0éoÿÿÿD$4\x04$èWúÿÿ$D\b\0\0\x04$èÈúÿÿ$H\b\0\0\x04$è¹úÿÿ$X\b\0\0
Àt\x13\x04$èÖúÿÿÇ$X\b\0\0\0\0\0\0$T\b\0\0
Àt\x13\x04$è¸úÿÿÇ$T\b\0\0\0\0\0\0$P\b\0\0
À\x0fiýÿÿ\x04$èöúÿÿé\ýÿÿö¼'\0\0\0\0L$\x04äðÿqüì\l$X½$\x04\bL$H\$Lt$P|$T\x19q\x04ÇD$\x04]\x04\bÇ\x04$\x06\0\0\0èyúÿÿÇD$(\x03\x04\bÇD$,\x0e\x04\bÇD$0\x11\x04\bÇD$$\x1d\x04\bÇD$\b:\x04\bt$\x04\x1c$è%úÿÿøÿD$D\x0fà\0\0\0èeø\x11w\bÿ$
\x04\b6ÇD$\x04/\0\0\04$èfùÿÿ
Àt\x134$ÇD$\x04/\0\0\0èùÿÿp\x01T$0D$(|$,ÇD$ .\x04\bT$\x1cT$$D$\x14|$\x18l$\x10T$\ft$\bÇD$\x04Ø\x04\b¡<\x04\b\x04$è\x1aúÿÿ1ÀL$H\$Lt$P|$Tl$XÄ\aüÃ-@\x04\bé9ÿÿÿ¡@\x04\bD$0é+ÿÿÿ\x15@\x04\bT$(é\x1cÿÿÿ¡@\x04\bD$$é\x0eÿÿÿ=@\x04\b|$,éÿþÿÿ¡8\x04\bÇD$4.\x04\b\x14
Òt :\0\x0f
Î\0\0\0ÇD$\x04
\x01\0\0Ç\x04$\0\0\0\0è7ùÿÿ
À\x0f\0\0\0ÃD$DÇD$D\x03\0\0\0D$\bÇD$\x04\x11\0\0\0\x1c$è]øÿÿ
À\x0f
\0\0\0ÇD$\b\0\0\0\0ÇD$\x04\0\0\0\0\x1c$èí÷ÿÿ
À\x0f\0\0\0\x04$è=ùÿÿD$\f\x06ÇD$\x04 \x04\bD$\b¡<\x04\b\x04$è\x0eùÿÿ\x1c$èføÿÿ¸\x02\0\0\0éäþÿÿ¡<\x04\bÇD$\b\x18\0\0\0ÇD$\x04\x01\0\0\0Ç\x04$E\x04\bD$\fè·øÿÿ¸\x01\0\0\0éµþÿÿT$4é)ÿÿÿ\x1c$è\x1cøÿÿÇD$\x04
\x01\0\0Ç\x04$\0\0\0\0èXøÿÿÃéLÿÿÿT$(D$,|$0L$$T$\x04T$4D$\bØ|$\f,$èùÿÿ
Àt\x10\x1c$èË÷ÿÿ1ÀéKþÿÿt$$¸^\x04\b¹\r\0\0\0üÇó¦u^¿k\x04\b¹
+\0\0\0îó¦uNT$(\x0f¶\x05u\x04\b:\x02u?\x0f¶\x05v\x04\b:B\x01u3\x0f¶\x05w\x04\b:B\x02u'|$,\x0f¶\x05\x0e\x04\b:\au\x18\x0f¶\x05\x0f\x04\b:G\x01u\f\x0f¶\x05\x10\x04\b:G\x02t4T$4¹^\x04\bØÇD$\fx\x04\bÇD$\b\x0e\x04\bÇD$\x04u\x04\bÇ\x04$k\x04\bèÙøÿÿéIÿÿÿt$0¿x\x04\b¹\x15\0\0\0ó¦\x0f3ÿÿÿë´Uå]Ãt&\0¼'\0\0\0\0UåWVSè^\0\0\0Ã^[\0\0ì\x1cè÷õÿÿ\x10ÿÿÿEð\x10ÿÿÿ)EðÁ}ð\x02Uð
Òt+1ÿƶ\0\0\0\0E\x10Ç\x01D$\bE\fD$\x04E\b\x04$ÿ\x16Æ\x049}ðußÄ\x1c[^_]Ã\x1c$ÃUåS»È«\x04\bì\x04¡È«\x04\bøÿt\fë\x04ÿÐ\x03øÿuôÄ\x04[]ÃUåSì\x04è\0\0\0\0[Ã\x04^[\0\0è÷ÿÿY[ÉÃ\x03\0\0\0\x01\0\x02\0\0\0\0\0(&(objectclass=%s)(%s=%s))\0(objectclass=%s)\0%s %s
+\0nisMapName\0cn\0nisMapEntry\0nisMap\0nisObject\0auto.master\0m:e:n:k:v:\0error initializing LDAP
+\0automountMap\0automount\0ou\0automountInformation\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\b\x10\x04\b\x10\x04\b\x10\x04\b\x10\x04\b\x10\x04\bÑ\x04\b\x10\x04\bÃ\x04\b´\x04\b\x10\x04\b\x10\x04\b\x10\x04\b\x10\x04\b\x10\x04\b\x10\x04\b\x10\x04\b¦\x04\bsyntax: %s
+ [-m %s] (map object class)
+ [-e %s] (entry object class)
+ [-n %s] (attribute used as map key)
+ [-k %s] (attribute used as entry key)
+ [-v %s] (attribute used as value)
+ [%s] (map name)
+\0\0\0%s: error binding to server: %s
+\0\0\0\0\0\0\0\0ÿÿÿÿ\0\0\0\0ÿÿÿÿ\0\0\0\0\0\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x0f\x01\0\0\x01\0\0\0 \x01\0\0\f\0\0\0 \x04\b\r\0\0\0¨\x04\bõþÿoH\x04\b\x05\0\0\0ð\x04\b\x06\0\0\0\x04\b
+\0\0\0Ê\x01\0\0\v\0\0\0\x10\0\0\0\x15\0\0\0\0\0\0\0\x03\0\0\0¸¬\x04\b\x02\0\0\0Ø\0\0\0\x14\0\0\0\x11\0\0\0\x17\0\0\0H\x04\b\x11\0\0\0(\x04\b\x12\0\0\0 \0\0\0\x13\0\0\0\b\0\0\0þÿÿo\b\x04\bÿÿÿo\x01\0\0\0ðÿÿoº
\x04\b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Ü«\x04\b\0\0\0\0\0\0\0\0N\x04\b^\x04\bn\x04\b~\x04\b\x04\b\x04\b®\x04\b¾\x04\bÎ\x04\bÞ\x04\bî\x04\bþ\x04\b\x0e\x04\b\x1e\x04\b.\x04\b>\x04\bN\x04\b^\x04\bn\x04\b~\x04\b\x04\b\x04\b®\x04\b¾\x04\bÎ\x04\bÞ\x04\bî\x04\b\0\0\0\0Ô«\x04\b\0GCC: (GNU) 4.1.1 20061011 (Red Hat 4.1.1-30)\0\0GCC: (GNU) 4.1.1 20061011 (Red Hat 4.1.1-30)\0\0GCC: (GNU) 4.1.1 20070105 (Red Hat 4.1.1-51)\0\0GCC: (GNU) 4.1.1 20070105 (Red Hat 4.1.1-51)\0\0GCC: (GNU) 4.1.1 20070105 (Red Hat 4.1.1-51)\0\0GCC: (GNU) 4.1.1 20061011 (Red Hat 4.1.1-30)\0\0.shstrtab\0.interp\0.note.ABI-tag\0.gnu.hash\0.dynsym\0.dynstr\0.gnu.version\0.gnu.version_r\0.rel.dyn\0.rel.plt\0.init\0.text\0.fini\0.rodata\0.eh_frame\0.ctors\0.dtors\0.jcr\0.dynamic\0.got\0.got.plt\0.data\0.bss\0.comment\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\v\0\0\0\x01\0\0\0\x02\0\0\0\x14\x04\b\x14\x01\0\0\x13\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\x13\0\0\0\a\0\0\0\x02\0\0\0(\x04\b(\x01\0\0 \0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0!\0\0\0öÿÿo\x02\0\0\0H\x04\bH\x01\0\0H\0\0\0\x04\0\0\0\0\0\0\0\x04\0\0\0\x04\0\0\0+\0\0\0\v\0\0\0\x02\0\0\0\x04\b\x01\0\0`\x02\0\0\x05\0\0\0\x01\0\0\0\x04\0\0\0\x10\0\0\03\0\0\0\x03\0\0\0\x02\0\0\0ð\x04\bð\x03\0\0Ê\x01\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0;\0\0\0ÿÿÿo\x02\0\0\0º
\x04\bº\x05\0\0L\0\0\0\x04\0\0\0\0\0\0\0\x02\0\0\0\x02\0\0\0H\0\0\0þÿÿo\x02\0\0\0\b\x04\b\b\x06\0\0 \0\0\0\x05\0\0\0\x01\0\0\0\x04\0\0\0\0\0\0\0W\0\0\0 \0\0\0\x02\0\0\0(\x04\b(\x06\0\0 \0\0\0\x04\0\0\0\0\0\0\0\x04\0\0\0\b\0\0\0`\0\0\0 \0\0\0\x02\0\0\0H\x04\bH\x06\0\0Ø\0\0\0\x04\0\0\0\v\0\0\0\x04\0\0\0\b\0\0\0i\0\0\0\x01\0\0\0\x06\0\0\0 \x04\b \a\0\0\x17\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0d\0\0\0\x01\0\0\0\x06\0\0\08\x04\b8\a\0\0À\x01\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\x04\0\0\0o\0\0\0\x01\0\0\0\x06\0\0\0\0\x04\b\0 \0\0¨\b\0\0\0\0\0\0\0\0\0\0\x10\0\0\0\0\0\0\0u\0\0\0\x01\0\0\0\x06\0\0\0¨\x04\b¨\x11\0\0\x1c\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0{\0\0\0\x01\0\0\0\x02\0\0\0Ä\x04\bÄ\x11\0\0\0
+\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\x02\0\0\0Ä\x04\bÄ^[\0\0\x04\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\x03\0\0\0È«\x04\bÈ^[\0\0\b\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\x03\0\0\0Ы\x04\bÐ^[\0\0\b\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\x03\0\0\0Ø«\x04\bØ^[\0\0\x04\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0 \0\0\0\x06\0\0\0\x03\0\0\0Ü«\x04\bÜ^[\0\0Ø\0\0\0\x05\0\0\0\0\0\0\0\x04\0\0\0\b\0\0\0©\0\0\0\x01\0\0\0\x03\0\0\0´¬\x04\b´\x1c\0\0\x04\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\x04\0\0\0®\0\0\0\x01\0\0\0\x03\0\0\0¸¬\x04\b¸\x1c\0\0x\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\x04\0\0\0·\0\0\0\x01\0\0\0\x03\0\0\00\x04\b0\x1d\0\0\b\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0½\0\0\0\b\0\0\0\x03\0\0\08\x04\b8\x1d\0\0\x10\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0Â\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\08\x1d\0\0\x14\x01\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\x01\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0L\x1e\0\0Ë\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0
\ No newline at end of file
diff -Naur autofs-4.1.4/samples/autofs-ldap-auto-master.o autofs-modificat/samples/autofs-ldap-auto-master.o
--- autofs-4.1.4/samples/autofs-ldap-auto-master.o 1970-01-01 01:00:00.000000000 +0100
+++ autofs-modificat/samples/autofs-ldap-auto-master.o 2007-02-28 11:02:14.000000000 +0100
@@ -0,0 +1,15 @@
+\x7fELF\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\0\x03\0\x01\0\0\0\0\0\0\0\0\0\0\0\x18\x12\0\0\0\0\0\04\0\0\0\0\0(\0\x0e\0\v\0\0\0\0\0\0\0\0\0\0\0\0\0UÅWÏVÖSì\\b\0\0\x0f¶\x05\0\0\0\0$t\b\0\0Ç$X\b\0\0\0\0\0\0Ç$T\b\0\0\0\0\0\0D$DD$EÇ$P\b\0\0\0\0\0\0ÇD$\bÿ\a\0\0ÇD$\x04\0\0\0\0\x04$èüÿÿÿ\x1c$èüÿÿÿ$D\b\0\0$|\b\0\0\x04$èüÿÿÿ\$\x10\$Dt$\x14´$D\b\0\0|$\f¼$X\b\0\0Ç$L\b\0\0\0\0\0\0ÇD$\b\0\0\0\0$H\b\0\0ÇD$\x04\0\b\0\0\x1c$èüÿÿÿ$P\b\0\0D$($T\b\0\0ÇD$$\0\0\0\0ÇD$ \0\0\0\0D$\x1c|$\x18ÇD$\x14\0\0\0\0t$\x10\$\fÇD$\b\x02\0\0\0ÇD$\x04\0\0\0\0,$èüÿÿÿ
Àt\x17ÇD$8\0\0\0\0D$8Ä\\b\0\0[^_]Ã$P\b\0\0,$D$\x04èüÿÿÿ
ÀtÒD$\x04,$èüÿÿÿ
ÀD$4t¾8\0t¹$p\b\0\0ÇD$\b^[\0\0\0ÇD$\x04\0\b\0\0\x1c$D$\fèüÿÿÿ$D\b\0\0\x04$èüÿÿÿ$H\b\0\0\x04$èüÿÿÿ$X\b\0\0
Àt\x13\x04$èüÿÿÿÇ$X\b\0\0\0\0\0\0$T\b\0\0
Àt\x13\x04$èüÿÿÿÇ$T\b\0\0\0\0\0\0$P\b\0\0
Àt\x13\x04$èüÿÿÿÇ$P\b\0\0\0\0\0\0$x\b\0\0\x04$èüÿÿÿ$D\b\0\0$|\b\0\0\x04$èüÿÿÿÇ$L\b\0\0\0\0\0\0ÇD$$\0\0\0\0ÇD$ \0\0\0\0|$\x18ÇD$\x14\0\0\0\0$H\b\0\0$P\b\0\0D$($T\b\0\0D$\x1cD$4t$\x10\$\fÇD$\b\x02\0\0\0D$\x04,$èüÿÿÿ
À\x0f
þÿÿ$P\b\0\0,$D$\x04èüÿÿÿÇD$8\0\0\0\0
ÀÆu\x17é\0\0\0t$\x04,$èüÿÿÿ
ÀÆt\x7f$x\b\0\0t$\x04,$D$\bèüÿÿÿt$\x04,$Ã$|\b\0\0D$\bèüÿÿÿ
ÛÇt4\x13
Òt&
Àt"\0
Àt\x1cD$\bT$\x04Ç\x04$,\0\0\0èüÿÿÿÇD$8\x01\0\0\0\x1c$èüÿÿÿ
ÿt<$èüÿÿÿt&\0éoÿÿÿD$4\x04$èüÿÿÿ$D\b\0\0\x04$èüÿÿÿ$H\b\0\0\x04$èüÿÿÿ$X\b\0\0
Àt\x13\x04$èüÿÿÿÇ$X\b\0\0\0\0\0\0$T\b\0\0
Àt\x13\x04$èüÿÿÿÇ$T\b\0\0\0\0\0\0$P\b\0\0
À\x0fiýÿÿ\x04$èüÿÿÿé\ýÿÿö¼'\0\0\0\0L$\x04äðÿqüì\l$X½U\0\0\0L$H\$Lt$P|$T\x19q\x04ÇD$\x043\0\0\0Ç\x04$\x06\0\0\0èüÿÿÿÇD$(4\0\0\0ÇD$,?\0\0\0ÇD$0B\0\0\0ÇD$$N\0\0\0ÇD$\bk\0\0\0t$\x04\x1c$èüÿÿÿøÿD$D\x0fà\0\0\0èeø\x11w\bÿ$
\0\b\0\06ÇD$\x04/\0\0\04$èüÿÿÿ
Àt\x134$ÇD$\x04/\0\0\0èüÿÿÿp\x01T$0D$(|$,ÇD$ _\0\0\0T$\x1cT$$D$\x14|$\x18l$\x10T$\ft$\bÇD$\x04\0\0\0\0¡\0\0\0\0\x04$èüÿÿÿ1ÀL$H\$Lt$P|$Tl$XÄ\aüÃ-\0\0\0\0é9ÿÿÿ¡\0\0\0\0D$0é+ÿÿÿ\x15\0\0\0\0T$(é\x1cÿÿÿ¡\0\0\0\0D$$é\x0eÿÿÿ=\0\0\0\0|$,éÿþÿÿ¡\0\0\0\0ÇD$4_\0\0\0\x14
Òt :\0\x0f
Î\0\0\0ÇD$\x04
\x01\0\0Ç\x04$\0\0\0\0èüÿÿÿ
À\x0f\0\0\0ÃD$DÇD$D\x03\0\0\0D$\bÇD$\x04\x11\0\0\0\x1c$èüÿÿÿ
À\x0f
\0\0\0ÇD$\b\0\0\0\0ÇD$\x04\0\0\0\0\x1c$èüÿÿÿ
À\x0f\0\0\0\x04$èüÿÿÿD$\f\x06ÇD$\x04È\0\0\0D$\b¡\0\0\0\0\x04$èüÿÿÿ\x1c$èüÿÿÿ¸\x02\0\0\0éäþÿÿ¡\0\0\0\0ÇD$\b\x18\0\0\0ÇD$\x04\x01\0\0\0Ç\x04$v\0\0\0D$\fèüÿÿÿ¸\x01\0\0\0éµþÿÿT$4é)ÿÿÿ\x1c$èüÿÿÿÇD$\x04
\x01\0\0Ç\x04$\0\0\0\0èüÿÿÿÃéLÿÿÿT$(D$,|$0L$$T$\x04T$4D$\bØ|$\f,$èùÿÿ
Àt\x10\x1c$èüÿÿÿ1ÀéKþÿÿt$$¸\0\0\0¹\r\0\0\0üÇó¦u^¿\0\0\0¹
+\0\0\0îó¦uNT$(\x0f¶\x05¦\0\0\0:\x02u?\x0f¶\x05\x01\0\0\0:B\x01u3\x0f¶\x05\x02\0\0\0:B\x02u'|$,\x0f¶\x05?\0\0\0:\au\x18\x0f¶\x05\x01\0\0\0:G\x01u\f\x0f¶\x05\x02\0\0\0:G\x02t4T$4¹\0\0\0ØÇD$\f©\0\0\0ÇD$\b?\0\0\0ÇD$\x04¦\0\0\0Ç\x04$\0\0\0èÙøÿÿéIÿÿÿt$0¿©\0\0\0¹\x15\0\0\0ó¦\x0f3ÿÿÿë´(&(objectclass=%s)(%s=%s))\0(objectclass=%s)\0%s %s
+\0\0nisMapName\0cn\0nisMapEntry\0nisMap\0nisObject\0auto.master\0m:e:n:k:v:\0error initializing LDAP
+\0automountMap\0automount\0ou\0automountInformation\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ë\x04\0\0`\x04\0\0`\x04\0\0`\x04\0\0`\x04\0\0`\x04\0\0!\x05\0\0`\x04\0\0\x13\x05\0\0\x04\x05\0\0`\x04\0\0`\x04\0\0`\x04\0\0`\x04\0\0`\x04\0\0`\x04\0\0`\x04\0\0ö\x04\0\0syntax: %s
+ [-m %s] (map object class)
+ [-e %s] (entry object class)
+ [-n %s] (attribute used as map key)
+ [-k %s] (attribute used as entry key)
+ [-v %s] (attribute used as value)
+ [%s] (map name)
+\0\0\0%s: error binding to server: %s
+\0\0GCC: (GNU) 4.1.1 20070105 (Red Hat 4.1.1-51)\0\0.symtab\0.strtab\0.shstrtab\0.rel.text\0.data\0.bss\0.rodata.str1.1\0.rel.rodata\0.rodata.str1.4\0.comment\0.note.GNU-stack\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1f\0\0\0\x01\0\0\0\x06\0\0\0\0\0\0\0@\0\0\0D\a\0\0\0\0\0\0\0\0\0\0\x10\0\0\0\0\0\0\0^[\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\\x18\0\0 \x02\0\0\f\0\0\0\x01\0\0\0\x04\0\0\0\b\0\0\0%\0\0\0\x01\0\0\0\x03\0\0\0\0\0\0\0\a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0+\0\0\0\b\0\0\0\x03\0\0\0\0\0\0\0\a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\00\0\0\0\x01\0\0\02\0\0\0\0\0\0\0\a\0\0¾\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\x01\0\0\0C\0\0\0\x01\0\0\0\x02\0\0\0\0\0\0\0D\b\0\0H\b\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0?\0\0\0 \0\0\0\0\0\0\0\0\0\0\0ü\x1a\0\0\0\0\0\f\0\0\0\x06\0\0\0\x04\0\0\0\b\0\0\0K\0\0\0\x01\0\0\02\0\0\0\0\0\0\0\x10\0\0é\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\x01\0\0\0Z\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0u\x11\0\0.\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0c\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0£\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\x11\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0£\x11\0\0s\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\x01\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0H\x14\0\0 \x02\0\0\r\0\0\0\r\0\0\0\x04\0\0\0\x10\0\0\0 \0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0è\x16\0\0q\x01\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x04\0ñÿ\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x06\0^[\0\0\0\0\0\0\0Ç\x03\0\0\x02\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\b\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0
+\0$\0\0\0¦\0\0\0\0\0\0\0\0\0\x05\0*\0\0\0?\0\0\0\0\0\0\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0 \0/\0\0\0\0\0\0\0\0\0\0\0\x10\0\0\06\0\0\0\0\0\0\0\0\0\0\0\x10\0\0\0?\0\0\0\0\0\0\0\0\0\0\0\x10\0\0\0H\0\0\0\0\0\0\0\0\0\0\0\x10\0\0\0Z\0\0\0\0\0\0\0\0\0\0\0\x10\0\0\0k\0\0\0\0\0\0\0\0\0\0\0\x10\0\0\0w\0\0\0\0\0\0\0\0\0\0\0\x10\0\0\0|\0\0\0\0\0\0\0\0\0\0\0\x10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x10\0\0\0«\0\0\0\0\0\0\0\0\0\0\0\x10\0\0\0»\0\0\0\0\0\0\0\0\0\0\0\x10\0\0\0Â\0\0\0\0\0\0\0\0\0\0\0\x10\0\0\0Ò\0\0\0\0\0\0\0\0\0\0\0\x10\0\0\0ß\0\0\0Ð\x03\0\0t\x03\0\0\x12\0\x01\0ä\0\0\0\0\0\0\0\0\0\0\0\x10\0\0\0î\0\0\0\0\0\0\0\0\0\0\0\x10\0\0\0õ\0\0\0\0\0\0\0\0\0\0\0\x10\0\0\0ü\0\0\0\0\0\0\0\0\0\0\0\x10\0\0\0\x04\x01\0\0\0\0\0\0\0\0\0\0\x10\0\0\0\v\x01\0\0\0\0\0\0\0\0\0\0\x10\0\0\0\x13\x01\0\0\0\0\0\0\0\0\0\0\x10\0\0\0\x1a\x01\0\0\0\0\0\0\0\0\0\0\x10\0\0\0!\x01\0\0\0\0\0\0\0\0\0\0\x10\0\0\0+\x01\0\0\0\0\0\0\0\0\0\0\x10\0\0\0;\x01\0\0\0\0\0\0\0\0\0\0\x10\0\0\0N\x01\0\0\0\0\0\0\0\0\0\0\x10\0\0\0^\x01\0\0\0\0\0\0\0\0\0\0\x10\0\0\0j\x01\0\0\0\0\0\0\0\0\0\0\x10\0\0\0\0autofs-ldap-auto-master.c\0dump_map\0.LC17\0.LC6\0memset\0__strdup\0snprintf\0ldap_search_ext_s\0ldap_first_entry\0ldap_get_dn\0free\0ldap_control_free\0ldap_msgfree\0ldap_next_entry\0ldap_get_values\0printf\0ldap_value_free\0ldap_memfree\0main\0setlocale\0getopt\0strchr\0strrchr\0stderr\0fprintf\0optarg\0optind\0ldap_init\0ldap_set_option\0ldap_simple_bind_s\0ldap_err2string\0ldap_unbind\0fwrite\0\0\0\0\x13\0\0\0\x01\x06\0\0[\0\0\0\x02\r\0\0c\0\0\0\x02\x0e\0\0y\0\0\0\x02\x0e\0\0ª\0\0\0\x01\x05\0\0Á\0\0\0\x02\x0f\0\0\x13\x01\0\0\x02\x10\0\0A\x01\0\0\x02\x11\0\0Q\x01\0\0\x02\x12\0\0m\x01\0\0\x01\x05\0\0\x01\0\0\x02\x0f\0\0\x01\0\0\x02\x13\0\0\x01\0\0\x02\x13\0\0²\x01\0\0\x02\x14\0\0Ð\x01\0\0\x02\x14\0\0î\x01\0\0\x02\x15\0\0\b\x02\0\0\x02\x0e\0\0\x1e\x02\0\0\x02\x0e\0\0\x02\0\0\x02\x10\0\0\x02\0\0\x02\x11\0\0¼\x02\0\0\x02\x16\0\0Ù\x02\0\0\x02\x17\0\0ò\x02\0\0\x02\x17\0\0\x17\x03\0\0\x01\x05\0\0\x1c\x03\0\0\x02\x18\0\0,\x03\0\0\x02\x19\0\08\x03\0\0\x02\x19\0\0M\x03\0\0\x02\x1a\0\0\\x03\0\0\x02\x13\0\0k\x03\0\0\x02\x13\0\0~\x03\0\0\x02\x14\0\0\x03\0\0\x02\x14\0\0¾\x03\0\0\x02\x15\0\0â\x03\0\0\x01\x05\0\0ÿ\x03\0\0\x01\x05\0\0\v\x04\0\0\x02\x1c\0\0\x13\x04\0\0\x01\x05\0\0^[\x04\0\0\x01\x05\0\0#\x04\0\0\x01\x05\0\0+\x04\0\0\x01\x05\0\03\x04\0\0\x01\x05\0\0?\x04\0\0\x02\x1d\0\0[\x04\0\0\x01\x06\0\0n\x04\0\0\x02\x1e\0\0\x04\0\0\x02\x1f\0\0\x04\0\0\x01\x05\0\0½\x04\0\0\x01\b\0\0Â\x04\0\0\x01 \0\0Ê\x04\0\0\x02!\0\0í\x04\0\0\x01"\0\0÷\x04\0\0\x01"\0\0\x06\x05\0\0\x01"\0\0\x14\x05\0\0\x01"\0\0#\x05\0\0\x01"\0\01\x05\0\0\x01#\0\09\x05\0\0\x01\x05\0\0]\x05\0\0\x02$\0\0\x05\0\0\x02%\0\0§\x05\0\0\x02&\0\0·\x05\0\0\x02'\0\0Å\x05\0\0\x01\b\0\0Î\x05\0\0\x01 \0\0Ö\x05\0\0\x02!\0\0Þ\x05\0\0\x02(\0\0í\x05\0\0\x01 \0\0\x04\x06\0\0\x01\x05\0\0\r\x06\0\0\x02)\0\0(\x06\0\0\x02(\0\0<\x06\0\0\x02$\0\0y\x06\0\0\x02(\0\0\x06\0\0\x01\x05\0\0\x06\0\0\x01\x05\0\0±\x06\0\0\x01\x05\0\0¼\x06\0\0\x01
+\0\0È\x06\0\0\x01
+\0\0Ø\x06\0\0\x01\x05\0\0ã\x06\0\0\x01\v\0\0ï\x06\0\0\x01\v\0\0ý\x06\0\0\x01\x05\0\0\a\a\0\0\x01\x05\0\0\x0f\a\0\0\x01\x05\0\0\x17\a\0\0\x01\x05\0\0\x1e\a\0\0\x01\x05\0\01\a\0\0\x01\x05\0\0\0\b\0\0\x01\x02\0\0\x04\b\0\0\x01\x02\0\0\b\b\0\0\x01\x02\0\0\f\b\0\0\x01\x02\0\0\x10\b\0\0\x01\x02\0\0\x14\b\0\0\x01\x02\0\0\x18\b\0\0\x01\x02\0\0\x1c\b\0\0\x01\x02\0\0 \b\0\0\x01\x02\0\0$\b\0\0\x01\x02\0\0(\b\0\0\x01\x02\0\0,\b\0\0\x01\x02\0\00\b\0\0\x01\x02\0\04\b\0\0\x01\x02\0\08\b\0\0\x01\x02\0\0<\b\0\0\x01\x02\0\0@\b\0\0\x01\x02\0\0D\b\0\0\x01\x02\0\0
\ No newline at end of file
diff -Naur autofs-4.1.4/samples/Makefile autofs-modificat/samples/Makefile
--- autofs-4.1.4/samples/Makefile 2005-01-04 15:36:54.000000000 +0100
+++ autofs-modificat/samples/Makefile 2007-02-28 10:46:48.000000000 +0100
@@ -26,14 +26,14 @@
install: all
install -d -m 755 $(INSTALLROOT)/etc
- -mv -f $(INSTALLROOT)/etc/auto.master $(INSTALLROOT)/etc/auto.master.old
- install -c auto.master -m 644 $(INSTALLROOT)/etc
- -mv -f $(INSTALLROOT)/etc/auto.misc $(INSTALLROOT)/etc/auto.misc.old
- install -c auto.misc -m 644 $(INSTALLROOT)/etc
- -mv -f $(INSTALLROOT)/etc/auto.net $(INSTALLROOT)/etc/auto.net.old
- install -c auto.net -m 755 $(INSTALLROOT)/etc
- -mv -f $(INSTALLROOT)/etc/auto.smb $(INSTALLROOT)/etc/auto.smb.old
- install -c auto.smb -m 755 $(INSTALLROOT)/etc
+ #-mv -f $(INSTALLROOT)/etc/auto.master $(INSTALLROOT)/etc/auto.master.old
+ #install -c auto.master -m 644 $(INSTALLROOT)/etc
+ #-mv -f $(INSTALLROOT)/etc/auto.misc $(INSTALLROOT)/etc/auto.misc.old
+ #install -c auto.misc -m 644 $(INSTALLROOT)/etc
+ #-mv -f $(INSTALLROOT)/etc/auto.net $(INSTALLROOT)/etc/auto.net.old
+ #install -c auto.net -m 755 $(INSTALLROOT)/etc
+ #-mv -f $(INSTALLROOT)/etc/auto.smb $(INSTALLROOT)/etc/auto.smb.old
+ #install -c auto.smb -m 755 $(INSTALLROOT)/etc
install -d -m 755 $(INSTALLROOT)$(initdir)
install -c rc.autofs -m 755 $(INSTALLROOT)$(initdir)/autofs
install -d -m 755 $(INSTALLROOT)$(autofslibdir)
diff -Naur autofs-4.1.4/samples/rc.autofs autofs-modificat/samples/rc.autofs
--- autofs-4.1.4/samples/rc.autofs 1970-01-01 01:00:00.000000000 +0100
+++ autofs-modificat/samples/rc.autofs 2007-02-28 11:02:14.000000000 +0100
@@ -0,0 +1,776 @@
+#!/bin/bash
+#
+# $Id: rc.autofs.in,v 1.58 2005/04/11 11:30:54 raven Exp $
+#
+# rc file for automount using a Sun-style "master map".
+# We first look for a local /etc/auto.master, then a YP
+# map with that name
+#
+# On most distributions, this file should be called:
+# /etc/rc.d/init.d/autofs or /etc/init.d/autofs
+#
+
+# For Redhat-ish systems
+#
+# chkconfig: 345 28 72
+# processname: /usr/sbin/automount
+# config: /etc/auto.master
+# description: Automounts filesystems on demand
+
+# This is used in the Debian distribution to determine the proper
+# location for the S- and K-links to this init file.
+# The following value is extracted by debstd to figure out how to
+# generate the postinst script. Edit the field to change the way the
+# script is registered through update-rc.d (see the manpage for
+# update-rc.d!)
+#
+FLAGS="defaults 21"
+
+#
+# Location of the automount daemon and the init directory
+#
+DAEMON=/usr/sbin/automount
+prog=`basename $DAEMON`
+initdir=/etc/init.d
+
+test -e $DAEMON || exit 0
+
+#
+# Determine which kind of configuration we're using
+#
+system=unknown
+if [ -f /etc/debian_version ]; then
+ system=debian
+elif [ -f /etc/redhat-release ]; then
+ system=redhat
+else
+ echo "$0: Unknown system, please port and contact autofs@linux.kernel.org" 1>&2
+ exit 1
+fi
+
+if [ $system = redhat ]; then
+ . $initdir/functions
+fi
+
+if [ $system = debian ]; then
+ thisscript="$0"
+ if [ ! -f "$thisscript" ]; then
+ echo "$0: Cannot find myself" 1>&2
+ exit 1
+ fi
+fi
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+export PATH
+
+#
+# We can add local options here
+# e.g. localoptions='rsize=8192,wsize=8192'
+#
+localoptions=''
+
+#
+# Daemon options
+# e.g. --timeout=60
+#
+daemonoptions=''
+
+#
+# load custom settings
+#
+if [ "$system" = "redhat" ]; then
+ LOCALOPTIONS=""
+ DAEMONOPTIONS=""
+ UNDERSCORETODOT=1
+ DISABLE_DIRECT=1
+ DAEMON_EXIT_WAIT=20
+
+ [ -f /etc/sysconfig/autofs ] && . /etc/sysconfig/autofs
+
+ # Over-ride localoptions if set
+ if [ -n "$LOCALOPTIONS" ]; then
+ localoptions=$LOCALOPTIONS
+ fi
+
+ # Over-ride daemonoptions if set
+ if [ -n "$DAEMONOPTIONS" ]; then
+ daemonoptions=$DAEMONOPTIONS
+ fi
+elif [ "$system" = "debian" ]; then
+ TIMEOUT=300
+ DISABLE_DIRECT=1
+ DAEMON_EXIT_WAIT=20
+
+ [ -f /etc/default/autofs ] && . /etc/default/autofs
+
+ daemonoptions="$daemonoptions --timeout=$TIMEOUT"
+fi
+
+#
+# Check for all maps that are to be loaded
+#
+function getschemes()
+{
+ SOURCES=`grep ^automount: /etc/nsswitch.conf | \
+ sed -e 's/^.*://' -e 's/\[.*\]/ /g'`
+
+ if [ `echo $SOURCES | awk '{print NF}'` -gt 0 ]
+ then
+ echo ${SOURCES}
+ else
+ echo files
+ fi
+}
+
+function catnismap()
+{
+ if [ -z "$1" ] ; then
+ map="auto_master"
+ else
+ map="$1"
+ fi
+ /usr/bin/ypcat -k "$map" 2> /dev/null | sed -e '/^#/d' -e '/^$/d'
+}
+
+function getfilemounts()
+{
+ if [ -f /etc/auto.master ] ; then
+ cat /etc/auto.master | awk '{print $0}' | sed -e '/^#/d' -e '/^$/d' | (
+ while read auto_master_in
+ do
+ if [ "`echo $auto_master_in | grep '^+'`" = "" ]; then
+ echo $auto_master_in
+ else
+ for nismap in `cat /etc/auto.master | grep '^\+' |
+ sed -e '/^#/d' -e '/^$/d'`; do
+ catnismap `echo "$nismap" | sed -e 's/^\+//'`
+ done
+ fi
+ done
+ )
+ fi
+}
+
+function getnismounts()
+{
+ YPMAP=`catnismap auto.master`
+ if [ -z "$YPMAP" ]; then
+ catnismap
+ else
+ catnismap auto.master
+ fi
+}
+
+function getldapmounts()
+{
+ if [ -x /usr/lib/autofs/autofs-ldap-auto-master ]; then
+ /usr/lib/autofs/autofs-ldap-auto-master 2> /dev/null
+ fi
+}
+
+function getrawmounts()
+{
+ for scheme in `getschemes` ; do
+ case "$scheme" in
+ files)
+ if [ -z "$filescheme" ] ; then
+ getfilemounts
+ filescheme=1
+ export filescheme
+ fi
+ ;;
+ nis)
+ if [ -z "$nisscheme" ] ; then
+ getnismounts
+ nisscheme=1
+ export nisscheme
+ fi
+ ;;
+ ldap*)
+ if [ -z "$ldapscheme" ] ; then
+ getldapmounts
+ ldapscheme=1
+ export ldapscheme
+ fi
+ ;;
+ esac
+ done
+}
+
+
+#
+# This function will build a list of automount commands to execute in
+# order to activate all the mount points. It is used to figure out
+# the difference of automount points in case of a reload
+#
+function getmounts()
+{
+ local LC_ALL=C
+ export LC_ALL
+ knownmaps=" "
+ getrawmounts | (
+ while read dir map options
+ do
+ # These checks screen out duplicates and skip over directories
+ # where the map is '-'.
+ # We can't do empty or direct host maps, so don't bother trying.
+
+ # Strip trailing slashes from the dir line if it exists to aid
+ # in checking for duplicate maps
+ dir=`echo "$dir" | sed -e "s/\/*$//"`
+
+ if [ ! -z "$map" -a "$map" = "-hosts" ] ; then
+ continue
+ fi
+
+ if [ $DISABLE_DIRECT -eq 1 \
+ -a x`echo $dir | grep -E "^/-"` != 'x' ]
+ then
+ continue
+ fi
+
+ # Do not include a map if it is a duplicate, maps on top of
+ # another map or another map, maps on top of it.
+ for knownmap in $knownmaps
+ do
+ if [ "`echo $dir/ | grep ^$knownmap`" != "" \
+ -o "`echo $knownmap | grep ^$dir/`" != "" \]
+ then
+ continue 2
+ fi
+ done
+
+ if [ ! -z "$dir" -a ! -z "$map" \
+ -a x`echo "$map" | cut -c1` != 'x-' ]
+ then
+ # If the options include a -t or --timeout, a -g or --ghost,
+ # a -v or --verbose or a -d or --debug paramter, then pull
+ # those particular options out.
+ : echo DAEMONOPTIONS OPTIONS $daemonoptions $options
+ startupoptions=
+ if echo "$options" | grep -qE -- '\B-(t\b|-timeout\b=)' ;
+ then
+ startupoptions="--timeout=$(echo $options |\
+ sed 's/.*-\(t[^0-9]*\|-timeout\)[ \t=]*\([0-9][0-9]*\).*$/\2/g')"
+ elif echo "$daemonoptions" | grep -q -- '-t' ;
+ then
+ # It's okay to be sloppy with DAEMONOPTIONS as there is no
+ # possibility of conflicting with mount or map options.
+ startupoptions="--timeout=$(echo $daemonoptions | \
+ sed 's/.*--*t\(imeout\)*[ \t=]*\([0-9][0-9]*\).*$/\2/g')"
+ fi
+
+ # Check for the ghost option
+ if echo "$daemonoptions $options" | grep -qE -- '\B-(g\b|-ghost\b)' ;
+ then
+ startupoptions="$startupoptions --ghost"
+ fi
+ # Dont even deal with conflicts between --ghost and [no]browse
+ # Its just insane to configure things like that.
+ if echo "$options" | grep -qE -- '\B-browse\b' ;
+ then
+ startupoptions="$startupoptions --ghost"
+ fi
+ # Check for verbose
+ if echo "$daemonoptions $options" | \
+ grep -qE -- '\B-(v\b|-verbose\b)' ;
+ then
+ startupoptions="$startupoptions --verbose"
+ fi
+
+ # Check for debug
+ if echo "$daemonoptions $options" | \
+ grep -qE -- '\B-(d\b|-debug\b)' ;
+ then
+ startupoptions="$startupoptions --debug"
+ fi
+
+ # Other option flags are intended for maps.
+ mapoptions="$(echo "$daemonoptions $options" |\
+ sed 's/-\(t[^0-9]*\|-timeout\)[ \t=]*\([0-9][0-9]*\)//g' |
+ sed 's/-\(g\b\|-ghost\b\)//g' |
+ sed 's/-\(v\b\|-verbose\b\)//g' |
+ sed 's/-\(d\b\|-debug\b\)//g' |
+ sed 's/-\b\(no\)\?browse\b//g')"
+
+ # Break up the maptype and map, if the map type is specified
+ maptype=`echo $map | cut -f1 -d:`
+ # Handle degenerate map specifiers
+ if [ "$maptype" = "$map" ] ; then
+ if [ "$map" = "hesiod" -o "$map" = "userhome" ] ; then
+ maptype=$map
+ map=
+ elif [ "$map" = "multi" ] ; then
+ maptype=$map
+ map=
+# elif echo "$map" | grep -q '^!'; then
+# map=`echo "$map"| sed -e 's/^!//g'`
+ elif `echo $map | grep -q "^/"` && [ -x "$map" ]; then
+ maptype=program
+ elif [ -x "/etc/$map" ]; then
+ maptype=program
+ map=`echo /etc/$map | sed 's^//^/^g'`
+ elif `echo $map | grep -q "^/"` && [ -f "$map" ]; then
+ maptype=file
+ elif [ -f "/etc/$map" ]; then
+ maptype=file
+ map=`echo /etc/$map | sed 's^//^/^g'`
+ else
+ maptype=yp
+ if [ "$UNDERSCORETODOT" = "1" ] ; then
+ map=`basename $map | sed -e s/^auto_home/auto.home/ -e s/^auto_mnt/auto.mnt/`
+ else
+ map=`basename $map | sed 's^//^/^g'`
+ fi
+ fi
+ fi
+ map=`echo $map | cut -f2- -d:`
+
+ : echo STARTUPOPTIONS $startupoptions
+ : echo DIR $dir
+ : echo MAPTYPE $maptype
+ : echo MAP $map
+ : echo MAPOPTIONS $mapoptions
+ : echo LOCALOPTIONS $localoptions
+
+ NEWOPTIONS=""
+ for m in $mapoptions
+ do
+ if [ x"$m" = x"--" ]; then
+ NEWOPTIONS="$NEWOPTIONS $localoptions --"
+ else
+ NEWOPTIONS="$NEWOPTIONS $m"
+ fi
+ done
+ mapoptions=$NEWOPTIONS
+
+ echo "$DAEMON $startupoptions $dir $maptype $map $mapoptions $localoptions" | sed -e 's/ / /g' -e 's/ */ /g'
+
+ : echo ------------------------
+ knownmaps=" $dir/ $knownmaps"
+ fi
+ done
+ )
+}
+
+#
+# Status lister.
+#
+function status()
+{
+ echo -e $"Configured Mount Points:\n------------------------"
+ getmounts
+ echo ""
+ echo -e $"Active Mount Points:\n--------------------"
+ ps axwww|grep "[0-9]:[0-9][0-9] $DAEMON " | (
+ while read pid tt stat time command; do echo $command; done
+ )
+}
+
+function get_command_from_pid()
+{
+ ps ax | grep "[0-9]:[0-9][0-9] $DAEMON " | (
+ while read pid tt stat time command; do
+ if [ "$pid" = "$1" ] ; then
+ echo `echo "$command" | \
+ sed 's/--pid-file.*\.pid/ /'`
+ return 0
+ fi
+ done
+ )
+ return 0
+}
+
+# return true if at least one pid is alive
+function alive()
+{
+ if [ -z "$*" ]; then
+ return 1
+ fi
+ for i in $*; do
+ if kill -0 $i 2> /dev/null; then
+ return 0
+ fi
+ done
+
+ return 1
+}
+
+#
+# Find pids of process group leaders
+#
+function get_pgrp_pids()
+{
+ ps -eo pid,pgrp,cmd|grep $DAEMON|\
+ awk '{print $1,$2}'|\
+ while read pid pgrp
+ do
+ if [ $pid -eq $pgrp ]
+ then
+ echo $pid
+ fi
+ done
+}
+
+#
+# Signal each automount process group leader
+#
+function signal_automounts()
+{
+ RETVAL=0
+ pgrp_pids=`get_pgrp_pids`
+ for pid in $pgrp_pids
+ do
+ kill -USR2 $pid 2 > /dev/null
+ count=0
+ while ps ax|grep -v grep|grep $pid >/dev/null
+ do
+ sleep 1
+ count=$(expr $count + 1)
+ if [ $count -gt $DAEMON_EXIT_WAIT ]; then
+ break;
+ fi
+ done
+ done
+
+ if [ -n "`/sbin/pidof $DAEMON`" ] ; then
+ RETVAL=1
+ fi
+
+ return $RETVAL
+}
+
+function umount_loopback()
+{
+ loops=`LC_ALL=C awk '!/^#/ && $1 ~ /^\/dev\/loop/ && $2 != "/" {print $2}' /proc/mounts`
+ automounts=`LC_ALL=C awk '!/^#/ && $1 ~ /^automount/ {print $2}' /proc/mounts`
+
+ for l in $loops
+ do
+ # If a loop device is mounted into a subdir of the automount point,
+ # umount it here.
+ for a in $automounts
+ do
+ match=`echo $l | grep -E "^$a[\$|/]" || true`
+ if [ -n "$match" ]; then
+ echo ""
+ echo -n $"Unmounting loopback filesystem $match: "
+ loopdev=`LC_ALL=C grep $l /proc/mounts | awk '{print $1}'`
+ umount -d $match
+ if [ $? -eq 0 ]; then
+ echo "done"
+ else
+ echo "failed ($?)"
+ fi
+ fi
+ done
+ done
+
+ # If the loop device file exists under the automount point, umount
+ # it here.
+ loopmnts=`LC_ALL=C awk '!/^#/ && $1 ~ /^\/dev\/loop/ && $2 != "/" {print $1}' /proc/mounts`
+ for l in $loopmnts
+ do
+ loopmnt=`losetup $l | awk -F\( '{print $2}' | awk -F\) '{print $1}'`
+ for a in $automounts
+ do
+ match=`echo $loopmnt | grep -E "^$a[\$|/]" || true`
+ if [ -n "$match" ]; then
+ echo ""
+ echo -n $"Unmounting loopback filesystem $match: "
+ umount -d $match
+ if [ $? -eq 0 ]; then
+ echo "done"
+ else
+ echo "failed ($?)"
+ fi
+ fi
+ done
+ done
+}
+
+#
+# Redhat start/stop function.
+#
+function redhat()
+{
+
+#
+# See how we were called.
+#
+case "$1" in
+ start)
+ # Make sure the autofs filesystem type is available.
+ (grep -q autofs /proc/filesystems || /sbin/modprobe -k autofs4 || /sbin/modprobe -k autofs) 2> /dev/null
+ echo -n $"Starting $prog: "
+ TMP=`mktemp /tmp/autofs.XXXXXX` || { echo $"could not make temp file" >& 2; exit 1; }
+ getmounts | tee $TMP | sh
+ RETVAL=$?
+ if [ -s $TMP ] ; then
+ if [ $RETVAL -eq 0 ] ; then
+ success "$prog startup"
+ else
+ failure "$prog startup"
+ fi
+ [ $RETVAL = 0 ] && touch /var/lock/subsys/autofs
+ else
+ echo -n $"No Mountpoints Defined"
+ success "$prog startup"
+ fi
+ rm -f $TMP
+ echo
+ ;;
+ stop)
+ echo -n $"Stopping $prog:"
+ if [ -z "`pidofproc $prog`" -a -z "`getmounts`" ]; then
+ RETVAL=0
+ else
+ umount_loopback
+ signal_automounts
+ RETVAL=$?
+ fi
+ count=0
+ while [ -n "`/sbin/pidof $DAEMON`" -a $count -lt 10 ] ; do
+ killproc $DAEMON -USR2 >& /dev/null
+ RETVAL=$?
+ [ $RETVAL = 0 -a -z "`/sbin/pidof $DAEMON`" ] || sleep 3
+ count=`expr $count + 1`
+ done
+ umount -a -f -t autofs
+ rm -f /var/lock/subsys/autofs
+ if [ -n "`/sbin/pidof $DAEMON`" ] ; then
+ failure "$prog shutdown"
+ else
+ success "$prog shutdown"
+ fi
+ echo
+ ;;
+ restart)
+ redhat stop
+ redhat start
+ ;;
+ reload)
+ if [ ! -f /var/lock/subsys/autofs ]; then
+ echo $"$prog not running"
+ RETVAL=1
+ return
+ fi
+ echo $"Checking for changes to /etc/auto.master ...."
+ TMP1=`mktemp /tmp/autofs.XXXXXX` || { echo $"could not make temp file" >& 2; exit 1; }
+ TMP2=`mktemp /tmp/autofs.XXXXXX` || { echo $"could not make temp file" >& 2; exit 1; }
+ getmounts >$TMP1
+ ps axwww|grep "[0-9]:[0-9][0-9] $DAEMON " | (
+ while read pid tt stat time command; do
+ echo "$command" >>$TMP2
+ if ! grep -q "^$command" $TMP1; then
+ if ! echo "$command" | grep -q -e --submount; then
+ kill -USR2 $pid 2> /dev/null
+ echo $"Stop $command"
+ fi
+ else
+ kill -HUP $pid 2> /dev/null
+ echo $"Reload map $command"
+ fi
+ done
+ )
+ cat $TMP1 | ( while read x; do
+ if ! grep -q "^$x" $TMP2; then
+ $x
+ echo $"Start $x"
+ fi
+ done )
+ rm -f $TMP1 $TMP2
+ ;;
+ status)
+ status
+ ;;
+ condrestart)
+ [ -f /var/lock/subsys/autofs ] && redhat restart
+ RETVAL=0
+ ;;
+ *)
+ echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}"
+ RETVAL=0
+esac
+}
+
+#
+# Debian start/stop functions.
+#
+function debian()
+{
+
+case "$1" in
+start)
+ echo -n 'Starting automounter:'
+
+ # make sure autofs4 is loaded
+ if ! grep -q autofs /proc/filesystems
+ then
+ # autofs filesystem support not loaded
+ echo -n ' loading autofs4 kernel module,'
+ modprobe autofs4 || true
+ elif ([ -f /proc/modules ] && lsmod) | grep -q autofs[^4]; then
+ # wrong autofs filesystem module loaded
+ echo
+ echo "WARNING: autofs kernel module is loaded, autofs4 needed"
+ echo " for correct behaviour. You might experience mount failures."
+ fi
+
+ # Check that maps exist
+ if [ -z "$(getrawmounts)" ]
+ then
+ echo " no automount maps defined."
+ exit 0
+ fi
+
+ # ensure pid file directory exists
+ if [ ! -e /var/run/autofs ]
+ then
+ mkdir /var/run/autofs
+ fi
+
+ getmounts | while read cmd rest
+ do
+ mnt=`echo $rest | sed 's/^.* \(\/[^ ]*\) [A-Za-z].*$/\1/'`
+ pidfile=/var/run/autofs/`echo $mnt | sed 's,/,_,g'`.pid
+
+ start-stop-daemon --start --pidfile $pidfile --quiet \
+ --exec $DAEMON -- --pid-file=$pidfile $rest
+
+ ret=$?
+
+ if [ $ret -ne 0 ]
+ then
+ echo
+ echo " failed to start automount point $mnt"
+ fi
+ done
+
+ echo " done."
+ ;;
+stop)
+ echo -n 'Stopping automounter:'
+
+ umount_loopback
+
+ any=0
+ for file in `ls /var/run/autofs/*.pid 2>/dev/null`
+ do
+ if [ -e "$file" ]
+ then
+ any=1
+ pid=`head -n 1 $file`
+ mnt=`ps -wwo 'cmd=' $pid | sed -e \
+ 's,.* --pid-file=/var/run/autofs/\([^ ]*\)\.pid.*,\1,; s,_,/,g'`
+ dname=`basename $DAEMON`
+
+ start-stop-daemon --stop --quiet \
+ --retry USR2/$DAEMON_EXIT_WAIT \
+ --pidfile $file --name $dname
+
+ ret=$?
+
+ case $ret in
+ 0)
+# echo -n " $mnt"
+ rm -f $file
+ ;;
+ 1)
+ echo -n -e "\n No process for automount $mnt"
+ rm -f $file
+ ;;
+ 2)
+ echo -n -e "\n Couldn't stop automount for $mnt"
+ ;;
+ *)
+ echo -n -e \
+ "\n Strange start-stop-daemon exit status: $ret"
+ ;;
+ esac
+ fi
+ done
+
+ echo " done."
+ ;;
+reload)
+ echo "Reloading automounter: checking for changes ... "
+
+ TMP1=`mktemp -t autofs.XXXXXX`
+ TMP2=`mktemp -t autofs.XXXXXX`
+
+ getmounts >$TMP1
+
+ for i in `ls /var/run/autofs/*.pid 2>/dev/null`
+ do
+ pid=`head -n 1 $i 2>/dev/null`
+ [ "$pid" = "" ] && continue
+
+ cmd=`get_command_from_pid $pid`
+ echo $cmd >>$TMP2
+
+ mnt=`ps -wwo 'cmd=' $pid | sed -e \
+ 's,.* --pid-file=/var/run/autofs/\([^ ]*\)\.pid.*,\1,; s,_,/,g'`
+
+ if ! grep -q "$cmd" $TMP1; then
+ echo "Stopping automounter for: $mnt"
+ kill -USR2 $pid 2> /dev/null
+ else
+ echo "Reloading automounter map for: $mnt"
+ kill -HUP $pid 2> /dev/null
+ fi
+ done
+
+ cat $TMP1 | (while read x; do
+ if ! grep -q "^$x" $TMP2; then
+ echo $x | while read cmd rest; do
+
+ mnt=`echo $rest | sed 's/^.* \(\/[^ ]*\) [A-Za-z].*$/\1/'`
+ pidfile=/var/run/autofs/`echo $mnt | sed 's,/,_,g'`.pid
+
+ start-stop-daemon --start --pidfile $pidfile --quiet \
+ --exec $DAEMON -- --pid-file=$pidfile $rest
+
+ ret=$?
+
+ if [ $ret -ne 0 ]
+ then
+ echo
+ echo " failed to start automount point $mnt"
+ else
+ echo "Started automounter: $mnt"
+ fi
+ done
+ fi
+ done)
+
+ rm -f $TMP1 $TMP2
+ ;;
+force-reload|restart)
+ debian stop
+ debian start
+ ;;
+status)
+ status
+ ;;
+getmounts)
+ getmounts
+ ;;
+active)
+ alive
+ ;;
+*)
+ echo "Usage: $initdir/autofs {start|stop|restart|reload|status|getmounts|active}" >&2
+ exit 1
+ ;;
+esac
+}
+
+RETVAL=0
+if [ $system = debian ]; then
+ debian "$@"
+elif [ $system = redhat ]; then
+ redhat "$@"
+fi
+
+exit $RETVAL
[-- Attachment #3: Type: text/plain, Size: 140 bytes --]
_______________________________________________
autofs mailing list
autofs@linux.kernel.org
http://linux.kernel.org/mailman/listinfo/autofs
^ permalink raw reply [flat|nested] 8+ messages in thread