Imported Upstream version 1.2.3 upstream/1.2.3
authorBen Hutchings <ben@decadent.org.uk>
Tue, 29 Mar 2011 03:27:29 +0000 (04:27 +0100)
committerBen Hutchings <ben@decadent.org.uk>
Tue, 29 Mar 2011 03:27:29 +0000 (04:27 +0100)
82 files changed:
ChangeLog
Makefile.in [new file with mode: 0644]
aclocal.m4 [new file with mode: 0644]
aclocal/libtool.m4 [new file with mode: 0644]
aclocal/ltoptions.m4 [new file with mode: 0644]
aclocal/ltsugar.m4 [new file with mode: 0644]
aclocal/ltversion.m4 [new file with mode: 0644]
aclocal/lt~obsolete.m4 [new file with mode: 0644]
compile [new file with mode: 0755]
config.guess [new file with mode: 0755]
config.log [new file with mode: 0644]
config.sub [new file with mode: 0755]
configure [new file with mode: 0755]
configure.ac
depcomp [new file with mode: 0755]
install-sh [new file with mode: 0755]
linux-nfs/Makefile.in [new file with mode: 0644]
ltmain.sh [new file with mode: 0755]
missing [new file with mode: 0755]
support/Makefile.in [new file with mode: 0644]
support/export/Makefile.in [new file with mode: 0644]
support/export/client.c
support/export/hostname.c
support/include/Makefile.in [new file with mode: 0644]
support/include/config.h.in [new file with mode: 0644]
support/include/nfs/Makefile.in [new file with mode: 0644]
support/include/nfslib.h
support/include/nfsrpc.h
support/include/rpcsvc/Makefile.in [new file with mode: 0644]
support/include/sys/Makefile.in [new file with mode: 0644]
support/include/sys/fs/Makefile.in [new file with mode: 0644]
support/misc/Makefile.in [new file with mode: 0644]
support/nfs/Makefile.in [new file with mode: 0644]
support/nfs/fstab.c [deleted file]
support/nfs/getfh.c
support/nfs/getport.c
support/nfs/nfs_mntent.c
support/nfs/xcommon.c
support/nsm/Makefile.in [new file with mode: 0644]
tests/Makefile.in [new file with mode: 0644]
tests/nsm_client/Makefile.in [new file with mode: 0644]
tools/Makefile.in [new file with mode: 0644]
tools/locktest/Makefile.in [new file with mode: 0644]
tools/mountstats/Makefile.in [new file with mode: 0644]
tools/nfs-iostat/Makefile.in [new file with mode: 0644]
tools/nlmtest/Makefile.in [new file with mode: 0644]
tools/rpcdebug/Makefile.in [new file with mode: 0644]
tools/rpcgen/Makefile.in [new file with mode: 0644]
utils/Makefile.in [new file with mode: 0644]
utils/exportfs/Makefile.in [new file with mode: 0644]
utils/exportfs/exportfs.c
utils/exportfs/exportfs.man
utils/exportfs/exports.man
utils/gssd/Makefile.in [new file with mode: 0644]
utils/gssd/gss_util.c
utils/gssd/gss_util.h
utils/gssd/gssd.h
utils/gssd/svcgssd.c
utils/gssd/svcgssd.man
utils/idmapd/Makefile.in [new file with mode: 0644]
utils/idmapd/idmapd.c
utils/mount/Makefile.in [new file with mode: 0644]
utils/mount/fstab.c
utils/mount/network.c
utils/mount/nfs.man
utils/mount/nfsmount.c
utils/mount/stropts.c
utils/mountd/Makefile.in [new file with mode: 0644]
utils/mountd/auth.c
utils/mountd/cache.c
utils/mountd/mountd.c
utils/mountd/mountd.h
utils/mountd/mountd.man
utils/mountd/rmtab.c
utils/nfsd/Makefile.in [new file with mode: 0644]
utils/nfsd/nfsd.c
utils/nfsd/nfssvc.c
utils/nfsd/nfssvc.h
utils/nfsstat/Makefile.in [new file with mode: 0644]
utils/nfsstat/nfsstat.c
utils/showmount/Makefile.in [new file with mode: 0644]
utils/statd/Makefile.in [new file with mode: 0644]

index 1a9e642..efef742 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
-Author: Steinar H. Gunderson <sgunderson@bigfoot.com>
-Date:  Wed Sep 13 22:23:23 CEST 2006
-
-    Fix -n option to mountd
-
-    The getopt_long() option string in mountd was having a spurious
-    colon after the 'n', leading to the short form of --no-tcp not
-    being usable (expecting a parameter, contrary to the long form
-    and the documentation). Fix.
-    
-Author: Steinar H. Gunderson <sgunderson@bigfoot.com>
-Date:  Wed Sep 13 22:19:39 CEST 2006
-
-    Document sensitive gids
-
-    The exports(8) man page already mentions that some non-root users,
-    such as bin, might be just as sensitive as root, and that root_squash
-    thus might not be as effective as one could hope for. Update the
-    documentation to also mention that this could be the case for non-root
-    groups, such as staff.
-
-Author: NeilBrown <neilb@cse.unsw.edu.au>
-Date:  Mon Aug  7 16:35:03 AEST 2006
-
-    Set version to 1.0.10
-       Note: 1.0.10 should be used in preference to
-        1.0.9 especially with kernels 2.6.18 and later
-        otherwise 'rpc.nfsd N' won't work to change the
-        number of threads after nfsd has been started.
-       
-Author: NeilBrown <neilb@cse.unsw.edu.au>
-Date:  Mon Aug  7 16:35:03 AEST 2006
-
-    support/nfs/nfssvc.c:  if any ports are already open,
-          don't try to open any more.  
-        This means that once nfsd is running
-            rpc.nfsd  X
-        will just change the number of threads, not the
-        ports in use.
-
-Author: NeilBrown <neilb@cse.unsw.edu.au>
-Date:  Mon Aug  7 14:01:35 AEST 2006
-
-    Remove warning if neither 'sync' or 'async' present.
-    Add warning of neither 'subtree_check' or 'no_subtree_check' present.
-       
-commit 7194d7d6320736c14f40d31c3738d40f3119ead5
-Author: Kevin Coffman <kwc@citi.umich.edu>
-Date:   Sat Jul 8 10:01:40 2006 +1000
+commit 3030aded70e616cdeac4223785754b86a33b587d
+Author: Eberhard Kuemmerle <e.kuemmerle@fz-juelich.de>
+Date:   Mon Sep 27 13:24:48 2010 -0400
 
-    Use uid/gid of -1 to indicate the export's anonuid/anongid should be used
-    
-    Kernel routine nfsd_setuser() in fs/nfsd/auth.c checks for the
-    value -1 and defaults the credential's fsuid/fsgid to the
-    correct anonuid/anongid values for the given export.  We should
-    be passing this value (-1) down when a name mapping cannot be found.
-    Thanks to J. Bruce Fields <bfields@fieldses.org> for the reference.
+    Added the -p <principal> flag to the svcgssd manpage
     
-    Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
-    Acked-by: J. Bruce Fields <bfields@fieldses.org>
-
-commit b0604c623f7a98c6061dff19988722d3ae848bd7
-Author: Kevin Coffman <kwc@citi.umich.edu>
-Date:   Sat Jul 8 09:58:03 2006 +1000
-
-    Change svcgssd_LDFLAGS to match gssd_LDFLAGS
+    Signed-off-by:  Eberhard Kuemmerle <E.Kuemmerle@fz-juelich.de>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit 99414bd3eecf93f23c378d3bb3d45bc98f364abc
-Author: Neil Brown <neilb@suse.de>
-Date:   Sat Jul 8 09:41:58 2006 +1000
+commit 6cc96cada639a823961d5d8a136cbcdc8b8952b8
+Author: Eberhard Kuemmerle <e.kuemmerle@fz-juelich.de>
+Date:   Mon Sep 27 13:16:23 2010 -0400
 
-    Disable building/installing mount.nfs by default.
+    svcgssd: Adding a <-p principal> flag
     
-    mount.nfs does not yet support 'user' option and some others.
-    To make it support this we need to make it setuid-root, and
-    some security isses need to be resolved before that can be done
-    safely.
-
-commit b0c3cbfee702c019dab0a22557bbf38e24dfcee1
-Author: Steve Dickson <steved@redhat.com>
-Date:   Sat Jul 8 09:35:02 2006 +1000
-
-    Call nfssvc_versbits before nfssvc_setfds
+    Allow the principal that is used to get the machines creds definable
+    on the command like with the new '-p <principal>'. This is useful
+    in cluster environments.
     
-    nfssvc_versbits() has to be called before nfssvc_setfds()
-    for the version processing to work correctly
+    Signed-off-by:  Eberhard Kuemmerle <E.Kuemmerle@fz-juelich.de>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit 26fff911b21943f20e3937ae3f2d29a1572d2309
-Author: Neil Brown <neilb@suse.de>
-Date:   Thu Jul 6 13:05:11 2006 +1000
+commit 837796686ad8f9178c7b6855ada728a53ae511e3
+Author: David Lecorfe <dlecorfec@gmail.com>
+Date:   Mon Sep 27 13:29:31 2010 -0400
 
-    Only use -rpath for Kerberos libs when actually needed.
+    nfs-iostat.py: don't wait for an extra interval when given a count
     
-    Avoid usage of -rpath is generally safer, and is required by Debian policy.
+    If I invoke the tool with an interval of 10 and a count of 2, it will:
+    - show the summary
+    - sleep 10s
+    - show the stats for the last 10s
+    - sleep 10s
+    - exit
+    
+    Signed-off-by: David Lecorfe <dlecorfec@gmail.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit 28a7603b719f8d35bf22fd3018b610b489fec78f
-Author: Neil Brown <neilb@suse.de>
-Date:   Thu Jul 6 12:28:33 2006 +1000
+commit eaa588a137b0b2f38aa9e9c542635a222e51ee48
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Mon Sep 27 10:16:34 2010 -0400
 
-    Use 65534 instead of -2 in svcgssd_proc.c
+    nfsd: Enable IPv6 support in rpc.nfsd again.
     
-    as this is more consistant across achitectures.
+    Revert commit b2a3cd59 so that rpc.nfsd can create IPv6 listener
+    sockets for the kernel.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit 904de920ea4da3ad5604c417f0d784fcda83ed2a
-Author: Shankar Anand <shanand@novell.com>
-Date:   Tue Jul 4 08:50:56 2006 -0600
+commit c18e9a780f376b868e62b75abe64b0fd9915ada5
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Mon Sep 27 10:14:34 2010 -0400
 
-    This patch adds code to nfsstat to read /proc/net/rpc/nfsd for nfsv4 server statistics and print them.
+    mountd: Update mountd/exportfs man pages to reflect IPv6 changes
+    
+    Document IPv6 support in rpc.mountd and exportfs, and clarify existing
+    language in the man page.
+    
+    Clean up: Use bold consistently for program names, and italics
+    consistently for file names.  Use "rpc.mountd" consistently as the
+    name of the mountd daemon.
     
-    Submitted by: Shankar Anand <shanand@novell.com>
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit 2179c112b9a386ca3d51d0e19390ddfadd745030
-Author: Steinar H. Gunderson <sesse@debian.org>
-Date:   Wed Jul 5 15:55:45 2006 +1000
+commit 7e454e03131f56872639fe7b62b726479b22c087
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Mon Sep 27 10:13:39 2010 -0400
 
-    Fix typos in various man pages.
+    mountd: Use MNT status values instead of NFSERR
+    
+    Clean up:  The MNT protocol has its own enum type defining error
+    status values.  While the values can be the same as the NFSERR enum
+    type on some systems, it's not guaranteed to be true everywhere.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit 3419e37500dfd19cb2c246260dbd2bc0ee4704d4
-Author: Steinar H. Gunderson <sesse@debian.org>
-Date:   Wed Jul 5 15:51:30 2006 +1000
+commit ef32b76ae37926faacaf4b8121eba638567c4692
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Mon Sep 27 10:11:18 2010 -0400
 
-    Use 65534 for anon uid/gid rather than -2
+    mountd: Fix up version and usage messages
     
-    This is more consistant across platforms.
+    Clean up: rpc.mountd is no longer known as kmountd.  Use the program's
+    basename rather than the full pathname for the usage message.  Display
+    a version message at start up similar to statd's.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit 65735eef8a9441901245f6047edafc50f2d97c97
-Author: Greg Banks <gnb@chook.melbourne.sgi.com>
-Date:   Wed Jul 5 13:37:21 2006 +1000
+commit 2c15cf2963367dee7106964c38ab7b1e30ba347d
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Mon Sep 27 10:09:49 2010 -0400
 
-    Update rpcdebug to know about new 2.6 debug flags.  Added
-    a manpage and installed rpcdebug (in sbindir).
+    mountd: Unregister mountd if my_svc_run() returns
+    
+    Fix a long standing bug: when my_svc_run() returns, mountd should
+    unregister itself with the local rpcbind so that it can subsequently
+    start cleanly.
+    
+    Log a more helpful error message in this case.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit 23b3a9d0284d78cb6bf96b8cd44e9a4662ff60ae
-Author: Greg Banks <gnb@chook.melbourne.sgi.com>
-Date:   Wed Jul 5 12:22:45 2006 +1000
+commit b551b1fd0052de9b8c674b30c39d9f2a1e9d79cc
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Mon Sep 27 10:09:10 2010 -0400
 
-    Ignore new generated files.
+    mountd: Support TI-RPC mountd listener
+    
+    If TI-RPC is available, use it to create mountd's svc listener.  If
+    not, use the old function, rpc_init(), to create mountd's listener.
+    
+    IPv6 can be supported if TI-RPC is available.  In this case,
+    /etc/netconfig is searched to determine which transports to advertise.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit 89053f3f440b629911cb994a293d5be73bb79bf9
-Author: Greg Banks <gnb@chook.melbourne.sgi.com>
-Date:   Wed Jul 5 12:20:20 2006 +1000
+commit c5571da8e92f87fc9ec6e8aa8075c69497361c87
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Mon Sep 27 10:06:35 2010 -0400
 
-    Add rquota.h to BUILT_SOURCES so rquotad builds on the first try.
+    mountd: Make NFS version checks more strict
+    
+    Ensure users and programmers specify NFS version numbers correctly.
+    This also makes the next patch more clean.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit 66f9d8251c92124e46a209c47e5c0f7d3a0c4e6e
-Author: Neil Brown <neilb@suse.de>
-Date:   Wed Jul 5 11:06:09 2006 +1000
+commit 05f93b531d59df6e976d9b40c97b51546524040a
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Mon Sep 27 09:50:11 2010 -0400
 
-    Generate rquota_xdr.c and rquota.h from rquota.x
+    nfs-utils: Fix source code character encoding
+    
+    Minor clean up.
+    
+    Most modern Linux distributions set UTF-8 locales.  Standardize the
+    character encoding of source files on UTF-8, to squelch vim com-
+    plaints.
+    
+    I probably missed a few spots.
     
-    rquota_svc.c is still by-hand as it contains alot of extras.
-    These should really be moved to rquota_server.c
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit 9f5b40b7a68fe0a2648565ecbd4b08bf60287130
-Author: Neil Brown <neilb@suse.de>
-Date:   Wed Jul 5 10:41:03 2006 +1000
+commit 5341111d4b34bcd1b1263d5ed215cbe375aa9314
+Author: Steve Dickson <steved@redhat.com>
+Date:   Mon Sep 27 09:35:26 2010 -0400
 
-    Remove some files that old, unused, unneeded.
+    libnfs.a: Remove support/nfs/fstab.c
     
-       deleted:  support/export/keys.c
-       deleted:  support/include/rpcdispatch.h
-       deleted:  support/include/rpcsec.h
-       deleted:  support/include/version.h
-       deleted:  support/include/ypupdate.h
-       deleted:  support/nfs/clients.c
-       deleted:  support/nfs/keytab.c
-       deleted:  support/nfs/ypupdate_xdr.c
-       deleted:  support/rpc/include/Makefile.am
-       deleted:  tools/rpcdebug/neat_idea.c
-       deleted:  utils/mountd/mount_xdr.c
-       deleted:  utils/rquotad/pathnames.h
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit fbb1602bbd34cbe89dd55ca6eaaa19432237db1d
-Author: Neil Brown <neilb@suse.de>
-Date:   Wed Jul 5 10:30:51 2006 +1000
+commit 72ae199db4be7bf0092e15adaa8a43ce2434bf9f
+Author: Jeff Layton <jlayton@redhat.com>
+Date:   Thu Sep 16 14:34:39 2010 -0400
 
-    Avoid error creating an existing symlink
+    rpc.nfsd: mount up nfsdfs is it doesn't appear to be mounted yet
+    
+    There's a bit of a chicken and egg problem when nfsd is run the first
+    time. On Fedora/RHEL at least, /proc/fs/nfsd is mounted up whenever nfsd
+    is plugged in via a modprobe.conf "install" directive.
     
-    Just remove the link first.
+    If someone runs rpc.nfsd without plugging in nfsd.ko first,
+    /proc/fs/nfsd won't be mounted and rpc.nfsd will end up using the legacy
+    nfsctl interface. After that, nfsd will be plugged in and subsequent
+    rpc.nfsd invocations will use that instead.
+    
+    This is a problem as some nfsd command-line options are ignored when the
+    legacy interface is used. It'll also be a problem for people who want
+    IPv6 enabled servers. The upshot is that we really don't want to use the
+    legacy interface unless there is no other option.
+    
+    To avoid this situation, have rpc.nfsd check to see if the "threads"
+    file is already present. If it's not, then make an attempt to mount
+    /proc/fs/nfsd.  This is a "best-effort" sort of thing, however so we
+    just ignore the return code from the mount attempt and fall back to
+    using nfsctl() if it fails.
+    
+    Signed-off-by: Jeff Layton <jlayton@redhat.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit 0bc710a5a2b695039613a917e009dba3552ab1cc
-Author: kwc@citi.umich.edu <kwc@citi.umich.edu>
-Date:   Mon Jul 3 18:33:54 2006 -0400
+commit 63afb96b9d36e72782ad25ca496896029a9d9061
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Thu Sep 16 14:25:52 2010 -0400
 
-    Don't depend on Kerberos headers when checking librpcsecgss in configure
+    libexport.a: Enable IPv6 support in hostname.c
     
-    Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
+    If --enable-ipv6 is specified when building nfs-utils, libexport's
+    host_foo() helpers can now return both IPv4 and IPv6 addresses.
     
-    Older versions of MIT Kerberos are missing an OID definition, causing
-    the configure checks for librpcsecgss to fail.  We shouldn't be depending
-    on their libraries during the configure.
+    This means IPv6 presentation addresses and IPv6 DNS resolution
+    results are handled properly in the mountd cache and /etc/exports,
+    but does not yet enable IPv6 mountd listeners.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit 5bfa10c94c44f082dc211a5fb431e2202ea9bb35
-Author: Greg Banks <gnb@melbourne.sgi.com>
-Date:   Tue Jul 4 18:33:56 2006 +1000
+commit d901e329e380a2adc22783b1b241e414aa24cf51
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Thu Sep 16 14:21:48 2010 -0400
 
-    Eliminate warnings from code generated by rpcgen
+    mountd: Ensure cache downcall can handle IPv6 addresses
     
-     - unused variable 'buf'
-        - emit a declaration for `buf' on demand.
-     - unused variable 'i'
-        - declare i immediately before use
-     - unused value from IXDR_PUT_
-        - cast to (void)
-     - type-punned pointer reference
-        - cast to (void*) first :-(
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit acae444246635ec2ca8990d53e685c9062d73091
-Author: kwc@citi.umich.edu <kwc@citi.umich.edu>
-Date:   Mon Jul 3 18:34:43 2006 -0400
+commit 1ba28ec59f39de0bc4953b42556d847efbb508eb
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Thu Sep 16 14:21:08 2010 -0400
 
-    Handle mapping failure from get_ids.
-    
-    Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
+    mountd: Handle IPv6 addresses in kernel auth_unix_ip upcalls
     
-    Temporary patch to do default mapping if we get an error while trying to
-    map a gss principal to the appropriate uid/gid.  This currently returns
-    hardcoded values.  This may be correct, or we may need to try and figure
-    out the correct values to match the anonuid/anongid for the export.
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit 1f1b05a65ef3dc6597c7bc1e2a38f38ae95bf230
-Author: kwc@citi.umich.edu <kwc@citi.umich.edu>
-Date:   Mon Jul 3 18:34:38 2006 -0400
+commit ffe8c9a084fec4fdd3acfcf4b36fbe434d297b82
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Thu Sep 16 14:19:19 2010 -0400
 
-    Properly report errors in readline() function
+    mountd: clean up cache API
+    
+    Clean up: Squelch compiler warnings and document public parts of
+    cache API.
     
-    Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
+    cache.c: At top level:
+    cache.c:67: warning: no previous prototype for auth_unix_ip
+    cache.c:123: warning: no previous prototype for auth_unix_gid
+    cache.c:217: warning: no previous prototype for get_uuid
+    cache.c:247: warning: no previous prototype for uuid_by_path
+    cache.c:326: warning: no previous prototype for nfsd_fh
+    cache.c:745: warning: no previous prototype for nfsd_export
+    cache.c:820: warning: no previous prototype for cache_open
+    cache.c:832: warning: no previous prototype for cache_set_fd
+    cache.c:841: warning: no previous prototype for
+    cache_process_req
+    cache.c:921: warning: no previous prototype for cache_export
+    cache.c:953: warning: no previous prototype for
+    cache_get_filehandle
     
-    Change message priorities for errors and debug messages.
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit ee664fd246d77010af13fb557407c612752a5ea8
-Author: kwc@citi.umich.edu <kwc@citi.umich.edu>
-Date:   Mon Jul 3 18:34:33 2006 -0400
+commit 6f189dae5eb38800c8ae3e2d5c098d11fb44d7d5
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Thu Sep 16 14:17:08 2010 -0400
 
-    Change default buffer size increment for readline()
+    exportfs: Enable IPv6 support in matchhostname()
+    
+    To gain IPv6 support in matchhostname(), simply replace the socket
+    address comparison helpers with the generic versions that can handle
+    IPv4 and IPv6.
     
-    Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
+    host_addrinfo() (called by matchhostname()) returns IPv6 addresses
+    only if IPv6 support is enabled.
     
-    The readline routine expects much smaller messages than we are passing.
-    Change the default initial allocation and increment value from 128
-    to 2048.  This saves many calls to realloc().
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit 3da69ce5c4fac5677e91aa20e60750ab8de2ab97
-Author: kwc@citi.umich.edu <kwc@citi.umich.edu>
-Date:   Mon Jul 3 18:34:27 2006 -0400
+commit 10a6b17d3588647ab5e1ee81ba40f1ce12a5184d
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Thu Sep 16 13:54:21 2010 -0400
 
-    Clean up the printerr() logging function.
+    mountd: Support IPv6 in mountlist_list()
     
-    Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
+    Replace inet_aton(3) and gethostbyaddr(3) calls in mountlist_list()
+    with calls to the new host_foo() DNS helpers.
     
-    Update the printerr() function to:
+    The new functions will support IPv6 without additional changes, once
+    IPv6 is enabled in the generic hostname helpers.
     
-    1) Determine whether we'll print the message before going to all the
-       work of formatting it.
-    2) Don't just toss away messages that are too long for the buffer.
-       Print what we can and give an indication of the truncation with
-       "..." at the end.
-    3) Use a single buffer rather than two.
-    4) Messages either go to syslog (with level ERR) or stderr.  Don't
-       send some messages to syslog level DEBUG.
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit 0b2a5b574c7ffd99aa3226d36e1d261826405625
-Author: kwc@citi.umich.edu <kwc@citi.umich.edu>
-Date:   Mon Jul 3 18:34:21 2006 -0400
+commit 76209cdbe989ee4cdfbf489f2695ac779457e763
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Thu Sep 16 13:51:51 2010 -0400
 
-    Use setfsuid() rather than seteuid() while creating contexts
+    mountd: Handle memory exhaustion in mountlist_list()
     
-    Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
+    I'm about to replace inet_aton(3)/gethostbyaddr(3) with
+    host_pton()/host_canonname() in mountlist_list().
     
-    As suggested by Olaf Kirch <okir@suse.de>, use setfsuid() rather than
-    seteuid() when creating a gss context.  This prevents users from using
-    credentials that do not belong to them, while also preventing them from
-    doing things like killing, renicing, or changing the priority of the
-    gssd process while it is processing the context creation.
+    Since host_canonname() returns a string allocated with strdup(3)
+    instead of xstrdup(), mountlist_list() must now deal with memory
+    exhaustion properly.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit 0f899e6d862994ffb437ae73e087c4a21ab59723
-Author: kwc@citi.umich.edu <kwc@citi.umich.edu>
-Date:   Mon Jul 3 18:34:16 2006 -0400
+commit a8348c2c48d45f991995707fa22a2fa441aaa907
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Thu Sep 16 13:48:38 2010 -0400
 
-    Limit acquire_cred call to to Kerberos only
+    mountd: Add mountlist_freeall()
     
-    Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
+    I'm about to add a second bit of logic that needs to free all
+    mountlist records, so introduce a helper for freeing them.
     
-    Specify that the acquire_cred call should only be concerned with returning
-    Kerberos credentials since this is Kerberos-only functionality.
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit 3829bb90e764cd72c0009cb32a8b39d0fab89d81
-Author: kwc@citi.umich.edu <kwc@citi.umich.edu>
-Date:   Mon Jul 3 18:34:10 2006 -0400
+commit 454aea5dad83ca75f3154ff12ecff39169703e69
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Thu Sep 16 13:46:26 2010 -0400
 
-    Check that the gssapi library is usable early on.
+    mountd: support IPv6 in mountlist_del_all()
     
-    Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
+    Replace IPv4-specific code in the mountlist_del_all() path with code
+    that is address family agnostic.
     
-    Do a call to determine mechanisms supported by the gssapi library early.
-    This allows us to discover early in case the gssapi library is somehow
-    misconfigured.  We can bail out early and give a meaningful message
-    rather than getting errors on each attempt at a context negotiation.
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit 119c3e9aafe84c0f7c2846c46ad5e6f5eeece0da
-Author: kwc@citi.umich.edu <kwc@citi.umich.edu>
-Date:   Mon Jul 3 18:34:05 2006 -0400
+commit 4210d6f0c9cad57907877bf1e5d32ebe4a27bf17
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Thu Sep 16 13:44:02 2010 -0400
 
-    Fix problems with 64-bit big-endian machines
+    mountd: Support IPv6 in mountd's svc routines
     
-    Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
+    Replace IPv4-specific code with use of our generic hostname helpers
+    in the routines that handle incoming MNT RPC requests.
     
-    Correct the definition of mech_used in the gss context to use gss_OID_desc.
-    This fixes problems on 64-bit machines when referencing the OID.
+    These functions will support IPv6 without additional changes, once
+    IPv6 is enabled in the generic hostname helpers.
     
-    Also updates write_buffer function to use u_int rather than size_t when
-    doing calculations.
+    As part of this update, I've modified all of mountd's _svc routines
+    to use a debug message format that is consistent with statd.  It may
+    be overkill for some of these; if so we can pull them out later.
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit c3f05548d7b3d586e7eebbdde9339617e88530f3
-Author: kwc@citi.umich.edu <kwc@citi.umich.edu>
-Date:   Mon Jul 3 18:33:59 2006 -0400
+commit f35762f959cc5f29ad7817f8b7968e3792132651
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Thu Sep 16 13:39:39 2010 -0400
 
-    Define CFLAGS for gss_clnt_send_err compile
+    mountd: add IPv6 support in auth_authenticate()
     
-    Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
+    Make the entire auth_authenticate() code path address-family agnostic.
     
-    Add CFLAGS to make sure we find and use the correct gssapi.h when
-    building gss_clnt_send_err
-
-commit 4e9ed06f8f8a0cd9f34a6830c0ff14344a528042
-Author: Greg Banks <gnb@melbourne.sgi.com>
-Date:   Mon Jul 3 15:59:54 2006 +1000
-
-    Use socklen_t some more to avoid warnings.
-
-commit 6c40236820fda8960af891f41aa9d53f8bbe50a2
-Author: Greg Banks <gnb@melbourne.sgi.com>
-Date:   Mon Jul 3 15:39:41 2006 +1000
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-    Fix warning about pointer signedness differing.
+commit 29b8a7700129d9768e3e2d94c81eec9f84ba8691
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Thu Sep 16 09:32:52 2010 -0400
 
-commit 3bf702b1a914b3867117b74d519c55fa68f4dc28
-Author: Greg Banks <gnb@melbourne.sgi.com>
-Date:   Mon Jul 3 15:17:34 2006 +1000
+    libnfs.a: Fix API for getfh() & friends
+    
+    This is more of a clean-up than a behavioral change.
+    
+    POSIX requires that a "struct sockaddr" is the same size as a "struct
+    sockaddr_in".  Therefore, a variable or field of type "struct sockaddr"
+    cannot contain an AF_INET6 address.  However, "struct sockaddr *" is
+    often used to reference a generic (ie non-address family specific)
+    socket address, generating some confusion about this.
+    
+    The nfsctl_arg struct uses a struct sockaddr (not a pointer) to pass
+    the client's IP address to the kernel.  This means the legacy nfsctl()
+    kernel API can never support IPv6.  Fortunately for us, this legacy
+    interface was replaced by a text-based cache interface a few years
+    back.  We don't need to support non-AF_INET addresses here.
+    
+    The getfh() functions in nfs-utils provide a handy C API for the
+    kernel's nfsctl interface.  The getfh() functions still take a struct
+    sockaddr *, though, and that can imply that a non-IPv4 address can be
+    passed via this API.  To make it abundantly clear that only IPv4
+    addresses can be used with this interface, change the synopses of
+    getfh() and friends to take a struct sockaddr_in * instead of a struct
+    sockaddr * .
+    
+    This makes these functions conform with other places in mountd and
+    exportfs that already grok the difference between a struct sockaddr
+    and a struct sockaddr_in.
+    
+    While we're here...
+    
+    Introduce some nice documenting comments for the get_fh() functions,
+    and...
+    
+    Since mountd will support IPv6 in the near future, assert that the
+    family of client addresses passed to this API is indeed AF_INET, in
+    order to prevent non-AF_INET addresses from ever being passed to the
+    legacy nfsctl() interface.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-    Include the right header to get xmalloc() declaration.
+commit a88c279992f4b63e3dcaac9930e300fd4bb03dd7
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Thu Sep 16 07:28:18 2010 -0400
 
-commit 940c7c304d4a43c00c27529cdddc7c87db6eef87
-Merge: b90d201... a503848...
-Author: Greg Banks <gnb@melbourne.sgi.com>
-Date:   Mon Jul 3 14:21:48 2006 +1000
+    mount.nfs: Don't do anything fancy if this is a remount
+    
+    We don't want to append "vers=4" or perform any negotiation if the
+    "remount" mount option was specified.  It will just end in tears.
+    
+    This attempts to address
+    
+      https://qa.mandriva.com/show_bug.cgi?id=60311
+    
+    and
+    
+      https://bugzilla.linux-nfs.org/show_bug.cgi?id=187
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-    Merge branch 'master' of git://linux-nfs.org/nfs-utils
+commit 6f73daf5a5711dc0620f7d43c61c4fd57c0d3f80
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Thu Sep 16 07:26:07 2010 -0400
 
-commit b90d201551aaa712c011c3d5de900fad714a26a6
-Author: Greg Banks <gnb@melbourne.sgi.com>
-Date:   Tue Jun 27 21:30:18 2006 +1000
+    mount.nfs: Refactor mount version and protocol autonegotiation
+    
+    Clean up.
+    
+    I'm beginning to agree with Bruce and Steve's assessment that the
+    fallthrough switch case in nfs_try_mount() is more difficult to read
+    and understand than it needs to be.  The logic that manages
+    negotiating NFS version and protocol settings is getting more complex
+    over time anyway.
+    
+    So let's split the autonegotiation piece out of nfs_try_mount().
+    
+    We can reduce indenting, and use cleaner switch-based logic.  Also,
+    adding more comments can only help.
+    
+    Neil also suggested replacing the pre-call "errno = 0" trick.  The
+    lower-level functions may try to mount several times (given a list of
+    addresses to try).  errno could be set by any of those.  The mount
+    request will succeed at some point, and "success" is returned, but
+    errno is still set to some non-zero value.
+    
+    The kernel version check in nfs_try_mount() is more or less loop
+    invariant: it's impossible for the result of that test to change
+    between retries.  So we should be able to safely move it to the logic
+    that sets the initial value of mi->version.
+    
+    This patch is not supposed to cause a behavioral change.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-    Comment out unused variable.
+commit 64bf8db367fd43e80dd135b460afc157808647fa
+Author: Bian Naimeng <biannm@cn.fujitsu.com>
+Date:   Thu Sep 16 07:12:47 2010 -0400
 
-commit 33beb42d3d2cd13a82ddbbdc4275d2a048030ae3
-Author: Greg Banks <gnb@melbourne.sgi.com>
-Date:   Tue Jun 27 21:22:59 2006 +1000
+    rpc.idmapd: Type of idmap client should be defined by ic_id not ic_clid.
+    
+    The type of idmap_client is defined by idmap_client.ic_id for nfs,
+    so nfsd should have the same style.
+    
+    Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-    Comment out the decades-old SCCS id strings from the original Sun
-    distribution.  They cause compile warnings, there is no longer any
-    reason to try to build them into the binaries, and gcc seems to be
-    eliding some of them anyway.
+commit 7f77ef90ad52eced1552efc2242e063aa4501ddc
+Author: Benny Halevy <bhalevy@panasas.com>
+Date:   Tue Jul 20 08:40:34 2010 +0300
 
-commit 3172063ead6b99611d049a59938808a6358f48a4
-Author: Greg Banks <gnb@melbourne.sgi.com>
-Date:   Tue Jun 27 20:55:07 2006 +1000
+    nfsstat: add release_lockowner to client stats
+    
+    Signed-off-by: Benny Halevy <bhalevy@panasas.com>
 
-    Detect if glibc provides socklen_t and use that instead
-    of int in those cases which generate compile warnings,
-    e.g. the last argument of recvfrom().
+commit bf6da0a22d971364dae25ec2f62c01fbd2960f07
+Author: Steve Dickson <steved@redhat.com>
+Date:   Thu Sep 9 10:47:32 2010 -0400
 
-commit a09eeb36c2c45151b9bb89f5015da0c584799716
-Author: Greg Banks <gnb@melbourne.sgi.com>
-Date:   Tue Jun 27 20:28:02 2006 +1000
+    Cleaned up a warning from commit 44f09b7
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-    Replace the deprecated sigblock() with more modern
-    signal functions to avoid compile warnings.
+commit 911630538580cdaaee1c37cdf1a8b35b8ed6b23f
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Wed Sep 8 13:28:24 2010 -0400
 
-commit 93608a52655abf5ac23404c4b5cc05fe575a9c04
-Author: Greg Banks <gnb@melbourne.sgi.com>
-Date:   Thu Jun 22 18:01:10 2006 +1000
+    mount.nfs: Prepare way for "vers=4,rdma" mounts
+    
+    At some point, when the kernel starts to support "vers=4,rdma" mounts,
+    we will want the mount.nfs command to pass "vers=4,rdma" mounts
+    instead of rejecting them.
+    
+    Assuming that the kernel will reject these today with EPROTONOSUPPORT,
+    that would cause the version fallback logic to go to "vers=3,rdma"
+    automatically.  So the extra check we have now is not needed anyway.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-    Fix a number of the easier compile warnings: unused variables,
-    unused labels, constness, signedness.
+commit f99d1b8e8768ab96b51bed52f21a626ac9a4797f
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Wed Sep 8 13:27:31 2010 -0400
 
-commit a07343ee0da4f0974a23b673ae1b0d482c7426a1
-Author: Greg Banks <gnb@melbourne.sgi.com>
-Date:   Thu Jun 22 17:31:24 2006 +1000
+    mount.nfs: Support an "rdma" mount option
+    
+    The kernel NFS client's mount option parser recognizes a stand-alone
+    "rdma" mount option, similar to the legacy "udp" and "tcp" options.
+    
+    The mount.nfs command text-based mount option parser used to pass
+    "rdma" straight to the kernel, but since we've started handling MNT in
+    the kernel instead of in user space, "rdma" on the command line has
+    not worked.
+    
+    Until now, no-one has noticed, especially since an "rdma" mount option
+    isn't documented in nfs(5).
+    
+    Support "rdma" in mount.nfs command, and document it in nfs(5).
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-    Detect presence of nfs4_set_debug() in libnfsidmap and
-    don't bother calling it if it's missing.
+commit 44f09b7c4c79ca184a29138078c68a4db7aeb85a
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Wed Sep 8 13:26:34 2010 -0400
 
-commit dcfcb677b39443b6392db3234fd50498bc158507
-Author: Greg Banks <gnb@melbourne.sgi.com>
-Date:   Thu Jun 22 17:19:17 2006 +1000
+    mount.nfs: Use nfs_nfs_protocol() for checking for proto=rdma
+    
+    Clean up: Now that nfs_get_proto() can recognize "rdma" we can re-use
+    nfs_nfs_protocol() instead of ad hoc checks for "proto=rdma".
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-    Remove useless m4 quoting around args to PKG_CHECK_MODULES().
+commit a77ca5c6a79486dc8c5a4c327fe5310f5d497766
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Wed Sep 8 13:25:56 2010 -0400
 
-commit 24d303ffae686192bda0a5996e8590219dcc82e7
-Author: Greg Banks <gnb@melbourne.sgi.com>
-Date:   Thu Jun 22 17:16:19 2006 +1000
+    getport: Recognize "rdma" and "rdma6" netid
+    
+    The mount.nfs command must recognize the values of "rdma" and "rdma6"
+    with the "proto=" mount option.  Typically the mount.nfs command
+    relies on libtirpc or getprotobyname(3) to recognize netids and
+    translate them to protocol numbers.
+    
+    RFCs 5665 and 5666 define the "rdma" and "rdma6" netids.  IANA defines
+    a specific port number for NFS over RDMA (20049), but has not provided
+    a protocol name and number for RDMA transports, and is not expected
+    to.  The best we can do is translate these by hand, as needed, to get
+    RDMA mount requests to the kernel without erroring out.
+    
+    Only the forward translation is needed until such time that "rdma" and
+    "rdma6" start to appear in rpcbind registries.  For now, the version
+    and transport negotiation logic is skipped, avoiding rpcbind queries
+    for RDMA mounts.
+    
+    Note: As of kernel 2.6.36, the kernel's NFS over RDMA transport
+    capability does not support IPv6.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-    Do m4 quoting of AC_MSG_ERROR() and AC_MSG_WARN() as
-    the autoconf people intended.  This avoids errors in
-    autoconf on SLES10.
+commit 57f36cd692c56b3b62705b5fafef4c25561a39ff
+Author: Guillaume Rousse <Guillaume.Rousse@inria.fr>
+Date:   Thu Sep 9 10:33:47 2010 -0400
 
-commit 66a699d953727d3a992cc09ed5304b83d661a737
-Author: Greg Banks <gnb@melbourne.sgi.com>
-Date:   Thu Jun 22 16:51:44 2006 +1000
+    Clarification about options supported by different versions
+    
+    Signed-off-by: Guillaume Rousse <Guillaume.Rousse@inria.fr>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-    Add a .gitignore file to suppress the files generated
-    during autogen, configure and build.
-commit 49b164d978ee6266df7ba0bd335cb34337e7c381
-Author: Steve Dickson <SteveD@redhat.com>
-Date:   Mon Jul 3 09:52:00 2006 +1000
+commit b7df3370555877598d9f2ef49fae2ad4458e9f72
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Thu Sep 9 10:27:17 2010 -0400
 
-    Allow rpc.nfsd to suppress tcp or udp, and listen on a specific address.
+    libexport.a: Refactor init_netmask()
+    
+    Instead of a single function that can handle both AF_INET and AF_INET6
+    addresses, two separate functions might be cleaner.
+    
+    The original plan was to keep code redundancy at a minimum, but the
+    resulting code was cumbersome at best.  I think I've traded a little
+    extra code for something that will be much easier to read, understand,
+    and maintain.
     
-     -T       - will suppressing listening for TCP connection.
-     -U       - will suppress UDP
-     -H host  - will only listen on that local address
-     -p port  - will listen on that port.
+    I've also eliminated the "#if / #endif" instances inside the functions.
     
-    This requires kernel patches which will hopefully be in 2.6.19 and possibly some
-    earlier test and vendor kernels.
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit fde2ae7794047a698feeaf17963d690a1e660a80
-Author: Steve Dickson <SteveD@redhat.com>
-Date:   Mon Jun 26 15:23:19 2006 +1000
+commit 60abb9889cea52022adf9c8bb946e9d19d79f9ed
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Tue Aug 31 15:31:57 2010 -0400
 
-    Add support for suppressing different NFS versions.
+    libexport.a: IPv6 support in client_check()
+    
+    Introduce support for IPv6 in client_check()'s helpers.  The local
+    addrs_match() twins are no longer needed since we can use
+    nfs_compare_addrs() now.
     
-    e.g.  -N 2
-    means that NFSv2 won't be supported, just v3 and v4 (if the kernel
-    supports them).
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit 0523fd513c6baa8dbf45d1a7afea2044262aeb3d
-Author: Neil Brown <neilb@suse.de>
-Date:   Fri Jun 23 17:10:56 2006 +1000
+commit 965b15b855c0c621462256b0ab687fc32644255a
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Tue Aug 31 15:30:14 2010 -0400
 
-    Further coverity related cleanups.
+    libexport.a: IPv6 support for client_init_subnet()
+    
+    To parse and store an IPv6 host or subnet address, init_netmask()
+    needs to handle 128 bit subnet masks.
     
-    Greg Banks suggested some variations, particularly improved
-    use of xmalloc/xstrdup functions.  Thanks.
+    Unfortunately what once was a pretty simple little function has grown
+    much larger.  This logic must now not only parse IPv6 addresses
+    correctly, but must also distinguish between IPv4 and IPv6.
+    
+    To avoid code duplication, I'm "bending" the cardinal rule of not
+    using "#ifdef" inside functions.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit 2e075a16da4963f54cd556403ca9e15a68de27fd
-Author: Neil Brown <neilb@suse.de>
-Date:   Fri Jun 23 14:38:33 2006 +1000
+commit 2824097496f6b154befbf3b3d15dacf237b07f83
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Tue Aug 31 15:29:02 2010 -0400
 
-    Fix various issues discovered by Coverity
+    libexport.a: Prepare init_subnetwork() for IPv6 support
+    
+    Retire the slash32 logic in inet_netmask() in favor of a more generic
+    netmask parser that can support IPv6 addresses.
     
-    Thanks to Michael Halcrow for finding them.
+    If an invalid IP address string is given to inet_addr(3), it returns
+    INADDR_NONE, which is actually a "valid" address (255.255.255.255).
+    We're none the wiser to the substitution until something breaks later.
+    
+    This patch provides better sanity checking of the parsed address, now
+    that such an error can be reported to client_init()'s callers.
+    We can also check the prefixlen value a little more carefully as well.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit ff42180930a444cea7f19e55e2cd2bfe6d3f108b
-Author: Neil Brown <neilb@suse.de>
-Date:   Fri Jun 23 14:06:00 2006 +1000
+commit 03fc34b23c2bff48f54c2d889d7851a31fb64a3d
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Tue Aug 31 15:27:19 2010 -0400
 
-    Fix comment parsing (again)
+    libexport.a: Use host helper to parse address in client_init()
     
-    Bruce Fields noticed that I broke comment parsing...
+    Take the first step towards making it possible to parse either IPv4 or
+    IPv6 addresses in client_init().  It won't handle IPv6 until
+    host_pton() has IPv6 support enabled, and it still doesn't deal with
+    IPv6 netmasks yet.
     
-    as xskip() is always called before xgettok(), that is the
-    best place to put xskipcomment and still maintain proper
-    semantics of xskip and xgettok.
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit bec968578d97eabc63ae4a12bdeb2b33f40baec4
-Author: Amit Gud <agud@redhat.com>
-Date:   Thu Jun 22 12:51:04 2006 -0400
+commit 502edf1df5e727cf88b19b634f60392652f35ddc
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Tue Aug 31 15:25:35 2010 -0400
 
-    Change mount configure option to --enable-mount
+    libexport.a: Prepare to recognize IPv6 addresses in        client_gettype()
     
-    Change the configure option from --with-mount to --enable-mount.
+    The current open-coded parsing logic in client_gettype() will be hard
+    to modify to recognize IPv6 addresses.  Use a more generic mechanism
+    for detecting IP presentation addresses.
     
-    Signed-off-by: Amit Gud <agud@redhat.com>
+    IPv6 will be enabled automatically in client_gettype() when host_pton()
+    is changed to support IPv6 addresses.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
     Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit ceeffc1f76485b4084b2c61f4ff3c40e4f51c3b8
-Author: Amit Gud <gud@eth.net>
-Date:   Thu Jun 22 12:49:24 2006 -0400
+commit 26fd34002585e6a5aa09204b0b01d836fa83dcf3
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Tue Aug 24 07:19:34 2010 -0400
 
-    Merge nfsmount.x and mount.x into mount.x
+    exportfs: Use xlog() for error reporting
     
+    exportfs already invokes xlog_open() because libexport.a uses xlog()
+    exclusively for error reporting and debugging messages.  If we can
+    use xlog() throughout exportfs itself, that enables xlog debugging
+    messages everywhere in the code path.
     
-    Merge utils/mount/nfsmount.x and support/export/mount.x into support/export/mount.x.
+    In addition, use xlog() instead of fprintf(stderr) for reporting
+    errors in exportfs.c, to be consistent with libexport.a and other
+    components of nfs-utils.
     
-    Signed-off-by: Amit Gud <agud@redhat.com>
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
     Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit c2db41e8abb6ddc9d03a0c91c6db043fa0f85a8f
-Author: Neil Brown <neilb@suse.de>
-Date:   Fri Jun 23 13:37:08 2006 +1000
+commit 6d7babe6afae068e8a1054f785785d374788f5ee
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Tue Aug 24 07:18:04 2010 -0400
 
-    Try to make sure that clientid used for NFSv4 is reliable.
+    exportfs: exportfs.c no longer needs #include "xmalloc.h"
     
-    We need to give an IP address to identify this client to the
-    server.
-    The current code does a gethostbyname of the hostname. One
-    some systems this returns 127.0.0.1 or similar, which is not useful.
+    Clean up:  No calls to xmalloc() or xstrdup() here.  No need for the
+    double #include of xmalloc.h.
     
-    Instead, use getsockname of the sock used to connect to the server
-    to confirm that the server is working.  This gives the address on the
-    interface that was chosen to talk to that server, which is the
-    best address we can find (if there is a NAT in the way, it might
-    still not work, but in that case there is nothing we can do).
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-commit 11d34d11153df198103a57291937ea9ff8b7356e
-Author: Greg Banks <gnb@melbourne.sgi.com>
-Date:   Wed Jun 14 22:48:10 2006 +1000
+commit e22f5a9c8e53a2373e8a939771e964ad315cdc5f
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Tue Aug 24 07:16:10 2010 -0400
 
-    multiple threads for mountd
+    statd: statd fails to monitor if no reverse mapping of mon_name exists
     
+    Commit 8ce130c4 switched in the new statd_canonical_name() function
+    that constructs a "unique" name statd can use to uniquely identify a
+    monitor record.
     
-    How about the attached patch against nfs-utils tot?  It
-    adds a -t option to set the number of forked workers.
-    Default is 1 thread, i.e. the old behaviour.
+    The legacy statd would monitor a client that sent an IP address with
+    no reverse map as its caller_name.  To remain bug-for-bug compatible,
+    allow this case in the new statd.
     
-    I've verified that showmount -e, the Ogata mount client,
-    and a real mount from Linux and IRIX boxes work with and
-    without the new option.
+    This shouldn't be a problem: statd_canonical_name() needs to create
+    a unique name for the monitored host so it can keep track of monitor
+    requests from the same remote.  The IP address itself should work as
+    well as the host's canonical name, in case there is no reverse
+    mapping.
     
-    I've verified that you can manually kill any of the workers
-    without the portmap registration going away, that killing
-    all the workers causes the manager process to wake up and
-    unregister, and killing the manager process causes the
-    workers to be killed and portmap unregistered.
+    We still enforce the requirement that a mon_name that is a DNS name
+    must have a forward map to an IP address.
     
-    I've verified that all the workers have file descriptors
-    for the udp socket and the tcp rendezvous socket, that
-    connections are balanced across all the workers if service
-    times are sufficiently long, and that performance is
-    improved by that parallelism, at least for small numbers
-    of threads.  For example, with 60 parallel MOUNT calls
-    and a testing patch to make DNS lookups take 100 milliseconds
-    time to perform all mounts (averaged over 5 runs) is:
-    
-    num                elapsed
-    threads            time (sec)
-     ------            ----------
-    1          13.125
-    2           6.859
-    3           4.836
-    4           3.841
-    5           3.303
-    6           3.100
-    7           3.078
-    8           3.018
-    
-    Greg.
-    --
-    Greg Banks, R&D Software Engineer, SGI Australian Software Group.
-    I don't speak for SGI.
-
-commit db96d056578338dd1bb0371dc84638973c187ec6
-Author: Neil Brown <neilb@suse.de>
-Date:   Fri Jun 16 13:16:09 2006 +1000
-
-    Remove some temporary files that shouldn't be in 'git'.
-    
-       deleted:  compile
-       deleted:  config.guess
-       deleted:  config.sub
-       deleted:  depcomp
-       deleted:  install-sh
-       deleted:  ltmain.sh
-       deleted:  missing
-
-commit 82b53188aaffad0e237461f8f1274794166feb3a
-Author: Neil Brown <neilb@suse.de>
-Date:   Fri Jun 16 13:09:26 2006 +1000
-
-    Add support to auto-generate nfsmount* files for new nfs.mount program
-
-commit 4e2bae795e5eaf9922f0b966ab5df64994c836a2
-Author: Amit Gud <agud@redhat.com>
-Date:   Mon Jun 12 19:08:27 2006 -0400
-
-    Move NFS mount code from util-linux to nfs-utils - part 2
-    
-    Adds the support functions needed for mount and umount. This
-    functionality will someday be available in the form of shared mount
-    library.
-    
-    Signed-off-by: Amit Gud <agud@redhat.com>
-    Signed-off-by: Steve Dickson <steved@redhat.com>
-
-commit a0520fa1a41bd33815b331b660b4545f2723495c
-Author: Amit Gud <agud@redhat.com>
-Date:   Mon Jun 12 19:06:36 2006 -0400
-
-    Move NFS mount code from util-linux to nfs-utils - part 1
-    
-    Adds the mount directory and the code to mount and umount the NFS file system.
-    
-    Signed-off-by: Amit Gud <agud@redhat.com>
-    Signed-off-by: Steve Dickson <steved@redhat.com>
-
-2006-06-05 NeilBrown <neilb@suse.de>
-       - Remove debian/ at request of Debian maintainer "Steinar H. Gunderson" <sesse@debian.org>
-       - fix_exportfs_with_multiple_matches.diff: Fixes a problem with exportfs -o
-         and multiple entries of the same type for the same patch that matches
-         a given client. The entire rationale and problem description can be found
-         at http://bugs.debian.org/245449 (fumihiko kakuma <kakmy@mvh.biglobe.ne.jp>)
-        - escape hashes in exports
-         Makes sure any # signs in the printed-out exports file are
-         escaped (as with quotes, spaces, etc.), so they won't be treated
-         as a comment when they're read back in again.
-               "Steinar H. Gunderson" <sesse@debian.org>
-       - Only treat '#' as starting a comment when at the start of a
-         token, otherwise '#' in filenames cannot be read.
-               NeilBrown
-       - document sync option:
-         Document the 'sync' option in the exports(5) man page -- ATM
-         only the 'async' option is documented, which is not very
-         symmetric. :-)  "Steinar H. Gunderson" <sesse@debian.org>
-       - mountd state directory:
-         Let the user select (via a new parameter) the path to the NFS
-         state directory for mountd, to match the statd functionality.
-                "Steinar H. Gunderson" <sesse@debian.org>
-       - fix nhfsrun signal:
-         nhfsrun is supposed to be able to be signalled with SIGUSR1, but
-         the signal trapped is number 30, which is something else
-         entirely (SIGPWR). This patch simply changes it to say "USR1",
-         which gets it right no matter what the value is.
-                "Steinar H. Gunderson" <sesse@debian.org>
-       - Minor man page tidy up
-       
-2006-04-12 NeilBrown <neilb@suse.de>
-       Remove **/Makefile.in, aclocal.m4, configure, and
-        support/include/config.h.in from source control
-       These are auto autogenerated by
-         aclocal -I aclocal ; autoheader ; automake ; autoconf
-       
-2006-04-12 NeilBrown <neilb@suse.de>
-       utils/statd/rmtcall.c: use HAVE_IFADDRS_H to control compilation
-       of code using ifaddrs.h
-       configure.in: test for present of ifaddrs.h
-
-       Old glibc's don't have ifaddrs.h
-       
-2006-06-12 Amit Gud <agud@redhat.com>
-       Added the mount functionality from util-linux.
-       Added --without-mount configure option.
-
-2006-04-12 NeilBrown <neilb@suse.de>
-       Set version to 1.0.8, 
-       aclocal -I aclocal ; autoheader ; automake ; autoconf
-
-2006-04-10 NeilBrown <neilb@suse.de>
-       Various paranoia checks:
-       gssd_proc.c: pass max_field sizes to sscanf to avoid buffer
-         overflow
-       svcgssd_proc.c: range_check name.length, to ensure name.length+1
-         doesn't wrap
-       idmapd.c(nfsdcb): make sure at least one byte is read before
-        zeroing the last byte that was read, otherwise memory corruption
-        is possible.
-
-       Found by SuSE security audit.
-       
-2006-04-10 "Kevin Coffman" <kwc@citi.umich.edu>
-       Check for sufficient version of librpcsecgss and libgssapi
-       in configure.in
-
-2006-04-10 "Kevin Coffman" <kwc@citi.umich.edu>
-       Update aclocal/tcp-wrappers.m4 to define HAVE_LIBWRAP and
-       HAVE_TCP_WRAPPERS as appropriate.       
-
-2006-04-10 NeilBrown <neilb@suse.de>
-       Add checking for innetgr back to configure.in
-       
-2006-04-10 kwc@citi.umich.edu
-       Update calls to gss_export_lucid_sec_context()
-       
-       Change the calls to gss_export_lucid_sec_context() to match the corrected
-       interface definition in libgssapi-0.9.
-       
-2006-04-10 kwc@citi.umich.edu
-       Plug memory leaks in svcgssd
-       
-       Various memory leaks in the svcgssd context processing are eliminated.
-       
-2006-04-10 kwc@citi.umich.edu
-       Fix memory leak of the AUTH structure on context negotiations
-       
-       Free AUTH structure after completing context negotiation and sending
-       context information to the kernel.
-       
-2006-04-10 kwc@citi.umich.edu
-       Fix support/include/config.h.in such as would be done be running autoheader.
-       
-2006-03-28 NeilBrown <neilb@suse.de>
-       1.0.8-pre3, aclocal/autoconf/automake
-       
-2006-03-28 kwc@citi.umich.edu
-       Use PKGCONFIG to locate gssapi and rpcsecgss header files
-       
-       Instead of having separate copies of the gssapi and rpcsecgss
-       header files, or depending on the Kerberos gssapi header,
-       locate the headers now installed with the libgssapi and librpcsecgss
-       libraries.
-       
-       Remove local copies of the gssapi and rpcsecgss header files.
-       
-       This depends on the configure_use_autotools patch.
-       
-2006-03-28 kwc@citi.umich.edu
-       Add debugging to better detect negotiation of enctype not supported by kernel
-       
-       Print debugging message indicating the type of encryption keys being sent
-       down to the kernel.  This should make it easier to detect cases where
-       unsupported encryption types are being negotiated.
-       (really this time)
-       
-2006-03-28 kwc@citi.umich.edu
-       
-       Don't close and reopen all pipes on every DNOTIFY signal.
-       
-       From: Vince Busam <vbusam@google.com>
-       Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
-       
-       Don't unnecessarily close and re-open all pipes after every DNOTIFY
-       signal.  These unnecessary closes were triggering a kernel Oops.
-       Original patch modified to correct segfault when unmounting last
-       NFSv4 mount.
-       
-2006-03-28 kwc@citi.umich.edu
-       Add option to specify directory to search for credentials cache files
-       
-       
-       From: Vince Busam <vbusam@google.com>
-       Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
-       
-       Add command line option to specify which directory should be searched
-       to find credentials caches.
-       (really this time)      
-       
-2006-03-28 kwc@citi.umich.edu
-       Must still use knowledge of the glue context for pre-1.4 versions of MIT krb5
-       
-       We need to get access to the internal krb5 context pointer for
-       older (pre-1.4) versions of MIT Kerberos.  We get a pointer to
-       the gss glue's context.  Get the right pointer before accessing
-       the context information.
-       (really this time)
-       
-2006-03-28 kwc@citi.umich.edu
-       
-       Remove unused groups variable from get_ids() which was causing a compiler warning.
-       (really this time)
-       
-2006-03-28 kwc@citi.umich.edu
-       Update krb5 code to use glue routine lucid context functions
-       
-       
-       
-       The gssd code should not know about the glue layer's context structure.
-       A previous patch added gss_export_lucid_sec_context() and
-       gss_free_lucid_sec_context() functions to the gssapi glue layer.
-       Use these functions rather than calling directly to the Kerberos
-       gssapi code (which requires the Kerberos context handle rather
-       than the glue's context handle).
-       
-       (really this time)
-       
-2006-03-28 kwc@citi.umich.edu
-       
-       Separate out context handling code for MIT Kerberos and SPKM3
-       into their own file.
-       (Really this time)
-       
-2006-03-28 Kevin Coffman <kwc@citi.umich.edu>
-       User-selectable idmapping cache lifetime
-       
-       Read and process new configuration option, Cache-Expiration, and use
-       the value to determine how long idmapping entries are cached.
-       (Really this time)
-       
-2006-03-27 NeilBrown <neilb@suse.de>
-       1.0.8-rc3
-
-2006-03-27 kwc@citi.umich.edu
-       Add debugging to better detect negotiation of enctype not supported by kernel
-
-       Print debugging message indicating the type of encryption keys being sent
-       down to the kernel.  This should make it easier to detect cases where
-       unsupported encryption types are being negotiated.
-       
-2006-03-27
-       Don't close and reopen all pipes on every DNOTIFY signal.
-       
-       Don't unnecessarily close and re-open all pipes after every DNOTIFY
-       signal.  These unnecessary closes were triggering a kernel Oops.
-       Original patch modified to correct segfault when unmounting last
-       NFSv4 mount.
-       
-2006-03-27
-       Add option to specify directory to search for credentials cache files
-       
-       Add command line option to specify which directory should be searched
-       to find credentials caches.
-       
-2006-03-27 kwc@citi.umich.edu
-       Must still use knowledge of the glue context for pre-1.4 versions of MIT krb5
-       
-       We need to get access to the internal krb5 context pointer for
-       older (pre-1.4) versions of MIT Kerberos.  We get a pointer to
-       the gss glue's context.  Get the right pointer before accessing
-       the context information.
-       
-2006-03-27 Kevin Coffman <kwc@citi.umich.edu>
-       Remove unused variable causing compile warning
-       
-       Remove unused groups variable from get_ids() which was causing a compiler warning.
-       
-2006-03-27 kwc@citi.umich.edu
-       Update krb5 code to use glue routine lucid context functions
-       
-       The gssd code should not know about the glue layer's context structure.
-       A previous patch added gss_export_lucid_sec_context() and
-       gss_free_lucid_sec_context() functions to the gssapi glue layer.
-       Use these functions rather than calling directly to the Kerberos
-       gssapi code (which requires the Kerberos context handle rather
-       than the glue's context handle).
-       
-2006-03-27 Kevin Coffman <kwc@citi.umich.edu>
-       Separate out context handling code for MIT Kerberos and SPKM3
-       into their own file.
-       
-2006-03-27 Kevin Coffman <kwc@citi.umich.edu>
-       Consolidate gssd and svcgssd since they share much code
-       
-       Remove directory svcgssd which was only created because the old
-       build system could not handle building two daemons in the same
-       directory.  This eliminates build complications since gssd and
-       svcgssd also share many source files.
-       
-       This patch effectively removes the utils/svcgssd directory, moving
-       all its files to the utils/gssd directory.  File utils/gssd/Makefile.am
-       is modified with directions to build both gssd and svcgssd.
-       
-2006-03-27 Kevin Coffman <kwc@citi.umich.edu>
-       Use PKGCONFIG to locate gssapi and rpcsecgss header files
-       
-       Instead of having separate copies of the gssapi and rpcsecgss
-       header files, or depending on the Kerberos gssapi header,
-       locate the headers now installed with the libgssapi and librpcsecgss
-       libraries.
-       
-       Remove local copies of the gssapi and rpcsecgss header files.
-       
-       This depends on the configure_use_autotools patch.
-       
-2006-03-27 Kevin Coffman <kwc@citi.umich.edu>
-       User-selectable idmapping cache lifetime
-       
-       Read and process new configuration option, Cache-Expiration, and use
-       the value to determine how long idmapping entries are cached.
-       
-2006-03-27 Steve Dickson <steved@redhat.com>
-       Set libnfsidmap library debugging level and logging function.
-
-       This patch adds a call to the new libnfsidmap library function 
-       nfs4_set_debug(), which defines the verbosity level libnfsidmap
-       should use as well as the logging function.
-
-2006-03-27 Kevin Coffman <kwc@citi.umich.edu>
-       Don't close file descriptor until after calling event_del().
-
-       Delete event processing for a file descriptor before closing it.
-       This was causing hangs when used in combination with libevent-1.0b.
-
-2006-03-27 kwc@citi.umich.edu
-       Find krb5-config on SuSE 10
-
-       SuSE 10.0 puts krb5-config in yet another obscure location.
-       Look for it there and use it if found.
-
-2006-03-27 Kevin Coffman <kwc@citi.umich.edu>
-       Update debian package information.
-
-2006-03-27 Kevin Coffman <kwc@citi.umich.edu>
-       Install /var/lib/nfs files using DESTDIR and add rpcsec headers to distribution
-
-       Add "$(DESTDIR)" to the paths for the "$(statedir)" files so they are
-       put in the right place when DESTDIR is defined.
-
-       Add the rpcsec header files to EXTRA_DIST list.
-
-2005-12-21 NeilBrown <neilb@suse.de>
-       *utils/rquotad/rquota_server.c: Detect and handle both old-style
-       (2.4) and new-style(2.6) quotactl.
-       *utils/gssd/gss_destroy_cred: remove dependence on "head -1" which
-       might need to be "head -n 1"
-       *utils/nhfsstone/nhfsrun: convert "tail -1" to "tail -n 1"
-       
-2005-12-20 Kevin Coffman <kwc@citi.umich.edu> NeilBrown <neilb@suse.de>
-       Substantial Makefile/configure rewrite.  
-       Run 'autogen.sh' to create "Makefile.in" etc.
-
-       Also add -D_FILE_OFFSET_BITS=64 to CPP_FLAGS so that mountd can
-       stat and export files larger than 2Gig.
-
-       1.0.8-rc2 released
-
-2005-12-20 NeilBrown <neilb@suse.de>
-       support/nfs/exports.c(getexportent): is a null host name is given,
-       replace it with '*' so we have a non-empty host name for messages
-       etc.
-       utils/exportfs/exportfs.man: Correct documentation about default
-       export options.
-
-2005-12-20 Kevin Coffman <kwc@citi.umich.edu>
-       utils/gssd/gssd_proc.c(create_auth_rpc_client): Use service
-         portion of clp->servicename rather than hard-coding "nfs". 
-
-2005-12-16 NeilBrown <neilb@suse.de>
-       1.0.8-rc1 released
-
-2005-12-16 Kevin Coffman <kwc@citi.umich.edu>
-       svcgssd needs -lnfs when using new function closeall().
-       
-       ---
-       Remove unused argument from nfsdopen()
-       
-       After previous changes, the arguement to nfsdopen() has become unused.
-       Remove it.
-       
-       ---
-       Fix idmapd error reporting after call to mydaemon()
-       
-       After call to mydaemon(), calls to err[x] and warn[x] result
-       in the message going nowhere.  Change to using idmapd_*
-       versions of these routines which write to syslog.
-       Original problem reported by Vincent Roqueta <vincent.roqueta@ext.bull.net>
-       with a different patch.
-       
-       ---
-       Don't add @domain to names that cannot be mapped.
-       
-       Per rfc3530 section 5.8: when unable to map a uid to a name, don't
-       add the @domain to the "nobody" name.
-       
-       ---
-       Fix idmapd for systems where sizeof(uid_t)!=4 and sizeof(gid_t)!=4
-       
-       Fix conversion cases where uid_t and gid_t are not 32 bits.
-       
-       ---
-       Don't segfault because mech wasn't filled in because of an error
-       
-       From Kevin Coffman <kwc@citi.umich.edu>
-       
-       Initialize mech to null to avoid segfault if an error occurs
-       and mech is never returned from gss_accept_sec_context.
-       
-       ---
-       Remove use of static buffer in do_downcall
-       
-       Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
-       
-       Dynamically allocate buffer of the correct length rather
-       than using fixed-length buffer.
-       
-       ---
-       Print better error message if rpc routine clnt_create() fails.
-       
-       ---
-       Print appropriate error messages after gss calls.
-       
-       Print gss error messages after calls to gss functions, even if they
-       are for Kerberos only.
-       
-       ---
-       Update gssd and svcgssd to use the new gss mech glue lucid context calls.
-       
-       Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
-       
-       Update gssd and svcgssd to use a lucid context from SPKM3 to send down
-       to the kernel.
-       Update gssd and svcgssd to use the new gss mech glue lucid context calls.
-       Add configure check to see if spkm3 support is available.
-       
-       ---
-       Add support for CONTINUE_NEEDED return from gss_accept_sec_context.
-       
-       Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
-       
-       Add CONTINUE_INIT handling to svcgssd. Store the partially complete spkm
-       context handle in the out_handle of CONTINUE_INIT messages so that it is
-       returned in the in_handle of subsequent messages.
-       
-       ---
-       Replace GSS_C_ANON_FLAG with GSS_C_MUTUAL_FLAG.
-       
-       Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
-       
-       Specify GSS_C_MUTUAL_FLAG rather than GSS_C_ANON_FLAG for
-       spkm3.
-       
-       NOTE: we need a way to pass the appropriate value rather than
-       hard-coding this flag.
-       
-       ---
-       Increase size of rpc send/receive buffers
-       
-       Change the clnt_create() to use routines which allow us to set the
-       send and receive buffer size.  This is needed for larger spkm3
-       exchanges including certificate chains.
-       
-       This has the side-effect of skipping the portmap call since
-       we specify the port (by specifying the service) when getting
-       the server's address information.
-       
-       ---
-       Define _LINUX_QUOTA_VERSION to 1
-       
-       The rquotad code is written against the "old" kernel quota interface.
-       Fedora Core 4 is the only platform known to check for different
-       versions, so this should not have any affect on other platforms
-       and fixes the build for FC4.
-       
-       ---
-
-2005-12-12 Usha Ketineni <ketineni@us.ibm.com>, NeilBrown <neilb@suse.de>
-       *support/nfs/rpcmisc.c(rpc_init): is stdin is a socket, but
-       is already connected (as e.g. from ssh), don't assume we
-       were started by inetd.
-
-2005-11-03 Steve Dickson <SteveD@redhat.com> NeilBrown <neilb@suse.de>
-       *utils/idmapd/idmaps.c:
-       
-       I've recently updated the nfs-utils in rawhide with the
-       latest patches from the SourceForge CVS tree and the
-       latest CITI patches (1.0.7-4).
-       
-       In testing these patches, I notice that when the server was started
-       and a SIGHUP was sent to rpc.idmapd to open the nfs4.nametoid/channel
-       and nfs4.idtoname/channel files, the second open (the nfs4.idtoname one)
-       failed because the path (i.e. ic->ic_path) was NULL.
-       
-       Now the reason the ic_path was NULL was because it was never set
-       during the call to nfsdopen(). nfsdopen() looks like:
-       nfsdopen(char *path)
-       {
-            return ((nfsdopenone(&nfsd_ic[IC_NAMEID], IC_NAMEID, path) == 0 &&
-             nfsdopenone(&nfsd_ic[IC_IDNAME], IC_IDNAME, path) == 0) ? 0 
-              : -1);
-       }
-
-       Note: the call to nfsdopenone() is how the path is set in each nfsd_ic[]
-       entry and nfsdopen() is only called once.
-       
-       So when rpc.idmap comes up and the first call to nfsdopenone() fails
-       (because the server is not running) the path in nfsd_ic[IC_IDNAME] is
-       never filled in because the second nfsdopenone() never happen...
-       
-       Now there was a CITI patche (idmapd_revert_fix_reopen_on_sighup.dif)
-       that tried to address this problem but did seem to fix it.. The
-       attached patch fix the problem by initializing both nfsd_ic[IC_IDNAME]
-       and nfsd_ic[IC_NAMEID] structures with the needed info...
-       I figured since there is no way of changing these paths or filenames
-       by command line args, why not just set them during compile time...
-       so that's what this patch does.
-       
-       This patch also changes how nfsdreopen_one() handles the
-       case where the event has already been set. Unlike the CITI
-       patch (idmapd_revert_fix_reopen_on_sighup.dif) which just
-       just does not register the second event, my patch deletes
-       the old event and the registers the new one. It just seems like
-       the right thing to do since a SIGHUP means a new server just
-       started so we probably should create a new event as well...
-       
-       steved.
-       
-2005-10-14 NeilBrown <neilb@suse.de>
-       *utils/mountd/cache.c(nfsd_fh): Understand type 2 and type 3
-       filesystem identifiers, which are used with device numbers
-       That don't fit into 16 bits.
-
-2005-10-07 Olaf Kirch <okir@suse.de>
-       * utils/mountd/mountd.c(get_exportlist): Without this patch,
-       showmount -e would sometimes display host names that should really
-       have been subsumed under a wildcard entry.
-
-       The problem was that the code in get_exportlist would always
-       skip the next group entry after removing one FQDN.
-
-2005-10-06 Steve Dickson <SteveD@redhat.com> NeilBrown <neilb@suse.de>
-       * support/nfs/export.c: don't warn about sync/async for readonly
-       exports
-       * support/nfs/closeall.c: new file with function to close all 
-       file descriptors from a give minimum upwards.
-       * nfsd/mountd/statd/idmapd/gsssvcd: use closeall.
-       * utils/mountd/mountd.c: Eliminate 3 syslog message that are
-       logged for successful events. 
-       * utils/mountd/mountd.c: make sure the correct hostname is used in
-       the SM_NOTIFY message that is sent from a rebooted server which
-       has multiple network interfaces. (bz 139101)
-
-       Details can be found in:
-       https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=139101
-
-       *utils/idmapd/idmapd.c:Fixed subscripting problem in idmapd (bz
-       158188) This fixes the following problem: 
-         rpc.idmapd: nfsdreopen: Opening '' failed: errno 2 (No such file or directory)
-
-        Details can be found in:
-        https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=158188
-
-       *utils/statd/statd.c(drop_privs): clear st_gid as well as st_uid
-       of stat fails.
-       *utils/statd/svc_run.c(my_svc_run): remove usage of undocumented
-       %m format specifier.
-       *utils/statd/montor.c(sm_mon_1_svc): as above
-       *support/nfs/xlog.c(xlog): Changed xlog to use LOG_INFO instead of
-       LOG_DEBUG so debug messages will appear w/out any config changes
-       to syslog.conf. 
-
-       
-2005-09-02 Mike Frysinger <vapier@gentoo.org>
-       * utils/rquotad/rquota_server.c(getquotainfo): use explicit
-       struture-member copying rather than memcpy, as the element
-       sizes are the same on all architectures.
-
-2005-08-26 Kevin Coffman <kwc@citi.umich.edu>
-       Add option to set rpcsec_gss debugging level (if available)
-
-       Changes to allow gssd/svcgssd to build when using Hiemdal Kerberos
-       libraries.  Note that there are still run-time issues preventing
-       this from working when shared libraries for libgssapi and librpcsecgss
-       are used.
-       
-2005-08-26 Kevin Coffman <kwc@citi.umich.edu>
-       Remove the rpcsec_gss code and rely on an external library instead.
-
-2005-08-26 Kevin Coffman <kwc@citi.umich.edu>
-       *utils/mountd/mountd.c:
-       mountd currently always returns AUTH_NULL and AUTH_SYS as the
-       allowable flavors in mount replies.  We want it to also return gss
-       flavors when appropriate. For now as a hack we just have it always
-       return the KRB5 flavors as well. 
-
-       *utils/mountd/cache.c:
-       
-       When attempting to mount an NFSv4 pseudofilesystem (fsid=0) and the
-       actual exported directory does not exist on the server, rpc.mountd
-       doesn't check the directory exists (when fsidtype=1, i.e. using fsid,
-       but does check for fsidtype=0, i.e. using dev/ino).  The non-existent
-       exported directory path with fsid=0 is written to the kernel via
-       /proc/net/rpc/nfsd.export/channel, which leads to path_lookup() to
-       return ENOENT (seems appropriate).  Unfortunately, the new_cache
-       approach ignores errors returned when writing via the channel file so
-       that particular error is lost and the mount request is silently ignored.
-       
-       Assuming it doesn't make sense to revamp the new_cache/up-call method to
-       not ignore returned errors, it seems appropriate to fix the case where
-       rpc.mountd doesn't check for the existence of an exported directory with
-       fsid= semantics.  The following patch does this by moving the stat() up
-       so it is done for both fsidtype's.  I'm not certain whether the other
-       tests need to be executed for fsidtype=1, but it doesn't appear to hurt
-       [Not exactly true: the comparison of inode numbers caused problems so
-       now it's kept for fsidtype=0 only].
-       
-       Would it be also desirable to log a warning for every error, if any,
-       returned by a write to any of the /proc/net/rpc/*/channel files which
-       would otherwise be ignored (maybe under a debug flag)?
-
-       * gssd/mountd/svcgssd: Changes gssd, svcgssd, and mountd to ignore a
-       SIGHUP rather than dying.
-
-       * many: Remove the gssapi code and rely on an external library instead.
-
-2005-08-26 Kevin Coffman <kwc@citi.umich.edu>
-       * utils/exportfs/exports.man: Document the "crossmnt" export export option
-       * utils/gssd/krb5_util.c: 
-       Add better debugging and partially revert the function
-       check for gss_krb5_ccache_name.
-       
-       For MIT Kerberos releases up to and including 1.3.1, we *must*
-       use the routine gss_krb5_ccache_name to get the K5 gssapi code
-       to use a different credentials cache.
-       
-       For releases 1.3.2 and on, we want to use the KRB5CCNAME
-       environment variable to tell it what to use.
-       (A problem was reported where 1.3.5 was being used, our
-       code was using gss_krb5_ccache_name, but the underlying
-       code continued to use the first (or default?) credentials
-       cache.  Switching to using the env variable fixed the problem.
-       I cannot recreate this problem.
-
-       *utils/gssd/krb5_util.c:
-       Andrew Mahone <andrew.mahone@gmail.com> reported that reiser4
-       always has DT_UNKNOWN.  He supplied patch to move the check
-       for regular files after the stat() call to correctly find
-       ccache files in reiser4 filesystem.
-       
-       Also change the name comparison so that the wrong file is
-       not selected when the substring comparison is done.
-
-       *utils/gssd/krb5_util.c:
-       Limit the set of encryption types that can be negotiated by
-       the Kerberos library to those that the kernel code currently
-       supports.
-       
-       This should eventually query the kernel for the list of
-       supported enctypes.
-
-       *utils/gssd/gss_util.c, utils/svcgssd/svcgssd_main_loop.c:
-       Print more information in error messages to help debugging failures.
-
-       *utils/svcgssd/svcgssd_proc.c: Increase token buffer size and
-       update error handling so that a response is always sent.
-
-       *utils/svcgssd/svcgssd_proc.c: Add support to retrieve
-       supplementary groups. 
-       
-       
-2005-08-26 Kevin Coffman <kwc@citi.umich.edu>
-       * configure.in etc
-       Consolidate some of the Kerberos checking instead of repeating
-       the same things for MIT and Heimdal.
-       Also adds more checks to distinguish 32-bit from 64-bit
-       (mainly for gssapi.h)
-       Fix svcgssd Makefile so make TOP=../../ works correctly there.
-       Enable running a modern autoheader.
-       * utils/gssd/gss_oids.c: Use correct OID value for SPKM-3
-       * utils/gssd/gss_util.c: Fix build with older MIT releases that do not define GSS_C_NT_HOSTBASED_SERVICE
-       * utils/gssd/write_bytes.h, support/include/gssapi/gssapi.h:
-       Length of gss_buffer_desc is a size_t which is 64-bits on a
-       64-bit machine.  Kernel code expects 32-bit integer for length.
-       Coerce length value into a 32-bit value when reading from or
-       writing to the kernel.
-       Change gssapi.h to use datatype size values obtained from
-       configure rather than hard-coded values.
-       * utils/idmapd/idmapd.c: The EV_INIT check here was wrong, and was
-       causing idmapd to become unresponsive to server requests after
-       receiving a sighup. 
-       * utils/idmapd/idmapd.c: Idmapd should flush the server id<->name
-       caches when its started. 
-
-2005-04-12  G. Allen Morris III <gam3@gam3.net>
-
-       * All Makefile: added TOP as needed for easier compile.
-
-       * utils/nfsstat/nfsstat.c: added NFS V4 support; added the -m
-         option; Added -2, -3, and -4 options; changed -a option to -v
-         option; added long options; changed default output to not
-         show V2 NFS statistics unless used.
-
-       * utils/nfsstat/nfsstat.man: Documented above changes; changed
-         authors email address; added BUGS section.
-
-2005-04-07  Chip Salzenberg  <chip@pobox.com>
-
-       * debian/changelog: Version 1.0.7-2.
-
-2005-04-06  Chip Salzenberg  <chip@pobox.com>
-
-       * config.guess, config.sub: Update.
-
-       * support/rpc/svc_auth_gss.c (_svcauth_gss): Avoid using a cast as
-       an lvalue, as it is non-portable.
-
-       * support/nfs/exports.c (parseopts): Accept "acl" option to mean
-       ~NFSEXP_NOACL, and "no_acl" to mean NFSEXP_NOACL.
-       (putexportent): Report NFSEXP_NOACL as "no_acl", and ~NFSEXP_NOACL
-       as "acl".
-       * utils/exportfs/exportfs.c (dump): Report NFSEXP_NOACL as
-       "no_acl".
-       * utils/exportfs/exports.man: Document "no_acl".
-
-2005-03-14  NeilBrown <neilb@cse.unsw.edu.au>
-       Denis Vlasenko <vda@ilport.com.ua>
-       * support/export/client.c(client_init and client_gettype):
-       treat N.N.N.N as a special case of MCL_SUBNETWORK instead of 
-       MCL_FQDN
-
-2005-03-06  G. Allen Morris III <gam3@gam3.net>
-       * support/nfs/cacheio.c(readline): Could not read lines greater
-       than 128 bytes. [1157791] 
-       * utils/exportfs/exports.man: Added a SEE ALSO section and
-       fixed 2 typos. [1018450]
-
-2005-02-28  Trond Myklebust <trond.myklebust@fys.uio.no>
-       * utils/statd/rmtcall.c(statd_get_socket): If a port number is
-       explicitly given, make sure to try to bind to that.
-       
-2005-01-11  Chip Salzenberg  <chip@pobox.com>
-
-       * debian/changelog: Version 1.0.7-1.
-       * debian/nfs-common.default (NEED_IDMAPD, NEED_GSSD):
-       Disable by default, on advice of upstream.
-       * debian/nfs-kernel-server.default (NEED_SVCGSSD):
-       Likewise.
-
-       * utils/svcgssd/Makefile (predep): Symbolically link duplicated
-       source files.
-       (distclean): Remove symlinks to duplicated files.
-
-2004-12-17 NeilBrown <neilb@cse.unsw.edu.au>
-       Release 1.0.7
-
-       * config.mk, configure.in: update version number, run autoconf
-       * configure.in: require nfsidmap.h if gss is enabled.
-       
-2004-12-10 NeilBrown <neilb@cse.unsw.edu.au>
-       Release 1.0.7-pre2
-       
-       * config.mk, configure.in: update version number, run autoconf
-       
-2004-12-10 Neil Brown <neilb@cse.unsw.edu.au>
-       * README : note dependancy on kerberos, libevent, and nfsidmap
-       * configure.in : fail if --enable-nfsv4 and libevent or
-       libnfsidmap are missing.
-       * configuyre.in: improve message if krb5 support is missing
-       
-2004-12-06 Paul Clements <paul.clements@steeleye.com>  
-       * support/include/ha-callout.h: get return status from waitpid
-       correctly. 
-       * support/include/ha-callout.h: don't ignore SIGCHLD while waiting
-       for a callout to complete.
-       * utils/statd/statd.c(sigusr): print current start when re-reading
-       notify list due to SIGUSR1
-       * utils/statd/svc_run.c(my_svc_run): call change_state when
-       re-notifying clients.
-       
-2004-12-06 Marc Eshel <eshel@almaden.ibm.com>
-       * utils/statd/svc_run.c(my_svc_run): allow loop to exit when in
-       MODE_NOTIFY_ONLY
-       *utils/statd/rmtcall.c(statd_get_socket): if a hostname is given
-       to statd with -n, prefer it's IP address to the default for
-       listening on.
-       
-2004-12-06 Bruce Allan <bwa@us.ibm.com>
-       * utils/mountd/auth.c(auth_reload)  Clear the "my_client" cache on
-       an auth_reload to avoid old data getting used.
-       
-2004-12-03 NeilBrown <neilb@cse.unsw.edu.au>
-       Release 1.0.7-pre1 for testing
-       
-       * config.mk, configure.in: update version number, run autoconf
-       
-2004-12-03 Trond Myklebust <trond.myklebust@fys.uio.no>
-
-       * utils/statd/statd.c(main): ignore SIGPIPE
-       
-2004-11-22 "J. Bruce Fields" <bfields@fieldses.org>
-
-       * tools/rpcdebug/rpcdebug.c: support aliases "nfsdebug" and
-       "nfsddebug" and update flag names.
-       * configure.in, nodist/* redhat/* nfs-utils.spec*: remove redhat
-       specific files (as no-one actually uses them, especially not
-       redhat), and the nodist /etc files (as they drift out-of-date, and
-       the debian directory provides a suitable example.
-       * utils/svcgssd_proc.c(get_ids): fix memory leak
-       * utils/svcgssd/svcgssd_proc.c: Rely on count of the number of
-       groups instead of using a special guard value to identify the end
-       of the list. 
-       * utils/idmapd/idmapd.c: don't allow Default domain and anon-uid
-       or -gid to be specified on command line.
-       * utils/idmapd/idmapd.c: improve error messages
-       * utils/idmapd/idmapd.c: Reopen nfsd files on sighup.  Allows us
-       to start up client side only (even when nfsd module not loaded),
-       and then sighup later after insmodding nfsd module. 
-       * utils/idmapd/idmapd.c: Make sure we catch all errors on
-       daemonizing by waiting for child to report succesfull startup
-       using a pipe. 
-       * utils/idmapd/idmapd.c: Let libnfsidmapd parse the idmapd.conf
-       file for the default domain, instead of doing that ourselves.
-       * utils/gssd/gssd_proc.c: Make sure we get an error when a gssd
-       downcall fails. 
-       * utils/gssd/gssd_proc.c: We were forgetting to restore the euid
-       on certain failures, which meant gssd could get stuck in a state
-       where it didn't have permissions to read the files in rpc_pipefs
-       that it needed to. 
-       * utils/gssd/gssd_proc.c: Use libnfsidmapd to map gss principals
-       to uids. 
-       * debian/nfs-kernel-server.default: Document the NEED_SVCGSSD
-       variable in /etc/default/nfs-kernel-server. 
-
-       
-2004-11-22 NeilBrown <neilb@cse.unsw.edu.au>
-
-       * utils/exportfs/nfsd.man: corrected typo in .BR macro usage -
-       reported by Eric Raymond
-       
-2004-10-19 "J. Bruce Fields" <bfields@fieldses.org>
-
-       * support/gssapi/* support/rpc/* utils/gssd/* utils/svcgssd/* etc
-       initial support for GSSAPI authentication
-       
-2004-09-15 Neil Brown <neilb@cse.unsw.edu.au>
-
-       * utils/statd/monitor.c(sm_unmon_1_svc): is RESTRICTED_STATD, then
-       check IP address and force my_name to 127.0.0.1 to match 
-       what happens in sm_mon_1_svc.  This avoid spurious "erroneous
-       SM_UNMON" messages.
-       * utils/statd.monitor.c(sm_unmon_all_1_svc): likewise
-       
-2004-09-15 "J. Bruce Fields" <bfields@fieldses.org>    
-
-       * Assorted changes to support "gss/*" style authentication
-       * utils/idmapd: new idmapd daemon for nfsv4 username lookup
-       
-2004-09-06 Trond Myklebust <trond.myklebust@fys.uio.no>
-       Neil Brown <neilb@cse.unsw.edu.au>
-
-       * utils/mountd/auth.c(auth_authenticate_internal): fix
-       uninitialsed variable problem (causes bad error messages).
-
-2004-09-06 Paul Clements <paul.clements@steeleye.com>
-       Neil Brown <neilb@cse.unsw.edu.au>
-
-       * utils/mountd/mountd.c(main): support --ha-callout (-H) for
-       specifying a callout program
-       * utils/mountd/rmtab.c: Call ha_callout on mount/unmount
-       * utils/statd/monitor.c: Call ha_callout on add/del client
-       * utils/statd/rmtcall.c: as above
-       * utils/statd/statd.c: handle --ha-callout (-H)
-       * utils/statd/svc_run.c: call notify_hosts is we have received a
-       sighup
-       * support/include/ha-callout.h: define ha_callout function
-        
-       
-2004-08-31 NeilBrown <neilb@cse.unsw.edu.au>
-       * utils/mountd/cache.c(cache_process_req): clear fd after
-       processing so as not to confused libc/sunrpc into thinking
-       it need to do something with that fd.
-       
-2004-08-31 NeilBrown <neilb@cse.unsw.edu.au>
-
-       * debian/nfs-kernel-server.init(start,stop) mount the nfsd
-       filesystem, if available, before starting nfs services, and 
-       unmount it afterwards.
-       * etc/nodist/nfs-server: ditto
-       * etc/redhat/nfs.init: likewise
-       * etc/redhat/nfs: add "MOUNT_NFSD" flag to control above.
-       
-2004-06-08 NeilBrown <neilb@cse.unsw.edu.au>
-
-       * utils/exportfs/exportfs.c: Don't rmtab_read if new_cache, it
-         isn't necessary.
-       * support/nfs/cacheio.c(cache_flush): Change order in which caches
-         are flushed so that dependancies don't keep things in the cache
-         too long.
-       
-2004-03-18  Chip Salzenberg  <chip@pobox.com>
-
-       * debian/changelog: Version 1.0.6-2.
-
-2004-02-24 NeilBrown <neilb@cse.unsw.edu.au>
-       from "J. Bruce Fields" <bfields@fieldses.org>
-
-       * utils/mountd/cache.c: call auth_reload to make sure auth data is
-       current before responding to kernel upcall.
-       
-2004-02-24 NeilBrown <neilb@cse.unsw.edu.au>
-       Based on patch from  Greg Banks <gnb@melbourne.sgi.com>
-
-       * utils/exportfs/exports.man: Document fsid= option.
-       
-2003-09-15 NeilBrown <neilb@cse.unsw.edu.au>
-
-       Release 1.0.6
-
-       * rules.mk: Add dep: rule when no OBJS, so "make dep" works in
-       support/include, and depend in "predep"
-       * support/export/Makefile, tools/rpcgen/Makefile,
-       utils/statd/Makefile: add "predep" rule so that "make dep" works.
-       * Makefile: allow a simple "make" to run ./configure and "make dep"
-       if needed.
-       * configure.in, nfs-utils.spec: Update version to 1.0.6
-       * run autoconf
-       
-2003-09-12  Chip Salzenberg  <chip@pobox.com>
-
-       * debian/changelog: Version 1.0.6-1.
-
-2003-09-12 NeilBrown <neilb@cse.unsw.edu.au>
-
-       * utils/mountd/mountd.c(main): Impose FD_SETSIZE as an upper limit
-       for RLIMIT_NOFILE
-       * utils/statd/statd.c(main): Ditto.
-
-          michael <michael@newdream.net> discovered that svc_setreqsize
-          in glibc can segfault if RLIMIT_NOFILE is bigger than
-          FD_SETSIZE, so a simple solution is to impose a hard limit.
-
-2003-09-09  Chip Salzenberg  <chip@pobox.com>
-
-       * debian/changelog: Version 1.0.5-3.
-       * support/export/hostname.c (get_reliable_hostbyaddr): Fix crash
-       on invalid reverse DNS.
-       * utils/showmount/showmount.c (main): Fix inet_ntoa() parameter.
-       * tools/rpcgen/rpc_cout.c (print_header): Remove unused vars.
-       * tools/rpcgen/rpc_parse.c (def_union): Likewise.
-
-2003-08-22  Chip Salzenberg  <chip@pobox.com>
-
-       * utils/statd/{log.h,log.c}: Rename log() to note() and L_* to
-       N_*, to avoid conflict with ISO C built-in log() function.
-       * utils/statd/*.c: Use note().
-
-2003-08-20  Chip Salzenberg  <chip@pobox.com>
-
-       * debian/changelog: Version 1.0.5-2.
-
-2003-08-11 NeilBrown <neilb@cse.unsw.edu.au>
-
-       * utils/mountd/cache.c(cache_get_filehandle): close the filehandle
-       before returning.
-       
-2003-08-04 NeilBrown <neilb@cse.unsw.edu.au>
-
-       * support/include/nfs/export.h, support/nfs/exports.c,
-       utils/exportfs/exports.c, utils/mountd/mountd.c:  change
-       NFSEXP_CROSSMNT to NFSEXP_CROSSMOUNT to avoid confusion with older
-       meaning. Also remove meaningless
-       NFSEXP_{UIDMAP,KERBEROS,SUNSECURE}
-       
-2003-08-04 NeilBrown <neilb@cse.unsw.edu.au>
-
-       * support/export/xtab.c, support/include/nfslib.h,
-       support/nfs/cacheio.c, support/nfs/nfssvc.c,
-       utils/exportfs/exportfs.c, utils/exportfs/exportfs.man,
-       utils/exportfs/nfsd.man, utils/mountd/cache.c: support
-       /proc/fs/nfsd/* as a perferred alternate to /proc/fs/nfs/*
-       (nfs-utils-1.0.5-post2)
-       
-2003-08-04 NeilBrown <neilb@cse.unsw.edu.au>
-
-       * support/nfs/nfsexport.c: open channel file O_WRONLY when
-       only writing.
-       * utils/mountd/cache.c: maintain mountlist when new_cache is
-       active. Also use O_WRONLY for channel files.
-       * utils/mountd/mountd.h: mountlist_{del,add} now take a host name
-       rather than an nfs_export.
-       * utils/mountd/rmtab.c: ditto.
-       (nfs-utils-1.5.0-post1)
-       
-2003-07-24  Chip Salzenberg  <chip@pobox.com>
-
-       * support/nfs/xlog.c (xlog): Revise buffer-overflow fix to
-       use Debian security team's cleaner approach.
-       * debian/changelog: Version 1.0.5-1.
-       * debian/nfs-kernel-server.init: Cosmetic changes.
-
-2003-07-18 NeilBrown <neilb@cse.unsw.edu.au>
-
-       Release 1.0.5:
-        1.0.4 was a bit of a brown-paper-bag-release because of the extra
-        'free' in auth.c.  So I'm releasing this just a few days later.
-
-       * support/nfs/cacheio.c(cache_flush): Correct test for 'open
-       failed'
-       * utils/exportfs/exportfs.c(main): If "-f" given as lone option,
-       check if new_cache is enabled, error if not, flush and exit if it
-       is. 
-       * utils/exportfs/exportfs.man: Explain -f option and explain the
-       two different modes that exportfs can work in.
-       * utils/mountd/mountd.c: Do not change RLIMIT_NOFILE if the -o
-       option wasn't given.
-       * utils/mountd/mountd.man: Record the change if default behaviour
-       for RLIMIT_NOFILE.
-       * configure.in, nfs-utils.spec: update version to 1.0.5 and
-       run autoconf
-       
-2003-07-15 NeilBrown <neilb@cse.unsw.edu.au>
-
-       * utils/mountd/mountd.c(main): getopt string fix for 'o'
-       * utils/mountd/auth.c(auth_authenticate): remove extra 'free'
-       * utils/exportfs/exportfs.c(main): make 'exportfs -f' just flush
-       the caches.
-       * support/include/nfs/export.h: Reserve a bit for possible ACL
-       related use.
-       
-2003-07-03 NeilBrown <neilb@cse.unsw.edu.au>
-
-       * utils/exportfs/nfsd.man: new man page for nfsd filesystem. Also
-       assorted changed to cope with section 7 of the manual.
-       * configure.in, nfs-utils.spec: Update version to 1.0.4
-       * run autoconf
-
-       This is a 'pre-release' for 1.1.0  Hopefully 1.1.0 will be the
-       baseline for 2.6 and 2.8.  I.e. it should continue to work right
-       through the 2.8 (or 3.0) kernel series.  Previous releases wont.
-
-2003-07-04 NeilBrown <neilb@cse.unsw.edu.au>   
-       Steve Dickson <SteveD@redhat.com>
-
-       statd cleanup:
-       * utils/statd/statd.c: create a pidfile with pid of statd, and
-       truncate it when statd exists.
-       * utils/statd/statd.c: drop privs by setuid to owner of SM_DIR,
-       and warn if this is root.
-       * utils/statd/statd.c: when statd forks, connect child to parent
-       with a pipe, and send a byte down the pipe once the child is
-       working properly.
-       * Makefile: create and chown sm, sm.bak, state when "make install"
-       * configure.in: add --with-statduser= option which defaults to
-       "rpcuser" or "nobody"
-       * config.mk.in: pass "statduser" through to Makefile
-       
-2003-07-03 NeilBrown <neilb@cse.unsw.edu.au>
-
-       * support/include/nfs/nfs.h: Make sure correct __kernel_dev_t is
-       used as the size was changed somewhere in 2.5.60-2.5.70.  Without
-       this nfs-utils compiles against 2.6 headers will not work on a
-       2.4 kernel.     
-       
-2003-07-03 NeilBrown <neilb@cse.unsw.edu.au>
-
-       * support/nfs/nfssvc.c(nfssvc): If /proc/fs/nfs/threads exists,
-       set number of threads by writing to there.  This means it will
-       still work when the syscall interface goes away in 2.7.
-
-2003-07-03 NeilBrown <neilb@cse.unsw.edu.au>
-       fumihiko kakuma <kakmy@mvh.biglobe.ne.jp>
-
-       * utils/exportfs/exportfs.c(unexportfs): improve host comparison
-       so as to only export the wildcard exports that were asked for.
-       * support/export/export.c(export_allowed): changed to return the
-       nfs_export rather than a "struct exportent", as m_changed is
-       needed by called
-       * support/export/rmtab.c(rmtab_read): modified to deal with
-       interface change for export_allowed(), and enhanced to preserve
-       m_changed flag when a wild-card export causes the creation of
-       a non-wildcard export.
-       
-2003-07-02 NeilBrown <neilb@cse.unsw.edu.au>
-       Steve Dickson <SteveD@redhat.com>
-
-       * utils/mountd/mountd.man: Add valid kinds of debugging.
-       * utils/mountd/mountd.c(main): ignore SIGPIPE
-       * utils/nfsstat/nfsstat.c: fine-tune printing of warning so
-       we don't get warnings about unavailable stats that weren't asked
-       for.
-       
-2003-06-24 NeilBrown <neilb@cse.unsw.edu.au>
-
-       * support/nfs/nfsexport.c(exp_unexp): When unexporting filesystems
-       via /rpc/net/rpc/nfsd*/channel, set the expiry date to 1, not
-       'forever', so things disappear out of the cache rather than just
-       be ignored. 
-       
-2003-06-16  "J. Bruce Fields" <bfields@fieldses.org>
-
-       * utils/mountd/cache.c(nfsd_fh): don't export the export_ent
-       if it wasn't found.
-
-2003-06-16  NeilBrown  <neilb@cse.unsw.edu.au>
-
-       * debian/nfs-kernel-server.init,etc/nodist/nfs-server,
-       etc/redhat/nfs.init: when checking if V3 is supported, make sure
-       nfs server 'knows' about 127.0.0.1 first.
-       
-2003-06-10  Chip Salzenberg  <chip@pobox.com>
-
-       * support/nfs/xlog.c (xlog): Fix off-by-one buffer overflow bug.
-       * debian/changelog: Version 1.0.3-2.
-
-2003-05-30 Michael Griffith <grif@michaelgriffith.com>
-       NeilBrown <neilb@cse.unsw.edu.au>
-
-       utils/nfsstat/nfsstat.c(print_callstats): use unsigned
-       long long to avoid overflow when printing stats.
-       
-2003-05-30  NeilBrown <neilb@cse.unsw.edu.au>
-
-       * support/export/export.c, support/include/nfslib.h,
-       support/nfs/export.c, utils/exportfs/exportfs.c,
-       utils/mountd/mountd.c: new export option "mountpoint"
-       If no path is given, then the export point must be a
-       mount point, or it won't be exported.  If a path is 
-       given (e.g. mountpoint=/path) then that path must be
-       a mountpoint or the exportpoint won't be exported.
-       * utils/exportfs/exportfs.man: document mountpoint option.
-       * support/misc/mountpoint.c: New file with is_mountpoint()
-       to determine if something is a mountpoint.
-       
-2003-05-23  NeilBrown <neilb@cse.unsw.edu.au>
-
-       * utils/mountd/cache.c(cache_get_filehandle): take a separate path
-       argument as we might not be getting the filehandle for the
-       mountpoint.
-       * utils/mountd/mountd.c(get_rootfh): pass real path when calling
-       cache_get_filehandle.
-       * utils/mountd/mountd.c(get_rootfh): check export point and
-       requested directory are on the same filesystem, and complain if
-       not.
-       
-2003-05-22  NeilBrown <neilb@cse.unsw.edu.au>
-
-       * utils/mountd/auth.c(auth_authenticate_internal): make sure
-       portnumber is still checked when using new cache lookup.
-       
-2003-05-21  NeilBrown <neilb@cse.unsw.edu.au>
-
-       * utils/exportfs/exportfs.c: Use check_new_cache and cache_flush
-        Don't actually talk to kernel when new cache is in effect, except
-        to flush
-       * utils/exportfs/exportfs.c: add -f option to fully flush cache.
-       * support/export/xtab.c: Only rename new xtab into place if it has
-        changed, thus preserving modify date for exportfs to use when
-        flushing.
-       * support/nfs/cacheio.c: Add cache_flush
-       * support/export/xtab.c: Only rename new xtab into place if it has
-        changed, thus preserving modify date for exportfs to use when
-        flushing.
-       
-2003-05-21  NeilBrown <neilb@cse.unsw.edu.au>
-
-       * support/export/client.c: Add client_compose, client_member to
-       handle new composite client names
-       * support/include/exportfs.h: Declare above functions.
-       * utils/mountd/auth.c: use client_compose to determine calling
-       client if new cache is being used.
-       * utils/mountd/auth.c: call cache_export to export a filesystem if
-       new_cache, check if new cache is used, and call my_svc_run instead
-       of svc_run
-       * utils/mountd/svc_run.c: new file defining my_svc_run
-       * utils/mountd/cache.c: new file for handling cache upcalls.
-       * support/nfs/cacheio.c(check_new_cache): new function to check if
-       new cache should be used.
-       
-       
-2003-05-21  NeilBrown <neilb@cse.unsw.edu.au>
-
-       * support/include/nfs/export.h: New CROSSMNT distinct from NOHIDE
-       * support/nfs/exports.c: Make CROSSMNT distinct from NOHIDE
-       * utils/exportfs/exportfs.c(dump): ditto
-       
-2003-05-21  NeilBrown <neilb@cse.unsw.edu.au>
-
-       * support/export/hostname.c(get_reliable_hostbyaddr): new function
-       to get host name from address with full checking of authenticity.
-       * support/include/misc.h: declare above function
-       * utils/mountd/auth.c(auth_authenticate_internal): remove all
-       logic for authenticating address.
-       * utils/mountd/auth.c(auth_authenticate): call new
-       get_reliable_hostbyaddr to to hostname lookup before calling _internal.
-       
-       
-2003-03-30  NeilBrown <neilb@cse.unsw.edu.au>
-
-       * tools/rpcgen/rpc_main.c(find_cpp): removed
-       * tools/rpcgen/rpc_main.c(open_input): use execvp to find "cpp", 
-       then try hard-coded paths.
-       
-2003-03-26  Chip Salzenberg  <chip@pobox.com>
-
-       * debian/changelog: Version 1.0.3-1.
-
-2003-03-26 NeilBrown <neilb@cse.unsw.edu.au>
-
-       * utils/mountd/rmtab.c (slink_safe_rename): real_newpath should be
-       "const char*", not "char*".
-
-2003-03-26 NeilBrown <neilb@cse.unsw.edu.au>
-
-       * configure.in (VERSION): Set to "1.0.3".
-       * nfs-utils.spec: Likewise.
-       * configure: Regenerated.
-
-2003-03-26 NeilBrown <neilb@cse.unsw.edu.au>
-
-       * support/nfs/cacheio.c: New File - support for read/writing
-       to export cache in /proc/rpc/*/channel
-       * support/nfs/Makefile: compile cacheio.c
-       * support/include/nfslib.h: declare cacheio.c functions
-       * support/nfs/nfsexport.c: export and unexport through
-       /proc/rpc/*/channel if possible, as old syscall interface
-       may not survive into 2.6 on all architectures.
-       
-2003-02-19 NeilBrown <neilb@cse.unsw.edu.au>   
-       Ben Leslie <benno@sesgroup.net>
-
-       * support/nfs/rpcmisc.c(rpc_init):  change test for ignoring
-       "defport" from (__rpcfdtype == 0) to (__rpcpmstart==0).  The
-       former would incorectly ignore defport if the application 
-       explicitly set __rpcfdtype.  The later is sufficient to avoid the
-       special handling in the case where stdin is an internet socket.
-
-       * utils/mountd/mountd.c(main): Add 'n' to option list in
-       getopt_long as this is a short form of --no-tcp which want being
-       checked.
-       
-2003-02-12  Chip Salzenberg  <chip@pobox.com>
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * debian/changelog: Version 1.0.2-2.
+commit 1bb84a09ff58d1314826945db2f3f1f63015e263
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Tue Aug 24 07:13:54 2010 -0400
 
-2002-11-27  Chip Salzenberg  <chip@pobox.com>
+    libexport: Fix IP address check in check_netgroup()
+    
+    Neil Brown reports that recent changes to replace
+    gethostby{addr,name}(3) with get{addr,info}name(3) may have
+    inadvertently broken netgroup support.
+    
+    There used to be a gethostbyaddr(3) call in the third paragraph in
+    check_netgroup().  The reason for that gethostbyaddr(3) call was that
+    the first innetgr(3) call has already confirmed that hname is not a
+    member of the netgroup.  We also need to confirm that, if hname
+    happens to be an IP address, the hostname bound to that IP address is
+    not a member of the netgroup, either.
+    
+    Fix this by restoring appropriate address to hostname mapping of hname
+    before retrying the innetgr(3) call.
+    
+    See http://marc.info/?l=linux-nfs&m=128084830214653&w=2 .
+    
+    Introduced by commit 0509d3428f523776ddd9d6e9fa318587d3ec7d84.
+    
+    Reviewed-by: Neil Brown <neilb@suse.de>
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * utils/mountd/rmtab.c (slink_safe_rename): Fix off-by-one buffer
-       overflow bug.  Reformat per rest of source file.
+commit abdc32b6af6f38a741a481aeefb5623916152498
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Tue Aug 24 07:06:14 2010 -0400
 
-2002-11-19  NeilBrown <neilb@cse.unsw.edu.au>
+    bexport: Add a common exit label to check_netgroup()
+    
+    check_netgroup() is going to be changed to free dynamically
+    allocated resources before it returns, so a common
+    exit point is needed.
+    
+    Reviewed-by: Neil Brown <neilb@suse.de>
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * utils/exportfs/exports.man: Correct notes about whether the wild
-       card characters match a period.  They do.
-       
-2002-10-15  Juan Gomez <juang@us.ibm.com>
+commit 396aac50f5addea2f4d62c25600ca68788a56d97
+Author: Guillaume Rousse <Guillaume.Rousse@inria.fr>
+Date:   Tue Aug 17 17:47:38 2010 -0400
 
-       * utils/mountd/rmtab.c (slink_safe_rename): New. Support
-       symlink.
-       (mountlist_add): Call slink_safe_rename instead of rename.
+    Fix the description of nfsversion mount option in the man nfs page
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-2002-10-11  H.J. Lu <hjl@lucon.org>
+commit e2003650c68cf47806fb24f7d88fae5524b70aab
+Author: Steve Dickson <steved@redhat.com>
+Date:   Mon Jul 19 12:12:52 2010 -0400
 
-       * support/include/exportfs.h (export_errno): New.
+    Remove warnings from nfsctl.c
+    
+    nfsctl.c: In function 'expsetup':
+    nfsctl.c:112: warning: signed and unsigned type in conditional expression
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * support/nfs/exports.c: Include <errno.h>.
-       (export_errno): New.
-       (getexportent): Set export_errno to EINVAL for bad option.
-       (parseopts): Likewise.
-       Report the location of the default sync/async option.
+commit 1e472b3476cc6d7b95573b7d630d0fc51bebadf3
+Author: Steve Dickson <steved@redhat.com>
+Date:   Wed Aug 4 10:48:17 2010 -0400
 
-       * utils/exportfs/exportfs.c (main): Initialize export_errno to
-       0. Return export_errno.
+    Removed warnings from mountd.c
+    
+    mountd.c: In function 'mount_null_1_svc':
+    mountd.c:195: warning: unused parameter 'rqstp'
+    mountd.c:195: warning: unused parameter 'argp'
+    mountd.c:195: warning: unused parameter 'resp'
+    mountd.c: In function 'mount_dump_1_svc':
+    mountd.c:213: warning: unused parameter 'argp'
+    mountd.c: In function 'mount_umnt_1_svc':
+    mountd.c:224: warning: unused parameter 'resp'
+    mountd.c: In function 'mount_umntall_1_svc':
+    mountd.c:248: warning: unused parameter 'argp'
+    mountd.c:248: warning: unused parameter 'resp'
+    mountd.c: In function 'mount_export_1_svc':
+    mountd.c:258: warning: unused parameter 'argp'
+    mountd.c: In function 'mount_exportall_1_svc':
+    mountd.c:269: warning: unused parameter 'argp'
+    mountd.c: In function 'mount_dump_1_svc':
+    mountd.c:216: warning: unused parameter 'argp'
+    mountd.c: In function 'mount_umnt_1_svc':
+    mountd.c:227: warning: unused parameter 'resp'
+    mountd.c: In function 'mount_umntall_1_svc':
+    mountd.c:251: warning: unused parameter 'argp'
+    mountd.c:251: warning: unused parameter 'resp'
+    mountd.c: In function 'mount_export_1_svc':
+    mountd.c:261: warning: unused parameter 'argp'
+    mountd.c: In function 'mount_exportall_1_svc':
+    mountd.c:272: warning: unused parameter 'argp'
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-2002-10-11  Juan Gomez  <gomez@cs.sjsu.edu>
-       NeilBrown <neilb@cse.unsw.edu.au>
+commit 14e6ec262e58e962c2d7e9161ca9c56529de3170
+Author: Steve Dickson <steved@redhat.com>
+Date:   Wed Aug 4 10:41:18 2010 -0400
 
-       utils/statd/statd.c(killer): don't pmap_unset if in notify_only mode
-       utils/statd/statd.c(main): don't pmap_unset if in notify_only mode
-       
-2002-09-16  Chip Salzenberg  <chip@pobox.com>
+    Removed warnings from idmapd.c
+    
+    idmapd.c:120: warning: missing initializer
+    idmapd.c:120: warning: (near initialization for 'nfsd_ic[0].ic_event')
+    idmapd.c:121: warning: missing initializer
+    idmapd.c:121: warning: (near initialization for 'nfsd_ic[1].ic_event')
+    idmapd.c: In function 'flush_nfsd_cache':
+    idmapd.c:173: warning: comparison between signed and unsigned integer expressions
+    idmapd.c: In function 'dirscancb':
+    idmapd.c:384: warning: unused parameter 'fd'
+    idmapd.c:384: warning: unused parameter 'which'
+    idmapd.c: In function 'svrreopen':
+    idmapd.c:468: warning: unused parameter 'fd'
+    idmapd.c:468: warning: unused parameter 'which'
+    idmapd.c:468: warning: unused parameter 'data'
+    idmapd.c: In function 'clntscancb':
+    idmapd.c:474: warning: unused parameter 'fd'
+    idmapd.c:474: warning: unused parameter 'which'
+    idmapd.c: In function 'nfsdcb':
+    idmapd.c:488: warning: unused parameter 'fd'
+    idmapd.c: In function 'nfscb':
+    idmapd.c:663: warning: unused parameter 'fd'
+    idmapd.c: In function 'validateascii':
+    idmapd.c:850: warning: comparison between signed and unsigned integer expressions
+    idmapd.c:858: warning: comparison between signed and unsigned integer expressions
+    idmapd.c: In function 'getfield':
+    idmapd.c:916: warning: comparison between signed and unsigned integer expressions
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * utils/rquotad/rquota_svc.c (main): Use int for value of getopt.
+commit 2ccfd2d5f390bcac7a44f8887cd3f15df1966e0f
+Author: Steve Dickson <steved@redhat.com>
+Date:   Wed Aug 4 10:29:28 2010 -0400
 
-2002-09-15  Chip Salzenberg  <chip@pobox.com>
+    Removed warnings from configfile.c
+    
+    configfile.c:195: warning: 'inline' is not at beginning of declaration
+    configfile.c:232: warning: 'inline' is not at beginning of declaration
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * support/nfs/rpcmisc.c (rpc_init): Allow stdin to be a non-INET
-       socket, as occurs when run from sshd.
-       * debian/changelog: Version 1.0.2-1.
+commit bc8fdd5ebcabe57cacd382673ca9e4a79ff7b18e
+Author: Steve Dickson <steved@redhat.com>
+Date:   Wed Aug 4 10:26:13 2010 -0400
 
-2002-09-12  H.J. Lu <hjl@lucon.org>
+    Removed warnings from svcgssd_proc.c
+    
+    svcgssd_proc.c: In function 'send_response':
+    svcgssd_proc.c:135: warning: unused parameter 'f'
+    svcgssd_proc.c: In function 'handle_nullreq':
+    svcgssd_proc.c:434: warning: comparison of unsigned expression < 0 is always false
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * support/nfs/svc_socket.c: Remove HAVE_SVCTCP_SOCKET and
-       HAVE_SVCUDP_SOCKET.
+commit be5b2ed57b0e0a3da91f4ec785718302d0351199
+Author: Steve Dickson <steved@redhat.com>
+Date:   Wed Aug 4 10:22:13 2010 -0400
 
-2002-09-12  H.J. Lu <hjl@lucon.org>
+    Removed warnings from network.c
+    
+    network.c: In function 'nfs_verify_family':
+    network.c:1366: warning: unused parameter 'family'
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * configure.in: Remove checking svctcp_socket and svcudp_socket.
-       * configure: Regenerated.
+commit 6b8d7c05fe738a4c7295754b4be552c703024f58
+Author: Steve Dickson <steved@redhat.com>
+Date:   Tue Jul 20 18:43:46 2010 -0400
 
-       * support/include/config.h.in (HAVE_SVCTCP_SOCKET): Removed.
-       (HAVE_SVCUDP_SOCKET): Removed.
+    Removed warnings from nfs4mount.c
+    
+    nfs4mount.c: In function 'fill_ipv4_sockaddr':
+    nfs4mount.c:149: warning: comparison between signed and unsigned integer expressions
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * support/include/nfslib.h: Undo the last change.
+commit cf2fd4869fdb77741bca9e3f713af49b889661b3
+Author: Steve Dickson <steved@redhat.com>
+Date:   Tue Jul 20 18:40:31 2010 -0400
 
-2002-09-12  H.J. Lu <hjl@lucon.org>
+    Removed warnings from nfsmount.c
+    
+    nfsmount.c: In function 'nfsmount':
+    nfsmount.c:513: warning: missing initializer
+    nfsmount.c:513: warning: (near initialization for 'mnt_server.saddr')
+    nfsmount.c:514: warning: missing initializer
+    nfsmount.c:514: warning: (near initialization for 'nfs_server.saddr')
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * support/include/nfslib.h (svctcp_socket): Protect it with
-       HAVE_SVCTCP_SOCKET.
-       (svcudp_socket): Protect it with HAVE_SVCUDP_SOCKET.
+commit 45a73911fff657942ec67317d000badb8e2c5282
+Author: Steve Dickson <steved@redhat.com>
+Date:   Tue Jul 20 18:22:32 2010 -0400
 
-2002-09-12  H.J. Lu <hjl@lucon.org>
+    Removed warnings from svcgssd.c
+    
+    svcgssd.c: In function 'sig_hup':
+    svcgssd.c:160: warning: unused parameter 'signal'
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * configure.in (VERSION): Set to "1.0.2".
-       * configure: Regenerated.
-       * nfs-utils.spec: Likewise.
+commit b8ba21cedc6aac3b2847217caf55885bb1a74805
+Author: Steve Dickson <steved@redhat.com>
+Date:   Tue Jul 20 18:13:45 2010 -0400
 
-2002-09-12  H.J. Lu <hjl@lucon.org>
+    Removed warnings from gssd_proc.c
+    
+    gssd_proc.c: In function 'create_auth_rpc_client':
+    gssd_proc.c:939: warning: comparison between signed and unsigned integer expressions
+    gssd_proc.c:939: warning: comparison between signed and unsigned integer expressions
+    gssd_proc.c: In function 'handle_krb5_upcall':
+    gssd_proc.c:1164: warning: comparison between signed and unsigned integer expressions
+    gssd_proc.c: In function 'handle_spkm3_upcall':
+    gssd_proc.c:1178: warning: comparison between signed and unsigned integer expressions
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * configure.in: Check svctcp_socket and svcudp_socket.
-       * configure: Regenerated.
+commit f4321ac3466aa9d4c4e11ba232f1ff9bea561288
+Author: Steve Dickson <steved@redhat.com>
+Date:   Tue Jul 20 18:08:13 2010 -0400
 
-       * support/include/config.h.in (HAVE_SVCTCP_SOCKET): New.
-       (HAVE_SVCUDP_SOCKET): New.
+    Removed warnings from krb5_util.c
+    
+    krb5_util.c: In function 'realm_and_service_match':
+    krb5_util.c:617: warning: unused parameter 'context'
+    krb5_util.c: In function 'limit_krb5_enctypes':
+    krb5_util.c:1275: warning: unused parameter 'uid'
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * support/include/nfslib.h (svctcp_socket): New.
-       (svcudp_socket): New.
+commit f89b109c04a8eab81bfa8b8fcdc7692673e13e49
+Author: Steve Dickson <steved@redhat.com>
+Date:   Tue Jul 20 17:53:47 2010 -0400
 
-       * support/nfs/Makefile (OBJS): Add svc_socket.o.
+    Removed warnings from gssd_main_loop.c
+    
+    gssd_main_loop.c: In function 'dir_notify_handler':
+    gssd_main_loop.c:64: warning: unused parameter 'sig'
+    gssd_main_loop.c:64: warning: unused parameter 'si'
+    gssd_main_loop.c:64: warning: unused parameter 'data'
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * support/nfs/svc_socket.c: New.
+commit d2c329ba4b7ccdea76bcc857a73206eab68428f8
+Author: Steve Dickson <steved@redhat.com>
+Date:   Tue Jul 20 17:45:17 2010 -0400
 
-       * support/nfs/rpcmisc.c (rpc_init): Call svctcp_socket and
-       svcudp_socket if port is unspecified.
+    Removed warnings from gssd.c
+    
+    gssd.c: In function 'sig_hup':
+    gssd.c:78: warning: unused parameter 'signal'
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * utils/nfsd/nfsd.c (main): Call getservbyname for port.
+commit 8a72ac3280ce8f9d0f48383d47dd06c80567bc09
+Author: Steve Dickson <steved@redhat.com>
+Date:   Tue Jul 20 17:19:20 2010 -0400
 
-       * utils/rquotad/rquota_svc.c: Include <nfslib.h>.
-       (killer): New. Signal handler to unregister.
-       (main): Use killer. Call svcudp_socket to get the default
-       socket.
+    Removed warnings from atomicio.c
+    
+    atomicio.c: In function 'atomicio':
+    atomicio.c:48: warning: comparison between signed and unsigned integer expressions
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-2002-09-02 Juan Gomez <juang@us.ibm.com>
-       NeilBrown <neilb@cse.unsw.edu.au>
+commit 14becdb7bc23f075f786325f7e953c2f928fe385
+Author: Steve Dickson <steved@redhat.com>
+Date:   Mon Jul 19 14:54:51 2010 -0400
 
-       Add -N option to statd to run in notify-only mode.
+    Removed warnings from nfsstat.c
+    
+    nfsstat.c: In function 'print_callstats':
+    nfsstat.c:797: warning: comparison between signed and unsigned integer
+    expressions
+    nfsstat.c:801: warning: comparison between signed and unsigned integer
+    expressions
+    nfsstat.c:802: warning: comparison between signed and unsigned integer
+    expressions
+    nfsstat.c:805: warning: comparison between signed and unsigned integer
+    expressions
+    
+    nfsstat.c: In function 'print_callstats_list':
+    nfsstat.c:821: warning: comparison between signed and unsigned integer
+    expressions
+    nfsstat.c:828: warning: comparison between signed and unsigned integer
+    expressions
+    
+    nfsstat.c: In function 'unpause':
+    nfsstat.c:1111: warning: unused parameter 'sig'
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * utils/statd/statd.h: uncomment MODE_NOTIFY_ONLY
-       * utils/statd/statd.man: document -N
-       * utils/statd/statd.c: enabled -N, largely exists but needed to be
-       uncommented and completed
-       
-2002-09-02 Juan Gomez <juang@us.ibm.com>
-       NeilBrown <neilb@cse.unsw.edu.au>
+commit b594ee2b2a1b9c0c5823a7af279488f113f91be4
+Author: Steve Dickson <steved@redhat.com>
+Date:   Mon Jul 19 14:48:37 2010 -0400
 
-       statd to have " -P directory" arg to use that directory instead
-       of /var/lib/nfs.  This is useful for fail-over clusters.
-       
-       * utils/statd/statd.h: define SM_DIR etc as var, not const.
-       * utils/statd/statd.c: define "-P" option to set SM_*
-       appropriately.
-       * utils/statd/monitor.c: sprintf to cope with SM_DIR not being
-       a constant any more.
-       * utils/statd/notify.c: ditto.
-       * utils/statd/statd.man: document -P option.
-       
-2002-08-26  Chip Salzenberg  <chip@pobox.com>
+    Removed warnings from nfssvc.c
+    
+    nfssvc.c:184: warning: comparison between signed and unsigned integer expressions
+    nfssvc.c: In function 'nfssvc_setvers':
+    nfssvc.c:254: warning: comparison between signed and unsigned integer expressions
+    nfssvc.c: In function 'nfssvc_threads':
+    nfssvc.c:280: warning: comparison between signed and unsigned integer expressions
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * utils/nfsd/nfsd.man: Fix typo.
-       * debian/changelog: Version 1.0.1-1.
+commit 7b331fb9d24a71242a6c0a45a06c49174b552c64
+Author: Steve Dickson <steved@redhat.com>
+Date:   Mon Jul 19 14:43:26 2010 -0400
 
-2002-05-29 NeilBrown <neilb@cse.unsw.edu.au>
+    Removed warnings from cache.c
+    
+    cache.c:812: warning: missing initializer
+    cache.c:812: warning: (near initialization for 'cachelist[0].f')
+    cache.c:813: warning: missing initializer
+    cache.c:813: warning: (near initialization for 'cachelist[1].f')
+    cache.c:814: warning: missing initializer
+    cache.c:814: warning: (near initialization for 'cachelist[2].f')
+    cache.c:815: warning: missing initializer
+    cache.c:815: warning: (near initialization for 'cachelist[3].f')
+    cache.c:816: warning: missing initializer
+    cache.c:816: warning: (near initialization for 'cachelist[4].f')
+    cache.c: In function 'cache_export_ent':
+    cache.c:887: warning: comparison between signed and unsigned integer expressions
+    cache.c:907: warning: comparison between signed and unsigned integer expressions
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * let parseopts know if /etc/exports was being read or not, 
-       and have it only print "no sync or async" warning in that case.
-       
-2002-05-06 Tom McNeal <trmcneal@attbi.com>
-       NeilBrown <neilb@cse.unsw.edu.au>
+commit 9d5eaa2e939723c47649f0f112b43cc8ff414740
+Author: Steve Dickson <steved@redhat.com>
+Date:   Mon Jul 19 13:07:00 2010 -0400
 
-       * utils/nfsstat/nfsstat.c: Handle differing format for
-          /proc/net/rpc/nfsd between pre and post 2.4.0
-       
-2002-04-09  NeilBrown <neilb@cse.unsw.edu.au>
-       James Pearson <james-p@moving-picture.com>
+    Removed warnings from fsloc.c
+    
+    fsloc.c: In function 'replicas_lookup':
+    fsloc.c:149: warning: unused parameter 'key'
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * support/nfs/rmtab.c(fendrmtabent): sync changes to 
-       storage before returning, as this is critical state
+commit e10000740fc4c323dbc8d501d7c0caeae12c19b5
+Author: Steve Dickson <steved@redhat.com>
+Date:   Mon Jul 19 12:39:52 2010 -0400
 
-2002-04-08  Sean O'Connell <sean@ee.duke.edu>
-           H.J. Lu <hjl@lucon.org>
+    Removed warnings from conffile.c
+    
+    conffile.c: In function 'conf_parse_line':
+    conffile.c:301: warning: comparison between signed and unsigned integer expressions
+    
+    conffile.c: In function 'conf_load_defaults':
+    conffile.c:356: warning: unused parameter 'tr'
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * etc/redhat/nfs: New.
+commit 8810c9dd5b66a097a235e6eabd399739a44df63e
+Author: Steve Dickson <steved@redhat.com>
+Date:   Mon Jul 19 12:34:14 2010 -0400
 
-2002-04-08  H.J. Lu <hjl@lucon.org>
+    Remove warnings from nfs_mntent.c
+    
+    nfs_mntent.c: In function 'mangle':
+    nfs_mntent.c:36: warning: comparison between signed and unsigned integer expressions
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * etc/redhat/nfs.init: Updated.
+commit 1ca569633e14c844e32d8e5e3a1c54be01a8b633
+Author: Steve Dickson <steved@redhat.com>
+Date:   Mon Jul 19 12:31:48 2010 -0400
 
-       * nfs-utils.spec.in: Updated.
-       * nfs-utils.spec: Regenerated.
+    emove warnings from cacheio.c
+    
+    cacheio.c: In function 'cache_flush':
+    cacheio.c:352: warning: comparison between signed and unsigned integer expressions
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * utils/mountd/mountd.c (longopts): Fix a typo.
+commit 0cdfd35cecc17eb1927f15d33205e43ec66675f2
+Author: Steve Dickson <steved@redhat.com>
+Date:   Mon Jul 19 12:28:09 2010 -0400
 
-       * utils/mountd/mountd.man: Updated.
+    Remove warnings from svc_socket.c
+    
+    svc_socket.c: In function 'svcudp_socket':
+    svc_socket.c:160: warning: unused parameter 'reuse'
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-2002-04-07  H.J. Lu <hjl@lucon.org>
+commit 9c99b4633b185452614eb6c5630a30b30626a838
+Author: Steve Dickson <steved@redhat.com>
+Date:   Mon Jul 19 12:17:24 2010 -0400
 
-       * etc/redhat/nfslock.init (restart): Just do stop and start.
+    Removed warnings from rpcdispatch.c
+    
+    rpcdispatch.c: In function 'rpc_dispatch':
+    rpcdispatch.c:30: warning: comparison between signed and unsigned
+         integer expressions
+    rpcdispatch.c:35: warning: comparison between signed and unsigned
+         integer expressions
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * etc/redhat/nfs.init: Fix a typo.
+commit b6e0ddd7bb3843bb8bb5ff56816b31bcf17adacd
+Author: Steve Dickson <steved@redhat.com>
+Date:   Mon Jul 19 12:05:51 2010 -0400
 
-2002-04-07  H.J. Lu <hjl@lucon.org>
+    Enable extra compile warnings (-Wextra) by default.
+    
+    Added -Wextra to the CFLAGS which enables more checking
+    during compilation, which in turn, will hopefully flag
+    potential problems before they occur.
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * configure.in (VERSION): Set to "1.0.1".
-       * configure: Regenerated.
-       * nfs-utils.spec: Likewise.
+commit 12af21aca517dfbaec465447d8336bcc4769f71d
+Author: Doug Nazar <nazard.michi@gmail.com>
+Date:   Mon Jul 19 11:08:46 2010 -0400
 
-       * README: Updated for 1.0.1.
-
-2002-04-07  Sean O'Connell <sean@ee.duke.edu>
-           H.J. Lu <hjl@lucon.org>
-
-       * etc/redhat/nfs.init: Read /etc/sysconfig/nfsd for NFS tuning.
-
-2002-02-28   Steven Whitehouse <steve@gw.chygwyn.com>
-             NeilBrown <neilb@cse.unsw.edu.au>
-
-       Add support for fsid=nn export option so that device
-       numbers don't go in filehandles.
-       * support/export/nfsctl.c(expsetup): if exporting and NFSEXP_FSID
-       is set, pass the fsid in-place of the device number
-       * support/nfs/exports.c: parse and print fsid= option.
-       Also check if efname has been set, and use "command line"
-       instead in error messages.
-       Also, use strtol instead of atoi for anon[ug]id= so that
-       bad numbers cause errors.
-       
-2002-01-17   Adrian Drzewiecki <drze@MissionCriticalLinux.com>
-            NeilBrown <neilb@cse.unsw.edu.au>
-
-       * support/nfs/exports.c: remove NFSEXP_ASYNC as a default
-       flag so that "sync" becomes the default.
-       Check that either "sync" or "async" is given as an option
-       and warn if neither are present
-       * utils/exportfs/exports.man: change documentation for "sync"
-       to be documentation for "async".
-       * utils/exportfs/exportfs.man: note that "sync" is the default
-       rather than "async"
-       
-       
-2002-01-02  Chip Salzenberg  <chip@pobox.com>
-
-       * support/export/nfsctl.c (expsetup): Don't export entries that
-       specify id mappings not supported by the kernel.  No extant kernel
-       supports any significant mapping, only 'identity' (i.e. none).
-       When other mappings are supported, this code will need changing.
-       * debian/changelog: Version 1.0-2.
+    gssd: picking wrong creds
+    
+    When not using machine credentials for root, if the machine
+    credential cache file is newer than the root credential file
+    the wrong file will get picked. Ignore the machine file in
+    this case.
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-2001-12-26  Chip Salzenberg  <chip@pobox.com>
+commit e2aa2c8c4cc21eb312a301855c2e211dedf93146
+Author: Doug Nazar <nazard.michi@gmail.com>
+Date:   Mon Jul 19 10:58:47 2010 -0400
 
-       * nfs-utils.spec (Version): Set to "1.0".
-       * configure.in (VERSION): Likewise.
-       * configure: Regenerated.
-       * README: Rewritten.
-       * debian/changelog: Version 1.0-1.
+    mountd: Fix memcmp result comparison error for uuid match.
+    
+    Fixed Small typo in the new fs uuid comparison code
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * utils/exportfs/exports.man: Emphasize the need for options to
-       immediately follow client names.  Explain that wildcards don't
-       usually work on addresses, but may work when reverse DNS fails.
-       Comment out a leftover TP that was TPing our indentation.
-       * utils/mountd/mountd.man, utils/rquotad/rquotad.man,
-       utils/statd/statd.man: Remove refs to non-existent "hosts_allow(5)".
-       * debian/changelog: Version 0.3.3-6.
+commit eafc5a8873b09482c71313f425080cce2031010a
+Author: Doug Nazar <nazard.michi@gmail.com>
+Date:   Mon Jul 19 10:48:34 2010 -0400
 
-2001-12-20  NeilBrown <neilb@cse.unsw.edu.au>
+    gssd: Fix endtime issue
+    
+    Commit 4c5ff6d4 removed the setting of endtime for a few contexts by
+    accident.
+    
+    Now to figure out why I get stale handles on submounts.
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * support/export/client.c(client_lookup): If a host has multiple
-       IP addresses, then we must always use the result of a
-       gethostbyname, not that of gethostbyaddr for exporting
-       
-2001-12-20  NeilBrown <neilb@cse.unsw.edu.au>
+commit 0bd7e91cea26bcfc5581290e4cdd87870da29b9e
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Mon Jul 19 10:09:12 2010 -0400
 
-       * support/export/client.c (client_lookup): use strcasecmp when
-       comparing host names
-       * support/nfs/export.c (getexportent): add fromkernel arg and use
-       different defaults as kernels prior to 2.4.11 assume different
-       defaults in /proc/fs/nfs/exports
-       * support/include/nfslib.h, support/export/export.c,
-       support/export/xtab.c:  support extra "fromkernel" arg for
-       getexportent. 
-       
-2001-12-13  Chip Salzenberg  <chip@pobox.com>
-
-       * debian/changelog: Version 0.3.3-5.
-
-2001-11-26  TAKAI Kousuke <takai@vlsi.kuee.kyoto-u.ac.jp>
-
-       * support/nfs/xio.c (xskip): Call `xungetc' instead of
-        `ungetc' to keep x_line more properly.
-
-2001-11-26  Chip Salzenberg  <chip@pobox.com>
-
-       * utils/showmount/showmount.c (main): Don't assume that strings
-       starting with digits are IP addresses.
-       * utils/nfsd/nfsd.c (main): Close all fds and reopen 0,1,2 on
-       /dev/null before nfssvc().  Use syslog to report nfssvc errors.
-       * support/misc/tcpwrapper.c, utils/mountd/mountd.man,
-       utils/rquotad/rquotad.man, utils/statd/statd.man: Fix comments and
-       man pages: We check host names *and* addresses with tcpwrappers.
-       * debian/changelog: Version 0.3.3-4.
-
-2001-11-21  Chip Salzenberg  <chip@pobox.com>
-
-       * support/nfs/clients.c (cfname): Added: current clients file name.
-       (setnfsclntent): Set it.
-       ({get,end}nfsclntent, syntaxerr): Use it.
-       * support/nfs/exports.c (efname): Added: current exports file name.
-       (setnfsexportent): Set it.
-       (endnfsexportent, parseopts, getexport, syntaxerr): Use it.
-       (parseopts): Accept old-style "crossmnt" option, for old xtabs.
-       * debian/changelog: Version 0.3.3-3.
-
-2001-10-11  Chip Salzenberg  <chip@pobox.com>
-
-       * utils/mountd/mountd.c (main): Close fds > 2 _before_ RPC init.
-       * debian/changelog: Version 0.3.3-2.
-
-2001-10-08  Chip Salzenberg  <chip@pobox.com>
-
-       * utils/mountd/mountd.c (main): When daemonizing, close all fds > 2.
-       * utils/Makefile.in: Remove old Makefile in target 'distclean'.
-       * utils/mountd/mountd.man: Update paths to /var/lib.
-       * debian/*: Version 0.3.3-1, with Debian-specific fixes.
-
-2001-10-06  Preston Brown <pbrown@redhat.com>
-
-       * utils/nfsstat/nfsstat.man: Updated.
-
-2001-09-24  H.J. Lu <hjl@lucon.org>
-
-       * configure.in (VERSION): Set to "0.3.3".
-       * configure: Regenerated.
-       * nfs-utils.spec: Likewise.
-
-       * README: Updated for 0.3.3.
-
-2001-09-20 NeilBrown <neilb@cse.unsw.edu.au>
-
-       Arrange that "exportfs -au" never does DNS lookup:
-       
-       * support/export/client.c (client_lookup) : add "canonical"
-       flag which says that the hostname is known to be canonical, so
-       don't do a lookup
-
-       * support/export/export.c (export_create) : add "canonical"
-       flag to be passed down to client_lookup
-       * support/export/export.c (export_lookup) : Likewise
-
-       * support/export/xtab.c (xtab_read) : pass appropriate
-       "canonical" flag to export_lookup and export_create:
-       set if reading list of filesystems currently exports
-       (is_export != 1). 
-
-       * support/export/export.c (export_read) : pass 0 as 
-       "canonical" flag to export_lookup and export_create
-       * support/export/rmtab.s (rmtab_read) : Likewise
-
-       * support/include/exportfs.h : redeclare various routines
-       to have "canonical" flag
-
-       * utils/exportfs/exportfs.c (main) : redo logic for 
-       "-au" to read in what is currently exported, but never even 
-       look at what "should" be exported.
-
-       * utils/exportfs/exportfs.c (unexportall) : remove this
-       routine. Functionality is completely included in
-       exports_update
-
-       * utils/exportfs/exportfs.c (exportfs) : set "canonical"
-       flag to zero in calls to export_lookup and export_create.
-
-       
-2001-09-20 NeilBrown <neilb@cse.unsw.edu.au>
-           Anne Milicia <milicia@missioncriticallinux.com>
-
-       * support/export/client.c (client_lookup) call gethostbyadd
-       to make sure that we have a canonical hostname, even for
-       dotted-quads
-       * utils/exportfs/exportfs.c (exportfs) Likewise
-       
-2001-09-12 NeilBrown <neilb@cse.unsw.edu.au>
-
-       * support/nfs/exports.c (putexportent): \octal quote any spaces
-       etc in a path name
-       * support/nfs/xio.c (xgettok): recognise double-quote and
-       \octal quoting in path names
-       * utils/exportfs/exports.man: document quoting conventions
-       for path names
-       
-2001-09-12 NeilBrown <neilb@cse.unsw.edu.au>
-
-       * utils/mountd/auth.c (auth_authenticate_internal): Reverse
-         change from 2000-08-02:  It causes problems if someone exports
-         to both a hostname and IP addresses.  nfs-utils must be
-         consistant about the canonical name that it chooses.
-
-2001-08-17  Ragnar Kjørstad <nfs@ragnark.vestdata.no>
-           H.J. Lu <hjl@lucon.org>
-
-       * etc/redhat/nfslock.init (STATDARG): New. Pass it to rpc.statd.
-
-       * utils/statd/statd.c (longopts): Add "name".
-       (usage): Add "-n/--name".
-       (main): Set MY_NAME with "-n/--name".
-
-       * utils/statd/state.c (change_state): Set MY_NAME only if it
-       is NULL.
-       
-       * utils/statd/statd.man: Updated for "-n/--name".
-
-2001-07-26  H.J. Lu <hjl@lucon.org>
-
-       * nfs-utils.spec (Release): Set to 8.
-
-2001-07-25  H.J. Lu <hjl@lucon.org>
-
-       * etc/redhat/nfs.init: Check if rpc.rquotad exists before doing
-       anything about it.
-
-2001-06-27  H.J. Lu <hjl@lucon.org>
-
-       * etc/redhat/nfs.init: Run rpc.rquotad only if it exists.
-
-2001-06-27  H.J. Lu <hjl@lucon.org>
-
-       * utils/rquotad/rquota_server.c: Don't call statfs () for
-       the block size. Use BLOCK_SIZE instead.
-
-2001-06-27  H.J. Lu <hjl@lucon.org>
-
-       * config.mk.in (CC_FOR_BUILD): Renamed from BUILD_CC.
-       (CFLAGS_FOR_BUILD): New. Don't use @CFLAGS@.
-
-       * configure.in (enable_nfsv3): Set to yes by default.
-       (--enable-rquotad): Added
-       (AC_PROG_CXX): Removed.
-       (AC_OUTPUT): Add utils/Makefile.
-       (CC_FOR_BUILD): Renamed from BUILD_CC.
-       * configure: Regenerated.
-
-       * utils/Makefile: Removed.
-
-       * utils/Makefile.in: New.
-
-       * nfs-utils.spec.in (rquotad): New. Set to 0 to disable
-       rquotad.
-       (CC_FOR_BUILD): Renamed from BUILD_CC.
-       * nfs-utils.spec: Regenerated.
-
-2001-06-15  Chip Salzenberg  <chip@debian.org>
-
-       * debian/changelog: Version 0.3.2-2.
-       * debian/*.init: Minor fixes.
-
-2001-06-07  Lon H. Hohberger <hohberger@missioncriticallinux.com>
-
-       * etc/nodist/nfs-server: Fixed a bug where the script would
-       disable mounts from NFSv3 clients if NFSv3 is present.
-
-2001-06-05  H.J. Lu <hjl@lucon.org>
-
-       * utils/mountd/mountd.c (longopts): Add "descriptors/o".
-       (main): Support --descriptors/-o to set the limit of the number
-       of open file descriptors.
-       (usage): Updated.
-
-       * utils/mountd/mountd.man: Updated for --descriptors/-o.
-
-2001-06-04  H.J. Lu <hjl@lucon.org>
-
-       * nfs-utils.spec (Release): Set to 6.
-
-2001-05-28  H.J. Lu <hjl@lucon.org>
-
-       * utils/lockd/lockd.c (main): chdir to NFS_STATEDIR.
-       * utils/mountd/mountd.c (main): Likewise.
-       * utils/nfsd/nfsd.c (main): Likewise.
-       * utils/rquotad/rquota_svc.c (main): Likewise.
-
-2001-05-06  Anne Milicia <milicia@missioncriticallinux.com>
-
-       * support/export/client.c (client_check): Check IP address
-       againet netgroup.
-
-2001-05-06  Neil Brown <neilb@cse.unsw.edu.au>
-
-       * support/export/client.c (client_gettype): Treat `*' as
-       MCL_ANONYMOUS.
-
-2001-04-22  H.J. Lu <hjl@lucon.org>
-
-       * nfs-utils.spec.in: Fix a typo.
-       * nfs-utils.spec: Regenerated.
-
-2001-04-21  H.J. Lu <hjl@lucon.org>
-
-       * nfs-utils.spec.in: Fix cross build.
-       * nfs-utils.spec: Regenerated.
-       (Release): Set to 5.
-
-2001-04-18  H.J. Lu <hjl@lucon.org>
-
-       * nfs-utils.spec.in: Support cross build.
-       * nfs-utils.spec: Regenerated.
-       (Release): Set to 4.
-
-       * config.sub: New.
-       * config.guess: New.
-
-       * config.mk.in (BUILD_CC): New.
-       (CC): Set to $(BUILD_CC) if BUILD is defined.
-       (AR): Set to @AR@.
-       (LD): Set to @LD@.
-       (RANLIB): Set to @RANLIB@.
-
-       * configure.in: Check BUILD_CC, RANLIB, AR and LD.
-       * configure: Regenerated.
-
-       * tools/rpcgen/Makefile (BUILD): Set to true.
-
-2001-04-01  Chip Salzenberg  <chip@valinux.com>
-
-       * tools/rpcgen/rpc_svcout.c (write_timeout_func): Remove
-       redundant, and sometimes broken, declaration of svc_fdset;
-       it may be a macro.
-       * support/nfs/rpcmisc.c (closedown): Likewise.
-       
-2001-03-21  H.J. Lu <hjl@lucon.org>
-
-       * nfs-utils.spec: Regenerated.
-       (Release): Set to 3.
-
-2001-03-21  Ion Badulescu  <ionut@cs.columbia.edu>
-
-       * utils/statd/statd.c (main): make sure file descriptors 0-2
-       are open to /dev/null.
-
-2001-03-21  H.J. Lu <hjl@lucon.org>
-
-       * support/nfs/rpcmisc.c: Restore the change made on 2001-03-10.
-       * support/nfs/rpcmisc.c: Likewise.
-       * utils/rquotad/rquota_svc.c: Likewise.
-       * utils/rquotad/rquotad.man: Likewise.
-       * utils/statd/Makefile: Likewise.
-       * utils/statd/rmtcall.c: Likewise.
-       * utils/statd/simulate.c: Likewise.
-       * utils/statd/statd.c: Likewise.
-       * utils/statd/statd.man: Likewise.
-
-2001-03-11  H.J. Lu <hjl@lucon.org>
-
-       * configure.in (RELEASE): New. Default to 1, set by
-       --with-release=XXX. Substitute nfs-utils.spec.
-       * nfs-utils.spec.in (Release): Set to @RELEASE@.
-       * configure: Regenerated.
-       * nfs-utils.spec: Likewise.
-
-2001-03-11  H.J. Lu <hjl@lucon.org>
-
-       * utils/rquotad/rquotad.man: Fix a typo.
-
-2001-03-11  H.J. Lu <hjl@lucon.org>
-
-       * support/include/rpcmisc.h: Undo the change made on 2001-03-10.
-       * support/nfs/rpcmisc.c: Likewise.
-       * utils/rquotad/rquota_svc.c: Likewise.
-       * utils/rquotad/rquotad.man: Likewise.
-       * utils/statd/Makefile: Likewise.
-       * utils/statd/rmtcall.c: Likewise.
-       * utils/statd/simulate.c: Likewise.
-       * utils/statd/statd.c: Likewise.
-       * utils/statd/statd.man: Likewise.
-
-2001-03-10  H.J. Lu <hjl@lucon.org>
-
-       * configure.in (VERSION): Set to "0.3.2".
-       * configure: Regenerated.
-       * nfs-utils.spec: Likewise.
-
-       * README: Updated for 0.3.2.
-
-2001-03-10  Tavis Barr <tavis@boole.isetr.columbia.edu>
-
-       * utils/rquotad/rquotad.man: Updated for -p.
-       * utils/statd/statd.man: Likewise.
-
-2001-03-10  Ion Badulescu  <ionut@cs.columbia.edu>
-
-       * support/nfs/rpcmisc.c: export makesock()
-
-       * support/include/rpcmisc.h (makesock): Declared.
-
-       * utils/rquotad/rquota_svc.c: added longopts, added support for
-       specifying the port to bind to on the command line.
-
-       * utils/statd/statd.c: ditto, also specify port used for
-       outgoing connections.
-       (do_regist): Removed.
-
-       * utils/statd/rmtcall.c (statd_get_socket): Renamed from
-       get_socket. Make it extern.
-
-       * utils/statd/simulate.c (daemon_simulator): Call rpc_init
-       instead of do_regist.
-
-       * utils/statd/Makefile (LIBS): link with our own libnfs
-
-2001-03-09  H.J. Lu <hjl@lucon.org>
-
-       * etc/redhat/nfslock.init: Changed chkconfig line to 60 86.
-       * etc/nodist/nfs-client: Likewise.
-
-2001-02-26  Chip Salzenberg  <chip@valinux.com>
-
-       * debian/changelog: Version 0.3.1-1.
-       * Mention upstream source and license in copyright file.
-       * Add build-Depends for debhelper and libwrap0-dev.
-
-2001-02-20  Lon Hohberger <hohberger@missioncriticallinux.com>
-
-       * etc/nodist/nfs-server: Changed chkconfig line to 60 20
-       * etc/nodist/nfs-client: Likewise.
-
-2001-02-18  Lon Hohberger <hohberger@missioncriticallinux.com>
-
-       * utils/statd/statd.man: Changed /usr/sbin/rpc.statd to
-       /sbin/rpc.statd.
-
-2001-02-17  Patrick J. LoPresti <patl@curl.com>
-
-       * utils/statd/log.c (log_init): Use LOG_DAEMON instead of
-       LOG_LOCAL5.
-
-2001-02-14  H.J. Lu <hjl@lucon.org>
-
-       * utils/statd/rmtcall.c: Include <time.h>.
-       * utils/statd/svc_run.c: Likewise.
-
-2001-02-14  H.J. Lu <hjl@lucon.org>
-
-       * configure.in (VERSION): Set to "0.3.1".
-       * configure: Regenerated.
-       * nfs-utils.spec: Likewise.
-
-       * README: Updated for 0.3.1.
-
-2001-02-14  H.J. Lu <hjl@lucon.org>
-
-       * support/nfs/rpcmisc.c: Include <time.h>.
-
-2001-02-14  Chip Salzenberg  <chip@valinux.com>
-
-       * debian/control: Change priority of nhfsstone package to 'extra'.
-
-2001-02-12  Chip Salzenberg  <chip@valinux.com>
-
-       * debian/changelog: Version 0.3-2.
-
-2001-02-02  H.J. Lu <hjl@lucon.org>
-
-       * support/include/rpcmisc.h (rpc_init): Remove bufsize.
-       
-       * support/nfs/rpcmisc.c (makesock): Remove socksz and comment
-       out SO_SNDBUF/SO_RCVBUF.
-       (rpc_init): Remove bufsize and remove socksz in calls to
-       makesock ().
-
-       * utils/mountd/mountd.c (main): Remove bufsize in calls to
-       rpc_init ().
-
-2001-01-28  Chip Salzenberg  <chip@valinux.com>
-
-       * debian/changelog: Version 0.3-1.
-
-2001-01-25  H.J. Lu <hjl@lucon.org>
-
-       * configure.in (VERSION): Set to "0.3".
-       * configure: Regenerated.
-       * nfs-utils.spec: Likewise.
-
-       * README: Updated for 0.3.
-
-2001-01-25  H.J. Lu <hjl@lucon.org>
-
-       * utils/lockd/lockd.c (main): Ignore errno == EINVAL.
-
-2001-01-20  Chip Salzenberg  <chip@valinux.com>
-
-       * support/include/xio.h (xgetc): Declare to return int.
-       * support/nfs/xio.c (xgetc): Return int.
-       (xgettok, xskip, xskipcomment): Use int for value of xgetc.
-       * utils/statd/statd.c (main): Use int for value of getopt.
-       * debian/changelog: Version 0.2.1-5.
-       
-2000-12-10  Chip Salzenberg  <chip@valinux.com>
-
-       * utils/statd/monitor.c (sm_mon_1_svc): Fix buggy check for
-       program and procedure numbers of kernel lockd's callback.  Also,
-       besides the old (and broken) procedure #24, allow #16 per Trond.
-
-2000-12-03  Chip Salzenberg  <chip@valinux.com>
-
-       * support/nfs/xio.c (xfopen): Initialize x_line to one, not zero.
-       * debian/control: Let nhfsstone replace files in nfs-kernel-server.
-       * debian/changelog: Version 0.2.1-4.
-
-2000-11-27  Tobias Ringstrom <tori@tellus.mine.nu>
-
-       * utils/mountd/auth.c (auth_authenticate): Log the bad path
-       warning.
-
-2000-11-24  Neil Brown <neilb@cse.unsw.edu.au>
-
-        * support/nfs/exports.c (getexportent): Check for host name
-       without option, or options without hostname, and print a warning,
-       as this is most likely a typo.
-
-2000-11-19  Chip Salzenberg  <chip@valinux.com>
-
-       * debian/control: Add dependency on portmap.
-       * debian/changelog: Version 0.2.1-3.
-
-2000-11-10  H.J. Lu <hjl@lucon.org>
-
-       * nfs-utils.spec.in: Don't use libtool.
-       Add ChangeLog and COPYING to doc.
-       * nfs-utils.spec: Rebuild.
-
-2000-11-09  H.J. Lu <hjl@lucon.org>
-
-       * etc/redhat/nfs.init (start): Back out the last change.
-
-2000-11-09  H.J. Lu <hjl@lucon.org>
-
-       * etc/redhat/nfs.init (start): Pass --no-tcp to mountd if
-       TCP is not supported by kernel.
-
-       * support/nfs/rpcmisc.c (rpc_init): Don't set _rpcfdtype to 0.
-
-       * utils/mountd/mountd.c (longopts): Add "-n/--no-tcp".
-       (main): Set to _rpcfdtype to SOCK_DGRAM for "-n/--no-tcp".
-
-       * utils/mountd/mountd.man: Updated for "-n/--no-tcp".
-
-2000-10-24  Lon Hohberger <hohberger@missioncriticallinux.com>
-
-       * utils/statd/callback.c: Fix bug preventing callbacks to local lockd.
-       * utils/statd/rmtcall.c: Add some IP address paranoia when doing
-       callbacks to local lockd.
-
-2000-10-18  Scott McDermott <mcdermot@questra.com>
-
-       * utils/exportfs/exports.man: Updated for CIDR netmask.
-
-2000-10-17  Scott McDermott <mcdermot@questra.com>
-
-       * support/export/client.c (client_init): Support CIDR netmask
-       in /etc/exports.
-
-2000-10-11  H.J. Lu <hjl@lucon.org>
-
-       * aclocal.m4 (AC_TCP_WRAPPER): Fix a typo.
-       * configure: Rebuilt.
-
-2000-10-06  Lon Hohberger <hohberger@missioncriticallinux.com>
-
-       * utils/statd/statd.man: Change "/var/lib/nfs/sm/state" to
-       "/var/lib/nfs/state".
-
-2000-10-05  Lon Hohberger <hohberger@missioncriticallinux.com>
-
-       * utils/statd/statd.h (run_mode): New global bitmask of runtime
-       behaviors: fg/bg, logging, etc.
-       * utils/statd/statd.c: New command line options: -V -h -? -d .
-       * utils/statd/statd.man: Update for changes to statd.
-
-       * utils/statd/log.h (log_init): Remove parameter of function; use
-       global variable "name_p" instead.
-       * utils/statd/log.c: Add support for logging to stderr.
-
-       * utils/statd/notlist.c: Partially rewrite notify list handling
-       functions.  Eliminate run-off-end-of-list bug when calling
-       nlist_insert_timer.  Add lots of comments.
-       
-2000-09-27  H.J. Lu <hjl@lucon.org>
-
-       * README: Updated for RedHat 7.0.
-
-2000-09-27  H.J. Lu <hjl@lucon.org>
-
-       * nfs-utils.spec: Rebuild.
-
-2000-09-27  H.J. Lu <hjl@lucon.org>
-
-       * README: Updated for 0.2.1.
-
-2000-09-27  H.J. Lu <hjl@lucon.org>
-
-       * nfs-utils.spec.in: Updated to use rpm macros and support
-       RedHat 7.0.
-
-2000-09-25  H.J. Lu <hjl@lucon.org>
-
-       * configure.in (VERSION): Set to "0.2.1".
-       * configure: Regenerated.
-       * nfs-utils.spec: Updated.
-
-2000-09-25  H.J. Lu <hjl@lucon.org>
-
-       * utils/mountd/auth.c (auth_authenticate_internal): Make sure a
-       non-NULL hostent is always returned.
-
-2000-09-11  Ion Badulescu  <ionut@cs.columbia.edu>
-
-       * etc/redhat/nfslock.init: don't kill lockd processes that do not
-       have an executable (i.e. kernel threads)
-
-2000-09-01  H.J. Lu <hjl@lucon.org>
-
-       * README: Updated for 0.2.
-
-2000-09-01  Jay Weber <jweber@valinux.com>
-
-       * etc/redhat/nfs.init: Added ability for rpc.mountd to default to
-       supporting version 3 of nfs if available, else it will fall back to
-       version 2 support only.
-
-2000-08-30  H.J. Lu <hjl@lucon.org>
-
-       * configure.in (VERSION): Set to "0.2".
-       * configure: Regenerated.
-       * nfs-utils.spec: Updated.
-
-2000-08-25  H.J. Lu <hjl@lucon.org>
-
-       * support/misc/tcpwrapper.c (logit): Modify the log output.
-
-2000-08-25  Ion Badulescu  <ionut@cs.columbia.edu>
-
-       * utils/rquotad/rquotad.man, utils/statd/statd.man,
-       utils/mountd/mountd.man: updated
-        
-       * utils/mountd/Makefile (LIBS): added -lmisc $(LIBWRAP) $(LIBNSL)
-       * utils/rquotad/Makefile: fix comment
-
-       * support/misc/tcpwrapper.c (logit): added comment about waiting
-       for the children after fork()
-       
-       * utils/mountd/mountd.c (main): ignore SIGCHLD to prevent leaving
-       zombies behind (from logit()'s fork)
-       * utils/rquotad/rquota_svc.c (main): ditto
-       * utils/statd/statd.c (main): ditto
-
-       * utils/rquotad/rquota_svc.c (rquotaprog_1): pass RQUOTAPROG
-       to check_default instead of 0, for prognum
-
-       * utils/statd/statd.c (sm_prog_1_wrapper): pass SM_PROG
-       to check_default instead of 0, for prognum
-
-       * utils/mountd/mount_dispatch.c: Include "tcpwrapper.h" if
-       HAVE_TCP_WRAPPER is defined.
-       (mount_dispatch): Call check_default () if HAVE_TCP_WRAPPER is
-       defined. Reject an RPC call if check_default () fails.
-
-2000-08-25  H.J. Lu <hjl@lucon.org>
-
-       * support/include/tcpwrapper.h: New for the tcp wrapper
-       support.
-       * support/misc/Makefile: Likewise.
-       * support/misc/from_local.c: Likewise.
-       * support/misc/tcpwrapper.c: Likewise.
-
-       * aclocal.m4 (AC_TCP_WRAPPER): New.
-       * configure.in: Use it. Substitute LIBWRAP.
-       * configure: Rebuilt.
-
-       * config.mk.in (LIBNSL): New.
-       (LIBWRAP): Likewise.
-
-       * support/Makefile (SUBDIRS): Add misc.
-
-       * support/lib/Makefile (LIBS): Add libmisc.a.
-
-       * utils/rquotad/Makefile (LIBS): Add
-       
-               -lmisc $(LIBWRAP) $(LIBNSL)
-
-       * utils/statd/Makefile (LIBS): Likewise.
-
-       * utils/rquotad/rquota_svc.c: Include "tcpwrapper.h" if
-       HAVE_TCP_WRAPPER is defined.
-       (rquotaprog_1): Call check_default () if HAVE_TCP_WRAPPER is
-       defined. Reject an RPC call if check_default () fails.
-
-       * utils/statd/statd.c: Include "tcpwrapper.h" if
-       HAVE_TCP_WRAPPER is defined.
-       (sm_prog_1_wrapper): New. A wrapper for sm_prog_1. Call
-       check_default () before calling sm_prog_1 (). Define it as
-       sm_prog_1_wrapper if HAVE_TCP_WRAPPER is defined.
-
-2000-08-25  Chip Salzenberg  <chip@valinux.com>
-
-       * debian/*: Complete Debian build support.
-       * etc/debian/*: Remove.
-
-2000-08-24  Neil Brown <neilb@cse.unsw.edu.au>
-
-       * support/export/client.c(client_check): removed the "dot+1" as a
-         ypdomain argument to innetgr as this is entirely bogus.
-         It should always be NULL.
-       
-2000-08-23  Neil Brown <neilb@cse.unsw.edu.au>
-
-       * support/export/xtab.c(xtab_read): introduce new mode for
-          reading xtab. i.e. a list of exports that might be known to the
-          kernel, or might not.  These are flagged as m_exported == -1
-       * support/export/xtab.c(xtab_mount_read):  call xtab_read with new
-          value "2" for xtab, meaning don't trust this too much.
-       * support/include/exportfs.h(struct mexport): changed m_exported
-          from one bit to an int so that it can hold new value
-       * utils/exportfs/exportfs.c(exportfs_ipdate): add an export to the
-          kernel if it is uncertain whether the kernel knows (m_exported == -1)
-       * utils/mountd/mountd.c(get_rootfh): similarly export to kernel if
-          status is uncertain
-
-       * support/nfs/xio.c(xflock): added O_CREAT when getting
-          a write lock so that missing files aren't fatal.
-
-       * etc/debian/nfs-common: new file from "potato"
-       * etc/debian/nfs-kernel-server: new file from "potato" plus fixes.
-        
-2000-08-09  H.J. Lu <hjl@lucon.org>
-
-       * etc/redhat/nfs.init: Run /usr/sbin/exportfs first during
-       startup to ensure all existing clients work fine.
-
-       * support/export/xtab.c (xtab_mount_read): Pass 1 instead of 0
-       to xtab_read () for reading _PATH_XTAB.
-
-2000-08-02  H.J. Lu <hjl@lucon.org>
-
-       * utils/mountd/auth.c (auth_authenticate_internal): Try to
-       avoid the reverse name lookup.
-
-2000-07-04  H.J. Lu <hjl@lucon.org>
-
-       * utils/statd/log.c: Include <stdlib.h> for exit ().
-
-       * utils/statd/misc.c (xunlink): Add `{' and `}' to quiet the
-       gcc warning.
-
-2000-07-04  H.J. Lu <hjl@lucon.org>
-
-       * configure.in (VERSION): Set to "0.1.9.1".
-       * configure: Regenerated.
-       * nfs-utils.spec: Updated.
-
-       * README: Updated.
-
-2000-07-04  Neil Brown  <neilb@cse.unsw.edu.au>
-
-       * support/export/hostname.c (hostent_dup): Handle the NULL
-       h_aliases field.
-
-2000-07-03  H.J. Lu <hjl@lucon.org>
-
-       * README: Update the util-linux requirement.
-
-2000-07-03  H.J. Lu <hjl@lucon.org>
-
-       * configure.in (VERSION): Set to "0.1.9".
-       * configure: Regenerated.
-       * nfs-utils.spec: Updated.
-
-       * README: Updated.
-
-2000-07-03  H.J. Lu <hjl@lucon.org>
-
-       * etc/redhat/nfs.init: Run /usr/sbin/exportfs last during
-       stop to ensure all clients can still access the server
-       before it is shutdown.
-
-2000-06-30  Jeff Uphoff <juphoff@transmeta.com>
-
-       * tools/rpcgen/rpc_svcout.c (write_msg_out): Generate syslog()
-       calls with format string.
-       
-2000-06-28  Chip Salzenberg  <chip@valinux.com>
-
-       * utils/statd/log.c (log): Call syslog with format string.
-
-2000-06-27  H.J. Lu <hjl@lucon.org>
-
-       * utils/statd/statd.c (main): Use sysconf (_SC_OPEN_MAX)
-       instead of OPEN_MAX.
-
-2000-06-27  H.J. Lu <hjl@lucon.org>
-
-       * README: Updated.
-
-2000-06-27  H.J. Lu <hjl@lucon.org>
-
-       * etc/redhat/nfs.init: Run /usr/sbin/exportfs last during
-       startup to ensure all existing clients are exported.
-
-       * configure.in (VERSION): Set to "0.1.8.2".
-       * configure: Regenerated.
-       * nfs-utils.spec: Updated.
-
-2000-06-06  H.J. Lu <hjl@lucon.org>
-
-       * configure.in (VERSION): Set to "0.1.8.1".
-       * configure: Regenerated.
-       * nfs-utils.spec: Updated.
-
-2000-06-06  H.J. Lu <hjl@lucon.org>
-
-       * utils/mountd/mountd.c (mount_dump_1_svc): Cast svc_getcaller
-       to "struct sockaddr_in *" for glibc 2.2.
-       (mount_umnt_1_svc): Likewise.
-       (mount_umntall_1_svc): Likewise.
-       (mount_export_1_svc): Likewise.
-       (mount_exportall_1_svc): Likewise.
-       (mount_pathconf_2_svc): Likewise.
-       (get_rootfh): Likewise.
-
-2000-06-04  H.J. Lu <hjl@lucon.org>
-
-       * etc/redhat/nfs.init: Fix a typo in comment.
-
-2000-05-31  H.J. Lu <hjl@lucon.org>
-
-       * configure.in (VERSION): Set to "0.1.8".
-       * configure: Regenerated.
-       * nfs-utils.spec: Updated.
-
-       * README: Updated.
-
-2000-05-31  H.J. Lu <hjl@lucon.org>
-
-       * configure.in (VERSION): Set to "0.1.7.5".
-       * configure: Regenerated.
-       * nfs-utils.spec: Updated.
-
-       * support/include/nfslib.h (exportent): Add a new field,
-       r_count, to count the number of mounts from a client.
-       (getrmtabent): Take a new argument for position in file.
-       (putrmtabent): Likewise.
-       (fgetrmtabent): Likewise.
-       (fputrmtabent): Likewise.
-       * support/nfs/rmtab.c (getrmtabent): Handle the new argument
-       for position in file.
-       (fgetrmtabent): Likewise.
-       (putrmtabent): Likewise.
-       (fputrmtabent): Likewise.
-
-       * support/nfs/rmtab.c (fgetrmtabent): Get value for the new
-       field, r_count.
-
-       * support/export/rmtab.c (rmtab_read): Pass NULL as the new
-       argument to getrmtabent (), fgetrmtabent (), putrmtabent ()
-       and fputrmtabent ().
-       * utils/mountd/rmtab.c (mountlist_add): Likewise.
-       (mountlist_del): Likewise.
-       (mountlist_del_all): Likewise.
-       (mountlist_list): Likewise.
-
-       * utils/mountd/rmtab.c (mountlist_add): Increment "r_count"
-       for the existing entry and initialize "r_count" to 1.
-       (mountlist_del): Decrement "r_count".
-
-2000-05-18  H.J. Lu <hjl@lucon.org>
-
-       * configure.in (VERSION): Set to "0.1.7.4".
-       * configure: Regenerated.
-       * nfs-utils.spec: Updated.
-
-2000-05-18  H.J. Lu <hjl@lucon.org>
-
-       * etc/redhat/nfs.init (restart): Just do stop and start.
-
-2000-05-09  Jay Weber <jweber@valinux.com>
-
-       * utils/rquotad/hasquota.c: added support for ext3 recognition
-       in rquotad.
-       * utils/rquotad/mntent.h: Likewise.
-
-2000-05-01  H.J. Lu <hjl@lucon.org>
-
-       * configure.in (VERSION): Set to "0.1.7.3".
-       * configure: Regenerated.
-       * nfs-utils.spec: Updated.
-
-2000-05-01  H.J. Lu <hjl@lucon.org>
-
-       * utils/rquotad/rquota_server.c (getquotainfo): Skip bad
-       mounting poins in /etc/fstab.
-
-2000-05-01  H.J. Lu <hjl@lucon.org>
-
-       * configure.in (VERSION): Set to "0.1.7.2".
-       * configure: Regenerated.
-       * nfs-utils.spec: Updated.
-
-2000-05-01  H.J. Lu <hjl@lucon.org>
-
-       * utils/rquotad/rquota_server.c (getquotainfo): Call stat ()
-       to check for the mounting point.
-
-2000-04-29  Chip Salzenberg  <chip@valinux.com>
-           Neil Brown  <neilb@cse.unsw.edu.au>
-
-       * Really re-use RPC ports.
-         (Fixes earlier patch.  Sorry, Neil.)
-
-2000-04-26  H.J. Lu <hjl@lucon.org>
-
-       * configure.in (VERSION): Set to "0.1.7.1".
-       * configure: Regenerated.
-       * nfs-utils.spec: Updated.
-
-2000-04-26  H.J. Lu <hjl@lucon.org>
-
-       * etc/redhat/nfslock.init: Check if lockd exits before killing
-       it.
-
-2000-04-25  H.J. Lu <hjl@lucon.org>
-
-       * README: Require util-linux-2.10f-mount-rpc.patch for mount.
-
-2000-03-21 Michael Weiser <michael@weiser.saale-net.de>
-
-       * support/nfs/exports.c (parsesquash): Correctly set the
-       return pointer.
-
-Tue Mar 21 11:38:48 EST 2000 NeilBrown <neilb@cse.unsw.edu.au>
-
-       * support/include/nfs/nfs.h: Removed knowledge of internals of
-            kernel filehandles (which can change) and defined nfs_fh_size
-            which has variable size
-       
-       * support/nfs/getfh.c: defined getfh_size to use new syscall to
-            get variable sized file handles, and change getfh{,old} to
-            use nfs_fh_size        
-       
-       * utils/mountd/mountd.c: use nfd_fh_size and call getfh_size for
-            NFSv3 file handles
-
-       * tools/Makefile, tools/nlmtest/nlmtest.c
-            nlmtest.c depended on internel format of file handles, so now
-            doesn't work.
-
-       
-2000-03-12  Chip Salzenberg  <chip@valinux.com>
-           Neil Brown  <neilb@cse.unsw.edu.au>
-
-       * support/nfs/rpcmisc.c (rpc_init): Share transports.
-
-2000-03-13 H.J. Lu <hjl@lucon.org>
-
-       * etc/redhat/nfsd.init: Updated.
-
-       * etc/redhat/nfslock.init: Updated.
-
-       * nfs-utils.spec.in: Updated.
-
-       * configure.in (VERSION): Set to "0.1.7".
-       * configure: Regenerated.
-       * nfs-utils.spec: Updated.
-
-       * README: Updated.
-
-Wed Mar  8 09:42:43 2000 Neil Brown <neilb@cse.unsw.edu.au>
-
-       * utils/exportfs/exportfs.c (dump): Included printing of
-          nohide, no_subtree_check, and insecure_locks
-
-2000-02-26  Chip Salzenberg  <chip@valinux.com>
-
-       * config.mk.in (INSTALLSUID): Strip ("-s").
-       (INSTALLSCRIPT): Define.
-       * utils/nhfsstone/Makefile: Use it.
-
-2000-02-26  Chip Salzenberg  <chip@valinux.com>
-
-       * utils/lockd/lockd.man: Create.
-       * utils/lockd/Makefile: Install it.
-       * utils/nhfsstone/nhfs{run,nums,graph}.man: Create.
-       * utils/nhfsstone/nhfsstone.man: Change suffix from ".1".
-       * utils/nhfsstone/Makefile: Install the helper scripts and
-         all four man pages.
-       * utils/exportfs/exports.man: Fix typo.
-
-2000-02-26  Chip Salzenberg  <chip@valinux.com>
-
-       * support/nfs/xio.c (xungetc): Decrement line number when
-       character to unget is newline.  Make first parameter int, so
-       it can distinguish EOF from \377.
-       * support/include/xio.h (xungetc): Adjust prototype.
-
-Fri Feb  4 23:42:23 2000 Neil Brown <neilb@cse.unsw.edu.au>
-
-       * support/include/nfs/export.h: added NFSEXP_NOAUTHNLM
-       * support/nfs/exports.c: added handling for NFSEXP_NOAUTHNLM
-       * utils/exportfs/exports.man: added documentation for no_auth_nlm.
-
-       This is for supporting a new option introduced in 2.3.42
-
-Thu Feb  3 14:55:48 2000 H.J. Lu <hjl@lucon.org>
-
-       * COPYING: Added. GPL.
-
-Thu Feb 03 14:40:40 2000 Cristian Gafton <gafton@redhat.com>
-
-       * utils/rquotad/rquota_server.c (getquotainfo): Call statfs ()
-       to get the block size.
-
-Tue Jan 25 11:04:17 2000 H.J. Lu <hjl@lucon.org>
-
-       * nfs-utils.spec.in: Update ftp site.
-
-Mon Jan 17 11:48:18 2000 H.J. Lu <hjl@lucon.org>
-
-       * README: Update hostnames.
-
-Tue Jan 11 10:06:22 2000 H.J. Lu <hjl@lucon.org>
-
-       * configure.in (VERSION): Set to "0.1.6".
-       * configure: Regenerated.
-       * nfs-utils.spec: Updated.
-
-       * README: Updated.
-
-Mon Jan 10 14:26:33 2000 H.J. Lu <hjl@lucon.org>
+    nfs-utils: Fix C aliasing rules violation in       nfs_getrpccaller()
+    
+    Squelch compiler warnings reported with -Wextra:
+    
+    In file included from statd.c:24:
+    ../../support/include/rpcmisc.h: In function nfs_getrpccaller_in:
+    ../../support/include/rpcmisc.h:58: warning: dereferencing type-punned
+    pointer might break strict-aliasing rules
+    ../../support/include/rpcmisc.h: In function nfs_getrpccaller:
+    ../../support/include/rpcmisc.h:63: warning: dereferencing type-punned
+    pointer might break strict-aliasing rules
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * utils/mountd/auth.c (auth_authenticate_internal): Call
-       xstrdup for hostname before passing it to gethostbyname.
+commit a8715bec8bd671135f20fc0422d2a9fc0993758a
+Author: Kevin Constantine <kevin.constantine@disneyanimation.com>
+Date:   Tue Jun 22 17:43:19 2010 -0400
 
-       * utils/mountd/mountd.c (get_exportlist): Use xstrdup instead
-       of strdup.
+    nfs-iostat.py: divide by zero with fresh mount
+    
+    When an export is freshly mounted, /proc/self/mountstats displays age = 0.
+    This causes nfs-iostat.py to divide by zero throwing an error.  When we
+    have age = 0, other stats are greater than 0, so we'll set age = 1 and
+    print the relevant stats.
+    
+    Signed-off-by: Kevin Constantine <kevin.constantine@disneyanimation.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-Sun Dec 19 09:35:01 1999  H.J. Lu <hjl@lucon.org>
+commit 9c3f7a220b4812c5d560db5fcacad790fc8b17af
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Tue Jun 22 13:31:38 2010 -0400
 
-       * README: Update the mailing list address.
+    libexport.a: Remove unused hostent-based DNS helper        functions
+    
+    Clean up:  Get rid of hostent-based DNS helper functions in
+    libexport.a that have been replaced by addrinfo-based DNS helpers.
+    
+    None of the original code remains, so replace the copyright notice as
+    well.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-Sun Dec 19 09:22:28 1999  H.J. Lu <hjl@lucon.org>
+commit 21015ace7d0a356b24a57540ccfeb41d941e78ed
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Tue Jun 22 13:06:40 2010 -0400
 
-       * configure.in (VERSION): Set to "0.1.5".
-       * configure: Regenerated.
-       * nfs-utils.spec: Updated.
+    libexport.a: Replace matchhostname()
+    
+    So that exportfs can eventually support IPv6 addresses, copy statd's
+    getaddrinfo(3)-based matchhostname to exportfs, with adjustments for
+    dealing with export wildcards and netgroups.  Until exportfs has full
+    IPv6 support, however, we want to ensure that IPv6 addresses continue
+    to remain blocked in the address comparison code used by exportfs.  At
+    a later point we'll replace much of this with the generic functions
+    in sockaddr.h.
+    
+    Since it contains special logic for handling wildcard and netgroups,
+    this function is specialized for exportfs, and does not belong in
+    one of the shared libraries.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * README: Updated.
+commit 22d6566d473f71e241c791a02435d414648c99e8
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Tue Jun 22 12:51:42 2010 -0400
 
-Mon Dec 13 13:40:20 1999  H.J. Lu <hjl@lucon.org>
+    libexport.a: Add documenting comments
+    
+    Clean up.  Add a few additional documenting comments for globally
+    visible functions.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * utils/rquotad/hasquota.c (hasquota): Malloc one more char
-       for '/'.
+commit 53928c0166dcc0acceaa995edb8551b48968b5dd
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Tue Jun 22 12:44:44 2010 -0400
 
-Mon Dec  6 09:42:45 1999  H.J. Lu <hjl@lucon.org>
+    libexport.a: Make export_add() static
+    
+    Clean up: export_add() is not called from outside of export.c, so make
+    it a static helper.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * configure.in (VERSION): Set to "0.1.4".
-       * configure: Regenerated.
-       * nfs-utils.spec: Updated.
+commit 8940675a20967145b37a596334c25a54804435cc
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Tue Jun 22 12:43:55 2010 -0400
 
-       * README: Updated.
+    libexport.a: Make export_read() return void
+    
+    Clean up: export_read()'s return value is always zero, and its only
+    caller never checks it.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-Mon Dec  6 09:28:07 1999  H.J. Lu <hjl@lucon.org>
+commit 0509d3428f523776ddd9d6e9fa318587d3ec7d84
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Tue Jun 22 12:43:01 2010 -0400
 
-       * nfs-utils.spec.in: New file.
+    mountd: Replace "struct hostent" with "struct addrinfo"
+    
+    struct hostent can store either IPv4 or IPv6 addresses, but it can't
+    store both address families concurrently for the same host.  Neither
+    can hostent deal with parts of socket addresses that are outside of
+    the sin{,6}_addr field.
+    
+    Replace the use of "struct hostent" everywhere in libexport.a, mountd,
+    and exportfs with "struct addrinfo".  This is a large change, but
+    there are so many strong dependencies on struct hostent that this
+    can't easily be broken into smaller pieces.
+    
+    One benefit of this change is that hostent_dup() is no longer
+    required, since the results of getaddrinfo(3) are already dynamically
+    allocated.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * config.mk.in (VERSION): Changed to "nfs-utils @VERSION@".
+commit 3ca5879be32c4c11750e12230ff588195fff0738
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Tue Jun 22 12:40:27 2010 -0400
 
-       * configure.in (nfs-utils.spec): Added to AC_OUTPUT.
+    exportfs: Add a common exit label in exportfs()
+    
+    Clean up: Reduce code duplication by introducing a goto label for
+    freeing hp and exiting.  This will make replacing "struct hostent *"
+    with "struct addrinfo *" more straightforward in this code.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-1999-12-04  Chip Salzenberg  <chip@valinux.com>
+commit 94ce1eb94babb4c587b2826452fb053cba745098
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Tue Jun 22 10:41:03 2010 -0400
 
-       * config.mk.in: Use $(CC) as set by configure.
+    libexport.a: Add helpers to manage DNS lookups
+    
+    Introduce DNS query helpers based on getaddrinfo(3) and
+    getnameinfo(3).  These will eventually replace the existing
+    hostent-based functions in support/export/hostname.c.
+    
+    Put some of these new helpers to immediate use, where convenient.
+    
+    As they are part of libexport.a, I've added the forward declarations
+    for these new functions in exportfs.h rather than misc.h, where the
+    hostent-based forward declarations are currently.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-1999-12-04  Chip Salzenberg  <chip@valinux.com>
+commit 8d61f2518bebe11c5fd0624857f83de1dceca991
+Author: NeilBrown <neilb@suse.de>
+Date:   Tue Jun 22 10:37:25 2010 -0400
 
-       * rules.mk: Call $(MAKE) with $(MFLAGS).
+    Improve support for exporting btrfs subvolumes
+    
+    If you export two subvolumes of a btrfs filesystem, they will both be
+    given the same uuid so lookups will be confused.
+    blkid cannot differentiate the two, so we must use the fsid from
+    statfs64 to identify the filesystem.
+    
+    We cannot tell if blkid or statfs is best without knowing internal
+    details of the filesystem in question, so we need to encode specific
+    knowledge of btrfs in mountd.  This is unfortunate.
+    
+    To ensure smooth handling of this and possible future changes in uuid
+    generation, we add infrastructure for multiple different uuids to be
+    recognised on old filehandles, but only the preferred on is used on
+    new filehandles.
+    
+    Signed-off-by: NeilBrown <neilb@suse.de>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-Mon Nov 29 11:17:35 1999  H.J. Lu <hjl@lucon.org>
+commit 9ac7a15017b876d4d8d3a4502ebaf954f36f7f54
+Author: Steve Dickson <steved@redhat.com>
+Date:   Thu Jun 3 08:53:22 2010 -0400
 
-       * tools/rpcgen/rpc_main.c (h_output): Generate IXDR_GET_INT32,
-       IXDR_PUT_INT32, IXDR_GET_U_INT32 and IXDR_PUT_U_INT32.
+    mount.nfs: silently fails when the network protocol is not found
+    
+    mount.nfs should display some type of error diagnostics when
+    the network protocol can not be determined.
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-Mon Nov 29 11:17:35 1999  H.J. Lu <hjl@lucon.org>
+commit 740171dea45a57e396a86fbda1579a465f101854
+Author: Steve Dickson <steved@redhat.com>
+Date:   Thu Jun 3 08:32:56 2010 -0400
 
-       * nfs-utils.spec (Version): Set to 0.1.3.
+    mount: silently fails when bad option values are given
+    
+    mount.nfs should not only fail when an invalid option values
+    are supplied (as it does), it should also print a diagnostic
+    message identifying the problem
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * configure.in (VERSION): Set to "nfs-utils 0.1.3".
-       * configure: Regenerated.
+commit 94c3d7c91de582cf29ff9100950ecd4a5fd1606b
+Author: Kevin Constantine <kevin.constantine@disneyanimation.com>
+Date:   Wed Jun 2 08:34:14 2010 -0400
 
-       * README: Updated.
+    nfsiostat.man: Add linebreak before --version option
+    
+    The nfsiostat man file was missing a linebreak before the --verbose option
+    
+    Signed-off-by: Kevin Constantine <kevin.constantine@disneyanimation.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-Mon Nov 29 11:15:47 1999  H.J. Lu <hjl@lucon.org>
+commit 291b329ad1f5a65270097f4ec3a8dd465df42669
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Mon May 24 06:02:22 2010 -0400
 
-       * utils/rquotad/rquota_server.c (nfsmount_to_devname): Removed.
-       (_PATH_DEV_DSK): Likewise.
-       (getquotainfo): Match the mounting point from /etc/mtab
-       instead of calling nfsmount_to_devname ().
+    mountd: Convert colons in IPv6 presentation addresses tosemicolons
+    
+    The /var/lib/nfs/rmtab file delineates fields in each of its lines
+    with a ":".  The first field contains the IP address of a client, in
+    presentation format.  IPv6 presentation format addresses contain
+    colons, which screws up the field delineation of rmtab.
+    
+    Use a simple simple scheme to convert the colons in incoming client
+    names to some other character, and then convert them back when the
+    rmtab file is read.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-1999-11-24  Chip Salzenberg  <chip@valinux.com>
+commit 9e398e49be79af62fca8efb21849d8a2714dc92a
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Mon May 24 06:01:22 2010 -0400
 
-       * utils/statd/monitor.c (sm_mon_1_svc): Accept lockd callbacks
-       to the new port 24 as well as the historical port 100021.
+    libexport.a: Refactor rmtab_read()
+    
+    Clean up: Make it easier to add IPv6 support by refactoring part of
+    rmtab_read() into a helper function.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-Tue Nov 23 10:21:34 1999 Neil Brown <neilb@cse.unsw.edu.au>
+commit 2fd2dfd9ebb2de145d50039233bd2a53b7f03062
+Author: NeilBrown <neilb@suse.de>
+Date:   Mon May 24 05:55:26 2010 -0400
 
-       * etc/redhat/nfsd.init (stop): moved exportfs -ua after
-       stopping nfsd to stop spurious ESTALE on server shutdown.
-       
-Tue Nov 23 10:13:39 1999  Neil Brown <neilb@cse.unsw.edu.au>
+    Mountd listens on 2 different versions for NFSv2 (MOUNTv1 and MOUNTv2)
+    and one for NFSv3 (MOUNTv3)
+    
+    When --no-nfs-version requests an NFS version to be disabled, the
+    code actually disabled the MOUNT version. This works is several cases,
+    but requires --no-nfs-version 1 to completely disable NFSv2, which
+    is wrong.
+    
+    So if we do disable 1, 2, and 3. mountd complain and won't run, it
+    is not possible to run just v4 - i.e. not listening for MOUNT requests
+    at all (as v4 doesn't need them).
+    
+    So change the handling of "--no-nfs-version 2" it disable MOUNTv1 as
+    well as
+    MOUNTv2, and allow mountd to continue running as long as one of
+    NFSv2 NFSv3 NFSv4 is enabled.
+    
+    Signed-off-by: NeilBrown <neilb@suse.de>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * support/nfs/exports.c (parseopts): make copy of opt string
-       before 'nul'ing out commas so that
+commit 6299a310d77e6495efdf7c50491f0b055fee2cfe
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Wed May 5 15:41:07 2010 -0400
 
-       # exportfs -o option1,option2 hosta:/fs hostb:/fs
+    mountd/exportfs: Make m_addrlist field a nfs_sockaddr
+    
+    To store non-AF_INET addresses in the nfs_client structure, we need to
+    use more than in_addr for the m_addrlist field.  Make m_addrlist
+    larger, then add a few helper functions to handle type casting and
+    array indexing cleanly.
+    
+    We could treat the nfs_client address list as if all the addresses
+    in the list were the same family.  This might work for MCL_SUBNETWORK
+    type nfs_clients.  However, during the transition to IPv6, most hosts
+    will have at least one IPv4 and one IPv6 address.  For MCL_FQDN, I
+    think we need to have the ability to store addresses from both
+    families in one nfs_client.
+    
+    Additionally, IPv6 scope IDs are not part of struct sin6_addr.  To
+    support link-local IPv6 addresses and the like, a scope ID must be
+    stored.
+    
+    Thus, each slot in the address list needs to be capable of storing an
+    entire socket address, and not simply the network address part.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-        applies both options to both exports.
+commit 6ff1fd42db18c657fbc5f81169a566b41d53e731
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Wed May 5 14:42:01 2010 -0400
 
-Thu Oct 28 12:55:42 1999  H.J. Lu <hjl@lucon.org>
+    libexport.a: Clean up client_add()
+    
+    Clean up: client_add()'s current callers never set unknown m_type
+    values, so the m_type check is unnecessary.
+    
+    All of client_add()'s callers are in the same source file where it is
+    defined, so make it a static helper function.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * README: Fix a few typos.
+commit 9bb85c5e8d2285f82367c75df5530a71a9a5a5f2
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Wed May 5 14:37:13 2010 -0400
 
-       * tools/rpcgen/rpc_cout.c (print_header): Use int32_t instead
-       of long.
-       * tools/rpcgen/rpc_hout.c (pdefine): Likewise.
-       * tools/rpcgen/rpc_main.c (c_initialize): Likewise.
-       * tools/rpcgen/rpc_parse.c (get_type): Likewise.
-       (unsigned_dec): Likewise.
-       * tools/rpcgen/rpc_scan.c (symbols): Likewise.
-       * tools/rpcgen/rpc_util.c (tokstrings): Likewise.
+    libexport.a: Refactor client_init()
+    
+    Clean up:  Move subnet hostname parsing logic out of client_init() to
+    make it simpler to introduce IPv6 support.
+    
+    Make client_init() a helper, since it's already static.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * tools/rpcgen/rpc_cout.c (emit_single_in_line): Use INT32
-       instead of LONG.
-       * tools/rpcgen/rpc_parse.c (get_type): Likewise.
-       (unsigned_dec): Likewise.
-       * tools/rpcgen/rpc_scan.c (symbols): Likewise.
-       * tools/rpcgen/rpc_scan.h (tok_kind): Likewise.
-       * tools/rpcgen/rpc_util.c (tokstrings): Likewise.
+commit 0a8bd742cc1412e2553f152ee0c3aab8c5570212
+Author: Mike Frysinger <vapier@gentoo.org>
+Date:   Fri Apr 23 12:22:53 2010 -0400
 
-Thu Oct 28 11:27:51 1999 Neil Brown <neilb@cse.unsw.edu.au>
+    Make capabilities support optional
+    
+    The new code using libcap is quite minor, so rather than always reqiure
+    libcap support, make it a normal --enable type flag.  Current default
+    behavior is retained -- if libcap is found, it is enabled, else it is
+    disabled like every nfs-utils version in the past.
+    
+    Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-        * support/include/nfs/export.h addedd NFSEXP_NOSUBTREECHECK
-        * support/nfs/exports.c: added {no_,}subtree_check and changed
-          crossmnt to nohide
-        * utils/exportfs/exports.man: added no_subtree_check and nohide
-          and removed irrelevant stuff from unfsd.
-        * support/export/rmtab.c: rmtab_read didn't quite do the right
-          thing if a pathname from rmtab was a subdirectory of an export-point
+commit fbc038b7a5c7f5f102bf2c4fb149030d0092eec8
+Author: Mike Frysinger <vapier@gentoo.org>
+Date:   Fri Apr 23 12:18:27 2010 -0400
 
-Tue Oct 26 17:22:40 1999  H.J. Lu <hjl@lucon.org>
+    set +x on autogen.sh
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * README: Updated ftp site.
+commit 08e1512e4a932f41867f0b515348b9402db50cbd
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Fri Apr 23 12:09:35 2010 -0400
 
-Mon Oct 25 18:12:45 1999  H.J. Lu <hjl@lucon.org>
+    libexport.a: Allow malloc(3) failures in client_lookup() and friends
+    
+    Clean up: Use malloc(3) instead of xmalloc() in client_lookup() and
+    client_dup(), ensuring that a failed memory allocation here doesn't
+    cause our process to exit suddenly.
+    
+    Allocation of nfs_client records and the m_hostname string are now
+    consistently handled with malloc(3), calloc(3), strdup(3), and
+    free(3).
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * nfs-utils.spec (Version): Set to 0.1.2.
+commit aa4b66b12b631885ed85f3ebe97e68b033407178
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Fri Apr 23 12:08:49 2010 -0400
 
-       * configure.in (VERSION): Set to "nfs-utils 0.1.2".
-       * configure: Regenerated.
+    libexport.a: Allow m_hostname allocation to fail instead of exit
+    
+    Clean up: Replace xstrdup() with strdup(3) in client_init(), to
+    prevent the process from exiting if the memory allocation fails.
+    
+    Note that both of client_init()'s callers set m_hostname equal to NULL
+    before calling, thus the extra free(3) at the top of client_init() is
+    unneeded.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * README: Updated.
+commit 5d954d871fb265af584faef5df6e2e7e6ada7c3b
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Fri Apr 23 12:02:34 2010 -0400
 
-Mon Oct 25 18:11:21 1999  H.J. Lu <hjl@lucon.org>
+    libexport.a: Allow client_init() to fail instead of exit
+    
+    client_init()'s current callers can now deal correctly with a failure.
+    Get rid of code that can cause our process to exit in client_init(),
+    if address mask parsing or memory allocation fails.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * utils/mountd/auth.c (auth_error): Add "no_forward_dns".
-       (auth_authenticate_internal): Check for NULL return on forward
-       DNS lookup.
-       (auth_authenticate): Handle "no_forward_dns".
+commit 75cbc8d3fc9e7c3750629bd72519770ab58b868f
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Fri Apr 23 12:00:28 2010 -0400
 
-Thu Oct 21 16:22:06 1999  H.J. Lu <hjl@lucon.org>
+    libexport.a: Add client_free()
+    
+    Clean up: Introduce a helper to free a nfs_client record.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * Version 0.1.1 released.
+commit 7fc6f6c6b68ba7fa1be6de05ce3b9e2d97b82ea4
+Author: Steve Dickson <steved@redhat.com>
+Date:   Fri Apr 16 10:56:29 2010 -0400
 
-       * nfs-utils.spec (Version): Set to 0.1.1.
+    Add in autoconf support for mountstats and nfsiostats
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * configure.in (VERSION): Set to "nfs-utils 0.1.1".
-       * configure: Regenerated.
+commit d8ff9ef2828059bb2ee115d22f3c9579421daf54
+Author: Steve Dickson <steved@redhat.com>
+Date:   Fri Apr 16 10:49:10 2010 -0400
 
-       * README: Updated.
+    Introduce man page for the nfsiostats command
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-Mon Oct 18 17:43:29 1999  H.J. Lu <hjl@lucon.org>
+commit c03fe46d62bc78cb52d400fa5a52dc4ce9947945
+Author: Steve Dickson <steved@redhat.com>
+Date:   Fri Apr 16 10:46:41 2010 -0400
 
-       * nfs-utils.spec (Obsoletes): Fixed a typo, change knfsd-client
-       to knfsd-clients.
-       (Provides): Likewise.
+    Introduce man page for the mountstats command
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-Mon Oct 18 14:56:22 1999  H.J. Lu <hjl@lucon.org>
+commit c4b2281c6c748b768de7a49af89660c9c1a68b11
+Author: Steve Dickson <steved@redhat.com>
+Date:   Fri Apr 16 13:31:57 2010 -0400
 
-       * Initial version 0.1 released.
+    Removed some miscellaneous warnings in the new gssd code.
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * configure.in (VERSION): Set to "nfs-utils 0.1".
-       * configure: Regenerated.
+commit 4c5ff6d48021731128c4fc13d51610645a6fcf5c
+Author: Kevin Coffman <kwc@citi.umich.edu>
+Date:   Mon Apr 12 17:13:25 2010 -0400
 
-Mon Oct 18 14:54:57 1999  H.J. Lu <hjl@lucon.org>
+    Add support for non-DES encryption types.
+    
+    Sends a new format of context information to the kernel.
+    (Requires kernel support to do anything useful.)
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * utils/mountd/mountd.c (get_exportlist): Cleanup.
+commit 76be349d5dd07f55797cb9920cc275667258f10f
+Author: Kevin Coffman <kwc@citi.umich.edu>
+Date:   Thu Apr 15 08:32:20 2010 -0400
 
-       * utils/exportfs/exportfs.c (unexport_all): Unexport from
-       kernel only if the entry is exported to kernel.
-       (unexportfs): Likewise.
+    Try to use kernel function to determine supported Kerberos enctypes.
+    
+    This patch replaces a hard-coded list with a function to obtain
+    the Kerberos encryption types that the kernel's rpcsec_gss code
+    can support.  Defaults to old behavior if kernel does not supply
+    information.
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-Wed Sep 08 16:49:32 1999  Neil Brown <neilb@cse.unsw.edu.au>
+commit 48d13033dcb27eb3d9ea78c39692ff7c54095950
+Author: Kevin Coffman <kwc@citi.umich.edu>
+Date:   Mon Apr 12 17:06:30 2010 -0400
 
-1/ utils/mountd/rmtab.c::mountlist_list
+    gssd: move function limit_krb5_enctypes into the exported functions area
+    
+    cleanup: Move function limit_krb5_enctypes() from the section
+    containing static functions into the section containing
+    externally visible functions.
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-     This routine stats the rmtab file to see if it has changed.  It
-     if has, it cleans up it's old copy of the data. But it still
-     always re-read the file, thus returning multiple copies of the
-     data on consecutive calls without intervening changes.
-     "Showmount -a" didn't show this as it appears to sort/unique the
-     data, but 'strace showmount -a' showed that the size of the
-     datagram that it received grew.
+commit 470448e77bd673b206cf40820f966dcb8f029f27
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Fri Apr 16 13:03:20 2010 -0400
 
-     I moved the getrmtabent loop inside the mtime test.
+    libexport.a: export_find() should handle address parsing errors
+    
+    An address mask parsing error can cause client_init(), and therefore
+    client_dup(), to make our process exit suddenly.  Soon we want to add
+    more complex address parsing in client_init(), so we need this
+    interface to be a little more robust.
+    
+    Since export_find() can return NULL in some cases, it can handle NULL
+    returns from its subroutines if an address parsing error occurs, or if
+    memory is exhausted.  Allow for client_dup() to return NULL instead of
+    exiting sideways.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-2/ utils/exportfs/exportfs.c
-   
-     Many routines used the m_path field of m_export instead of
-     e_path.
-     According to the comment in nfslib.h, m_path should only
-     be used when processing a mount request (i.e. in mountd)
-     where the mountpoint may be a subdirectory of the export point.
+commit 9b7cc679c70d00af3f44dc6a8b44a360a2423d64
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Fri Apr 16 13:02:15 2010 -0400
 
-     I changed all occurances of m_path to e_path
+    libexport.a: Add export_free()
+    
+    Clean up: Introduce a helper to free an nfs_export record.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
+commit 30eff9c26141746fb26efb1af60d5cbe7a16ebae
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Thu Apr 15 08:59:18 2010 -0400
 
-3/ utils/exportfs/exportfs.c:main
+    libexport.a: Add helper for populating m_addrlist[]
+    
+    Clean up: Move common code that populates an nfs_client record's
+    m_addrlist to a helper function.  This eliminates a little code
+    duplication, and makes it simpler to add IPv6 support later.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-      extra arguments are not meaningful with -a or -r, but
-      exportfs accepted them and then ignored the -a/-r, expect that
-      -r would still unexport everything first.
+commit e1c93f691348392ee36b763bf57946540891ff16
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Thu Apr 15 08:57:29 2010 -0400
 
-      I generate an error if there are extra args and f_all
+    libexport.a: Reduce code duplication in client_init()
+    
+    Clean up:  Most cases in client_init() set clp->m_naddr to zero.  Move
+    it to the common part of the function, and simplify the logic.  This
+    will make adding IPv6 support here more straightforward.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-4/ utils/exportfs/exportfs.c:main
-     extract dump out as a special case.
+commit 1fc99e6d5d6b9401e380ee756a4251c86a3b8d54
+Author: Mike Frysinger <vapier@gentoo.org>
+Date:   Thu Apr 15 08:49:28 2010 -0400
 
-5/ utils/exportfs/exportfs.c
-     made f_reexport a local variable.
+    set +x on t0001-statd-basic-mon-unmon.sh
+    
+    The test framework tries to exec this script, but it fails because it
+    lacks the +x bit.
+    
+    Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
+commit bf867b09201abb155b52e81aeb08757b2f7c6937
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Thu Apr 8 11:01:14 2010 -0400
 
-6/ utils/exportfs/exportfs.c:main,exportall
+    libexport.a: replace xlog(L_FATAL) in client_check()
+    
+    Clean up: Prevent the process from exiting in client_check().  Report
+    bad m_type values, but return 0.
+    
+    This removes another site where a mountd or exportfs process can exit
+    sideways.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-    support/export/rmtab.c
-       only  mayexport on newly created entries, don't set xtabent at all
+commit a39b43b81a8e7b70310f250c5ffd77816577cd6c
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Thu Apr 8 10:55:02 2010 -0400
 
-7/ support/include/nfslib.h
+    libexport.a: Refactor wildcard checking in client_check()
+    
+    Clean up: refactor wildcard logic out of client_check() to make it
+    easier to introduce IPv6 support.
+    
+    Match the style used for client_check_{fqdn,subnetwork,netgroup}.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-      add #define _PATH_PROC_EXPORTS to be /proc/fs/nds/exports
+commit 346ca35298e45e55a58d0f566c3b32b69102c6de
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Thu Apr 8 10:54:01 2010 -0400
 
-8/ support/export/xtab.c
+    libexport.a: Refactor netgroup checking in client_check()
+    
+    Clean up: refactor netgroup logic out of client_check() to make it
+    easier to introduce IPv6 support.
+    
+     +  Use preferred style of keeping #ifdef out of the middle of
+        function definitions.  Squelch compiler warnings for "#ifndef
+        HAVE_INNETGR" by using __attribute__((unused)).
+    
+     +  Use preferred style of not using curly braces around switch cases.
+    
+     +  Match style used for check_{fqdn,subnetwork}.
+    
+     +  Clarify comment documenting use of h_aliases
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-      xtab_mount_read loads data from _PATH_PROC_EXPORTS if it exists,
-      else from xtab
+commit 3455138100064d0213b124c72453accde2276be5
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Thu Apr 8 10:52:33 2010 -0400
 
+    libexport.a: Remove unused function client_checkaddr()
+    
+    Clean up.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-9/ support/export/xtab.c
+commit a4e3d5c53195c789ae26697a0b2ecdf05d76a85b
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Thu Apr 8 10:51:54 2010 -0400
 
-      xtab_mount_read now sets m_exported, and NOT
-       xtabent and mayexport
+    libexport.a: Factor SUBNETWORK checking out of     check_client()
+    
+    Clean up:  Factor the MCL_SUBNETWORK case out of check_client() and
+    client_checkaddr().  This will make it easier to add IPv6 support
+    eventually.
+    
+    The logic in the new helper function will get a little more tangled
+    once IPv6 support is introduced.  Each slot in the clp address list
+    eventually may contain an address from either address family.
+    
+    Note that the switch statement in client_checkaddr() is redundant,
+    since clp->cl_mtype is loop invariant.  This change makes SUBNETWORK
+    client checking more computationally efficient, at the cost of a few
+    extra lines of code.
+    
+    This commit should not change code behavior in any way.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-      removed the append arguement from xtab_write as it was
-       never used.
+commit 6abde64e6a605443dfc283ffb2642cb853f8b5b0
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Thu Apr 8 10:50:41 2010 -0400
 
-      added is_export flag to xtab_write similar to xtab_read
-       if is_export, only write entries with m_xtabent or m_addxtab
-       if !is_export, only write entries with m_exported
-     
-10/ support/export/export.c::export_allowed_internal
+    libexport.a: Factor FQDN checking out of check_client()
+    
+    Clean up:  Factor the MCL_FQDN case out of check_client() and
+    client_checkaddr().  This will make it easier to add IPv6 support
+    eventually.
+    
+    The logic in the new helper function will get a little more tangled
+    once IPv6 support is introduced.  Each slot in the clp address list
+    eventually may contain an address from either address family.
+    
+    Note that the switch statement in client_checkaddr() is redundant,
+    since clp->cl_mtype is loop invariant.  This change makes FQDN client
+    checking more computationally efficient, at the cost of a few extra
+    lines of code.
+    
+    This commit should not change code behavior in any way.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-      added test for exp->m_mayexport, as the export tree
-       may have entries that are no longer allowed to be exported,
-       and so shouldn't caused deduced exported by rmtab_read
+commit e8a54a3d5e32c9de009f84d1ef3f26d2dffbf226
+Author: Steve Dickson <steved@redhat.com>
+Date:   Thu Apr 8 10:43:49 2010 -0400
 
-11/ utils/exportfs/exportfs.c::main
-       error checking of flags.
+    Remove some warnings that were introduced by commit 6ca440c
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-12/ utils/exportfs/exportfs.c
+commit 132744e9f8885254bcf213c90009d40adeb716bc
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Mon Mar 22 10:18:00 2010 -0400
 
-       total rewrite of export and unexport logic.
-       We now:
-       -  build an exportslist of valid exports, based on
-          current etab file  and arguments,
-        -  read rmtab to instantiate relevant wild card entries
-       -  read etab to find out what is currently exported
-       -  synchronise intention with reality
-       -  write out etab and xtab
+    libexport.a: e_fslocdata should be freed with free(3)
+    
+    Clean up: Since e_fslocdata is allocated with strdup(3), and not
+    xstrdup(), it should be freed with free(3), and not xfree().
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-13/  various
-       discard the m_addxtab flag
-       add m_changed flag so we know what to report in exportfs
+commit e3b0046b4b12a6e05c0a7afd59ca5431ded51e96
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Mon Mar 22 10:16:04 2010 -0400
 
-14/ utils/mountd/auth.c:auth_authenticate
+    libexport.a: Fix whitespace damage in      support/export/export.c
+    
+    Clean up whitespace damage introduced by commit 4cacc965.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       the value returned by gethostbyaddr was trusted.
+commit 5f722d8855ebcb2d041e182c8c69c8cbee4bf408
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Mon Mar 22 10:13:15 2010 -0400
 
-       It now follows this with a call to gethostbyname
-       and checks that the address is in the list.
+    libexport.a: Clean up client_compose() and client_member()
+    
+    Clean up:  Replace outdated comments, and fix some function
+    declarations.  Use proper type for a couple of automatic variables.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-15/ support/export/nfsctl.c::cltsetup,expsetup
+commit aa4c771fc359e097a3a6c3637f78c7bed7c450e9
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Mon Mar 22 10:10:59 2010 -0400
 
-       force client names to lowercase as kernel is
-       sensitive to case
+    libexport.a: Remove dead code
+    
+    Clean up:  I can't find any call sites for client_find() or
+    client_match().
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-16/ quietened a few compiler warnings
+commit 0935cebc1e130c6adfd870c88a6493277c84d47f
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Fri Mar 19 16:14:26 2010 -0400
 
-17/ support/export/client:client_lookup
+    mount: Mount should retry unreachable hosts
+    
+    Currently if a server is up but not responding (ie, it answers ARP
+    requests, but not NFS or RPC requests), mount retries or backgrounds
+    itself waiting for the server.
+    
+    If the server is not responding on the network at all, mount fails
+    the mount request immediately.
+    
+    Users might find it more useful if mount retried in both cases.
+    
+    Note that this change means attempting to mount using a misspelled
+    server name will "hang" for the retry amount.  I suppose the error
+    message isn't very helpful whether it fails immediately or waits
+    a couple of minutes, though I imagine that an unreachable server is a
+    much more common occurrence than a misspelling.
+    
+    Reported-by: Daniel Goering <g_daniel@gmx.net>
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-     look for pre-existing client with same name before creating
-       a new one.
+commit baa41b2c78e796540c45692ea35214f7090a78cb
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Fri Mar 19 16:03:45 2010 -0400
 
-18/ support/include/exportfs.h
+    sm-notify: Send fully-qualified and unqualified mon_names
+    
+    During any file locking interaction between an NFS client and server,
+    the client tells the server what hostname it will use as the mon_name
+    argument of the SM_NOTIFY request sent by the client when it reboots.
+    This is the "caller_name" argument of an NLMPROC_LOCK request.
+    
+    The server, however, never tells the client what mon_name argument
+    it will use when sending an SM_NOTIFY request.  In order to recognize
+    the server, clients usually guess what mon_name the server might
+    send, by using the server hostname provided by the user on the mount
+    command line.
+    
+    Frequently, the user provides an unqualified server name on the mount
+    command.  The server might then call the client back with a fully
+    qualified domain name, which might not match in some cases.
+    
+    Solaris, and perhaps other implementations, attempt to mitigate this
+    problem by sending two SM_NOTIFY requests to each peer: one with an
+    unqualified mon_name argument, and one with a fully qualified mon_name.
+    
+    Implement such a scheme for sm-notify.
+    
+    Since my_name is almost always the fully-qualified hostname associated
+    with the local system, just wiping the left-most '.' in the my_name
+    argument and sending another SM_NOTIFY is nearly always sufficient.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-     The ordering of the MCL_* enum was:
-       ANONYMOUS, FQDN, SUBNETWORK, WILDCARD, NETGROUP
+commit 900df0e7c0b9006d72d8459b30dc2cd69ce495a5
+Author: Chuck Lever <chuck.lever@oracle.com>
+Date:   Wed Mar 17 06:15:08 2010 -0400
 
-     I moved ANONYMOUS to the end.
+    sm-notify: Use my_name when sending SM_NOTIFY requests
+    
+    The mon_name argument of an SM_NOTIFY request is a string that
+    identifies the rebooting host.
+    
+    sm-notify should send the my_name provided by the local lockd at the
+    time the remote was monitored, rather than cocking up a mon_name
+    argument based on the present return value of gethostname(3).  If the
+    local system's hostname happened to change after the last reboot, then
+    the string returned by gethostname(3) will not be recognized by the
+    remote.  Thus the remote will never initiate lock recovery for the
+    original named host, possibly leaving stale locks.
+    
+    The existing behavior of using the -v command line option as the
+    mon_name argument is preserved, but we now prevent sending an IP
+    presentation address, as some non-Linux implementations don't
+    recognize addresses as valid mon_names.
+    
+    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+    Reviewed-by: Jeff Layton <jlayton@redhat.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-     The ordering is significant when an export entry is being searched for to 
-       match a given address.  There are two problems with ANONYMOUS being first.
+commit 70c59e231e7257ac93b68ba4b844f8d10a6af4a8
+Author: J. Bruce Fields <bfields@citi.umich.edu>
+Date:   Mon Mar 8 15:02:26 2010 -0500
 
-       1/ if a directory is exported rw to a couple of hosts and ro to everyone else,
-          then the ro case will always be found first and the privileged hosts won't get
-          their privilege
-       2/ When mountd gets a request to mount an ANONYMOUSly exported tree, it creates a FQDN
-          export entry for the specific host, and writes it to xtab.
-          When another request comes from the same host, the ANONYMOUS entry is found again, 
-          before the new FQDN entry, so it creates another FQDN entry and writes it to xtab
-          again.  If causes bloat in xtab.
+    mountd: trivial: name parameters for clarity
+    
+    Part of the reason for the previous bug was confusion between "subpath"
+    and "path"; which is the shorter path, and which the longer?
+    
+    "child" and "parent" seem less ambiguous.
+    
+    Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-      Putting ANONYMOUS at the end reflects it's nature as a catch-all
+commit a064fde8c2615333227de97d159bb338d4ac640d
+Author: J. Bruce Fields <bfields@citi.umich.edu>
+Date:   Mon Mar 8 14:59:01 2010 -0500
 
-19/ utils/exportfs/exportfs.man
-       many updates to the man page to reflect changes to the code
+    mountd: fix path comparison for v4 crossmnt
+    
+    This was obviously wrong, since path[strlen(path)] == '\0'
+    should always be true.
+    
+    Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
------------------------
+commit 6ca440c2661dccb05ae74ffb65817e9c30f05c8a
+Author: Steve Dickson <steved@redhat.com>
+Date:   Mon Mar 8 11:22:46 2010 -0500
 
+    mountd: fix --manage-gids hang due to int/uint bug
+    
+    A uid or gid should be represented as unsigned, not signed.
+    
+    The conversion to signed here could cause a hang on access by an unknown
+    user to a server running mountd with --manage-gids; such a user is
+    likely to be mapped to 232-1, which may be converted to 231-1 when
+    represented as an int, resulting in a downcall for uid 231-1, hence the
+    original rpc hanging forever waiting for a cache downcall for 232-1.
+    
+    Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
+commit 84346b7d7e69c113d6dbf03f2646a47b0e74a6b8
+Author: Steve Dickson <steved@redhat.com>
+Date:   Mon Mar 8 10:24:44 2010 -0500
 
-TODO:
+    Use authunix_create() instead of authsys_create() to fix regression.
+    
+    Commit 409b8 introduced a regression when the --disable-tirpc
+    configuration flag is set. The authsys_create() interface, which
+    was introduced, does not exist in the legacy glibc library.
+    
+    Since the authsys_create() interface is a redefined of the
+    authunix_create() interface, which is defined in glibc, using
+    authunix_create() resolves the regression,
+    
+    Acked-by: Jeff Layton <jlayton@redhat.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-- allow exportfs to modify rmtab file
-- make sure kernel never gets two clients with same IP address
-    - possible kernel should reject
-    - needs to be some way to lookup client in kernel by IP address
-- maybe get kernel to do case-insensitive comparisons on client names
-- remove unused clients from kernel
+commit 409b89cc7106154780400c6b2bdce46bc9d5db4b
+Author: Jeff Layton <jlayton@redhat.com>
+Date:   Mon Mar 1 08:07:34 2010 -0500
 
-- change etab to xtab and xtab to xtab.active
+    nfs-utils: add and use nfs_authsys_create
+    
+    The current mount, umount and showmount code uses
+    authunix_create_default to get an auth handle. The one provided by glibc
+    returned a truncated list of groups when there were more than 16 groups.
+    libtirpc however currently does an abort() in this case, which causes
+    the program to crash and dump core.
+    
+    nfs-utils just uses these auth handles for the MNT protocol, so the
+    group list doesn't make a lot of difference here. Add a new function
+    that creates an auth handle with a supplemental gids list that consists
+    only of the primary gid. Have nfs-utils use that function anywhere that
+    it currently uses authunix_create_default. Also, have the caller
+    properly check for a NULL return from that function.
+    
+    Signed-off-by: Jeff Layton <jlayton@redhat.com>
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-- timestamp and/or statd-stamp in rmtab for removing old entries.
+commit 9c8c2cd50d3cf0316c2a1bdf6cb9efc7e1a20be9
+Author: Trond Myklebust <Trond.Myklebust@netapp.com>
+Date:   Mon Mar 1 07:37:49 2010 -0500
 
-Mon Oct 18 11:48:07 1999  H.J. Lu <hjl@lucon.org>
+    Fix a typo in commit 6d5ac3fa (nfsd: Disble NFS 4.1 functionality by
+    default).
+    
+    We did not really intend to make NFSv4.0 support conditional on NFSv4.1
+    being enabled.
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
 
-       * linux-nfs: New directory.
-       * linux-nfs/ChangeLog: Moved from ..
-       * linux-nfs/INSTALL: Likewise.
-       * linux-nfs/KNOWNBUGS: Likewise.
-       * linux-nfs/NEW: Likewise.
-       * linux-nfs/README: Likewise.
-       * linux-nfs/THANKS: Likewise.
-       * linux-nfs/TODO: Likewise.
+commit 639b63394c6dd66e06423bfe810366277955c570
+Author: Steve Dickson <steved@redhat.com>
+Date:   Thu Feb 18 07:35:00 2010 -0500
 
-       * Starting from knfsd 1.4.7.
+    Release 1.2.2
+    
+    Signed-off-by: Steve Dickson <steved@redhat.com>
diff --git a/Makefile.in b/Makefile.in
new file mode 100644 (file)
index 0000000..bfb4d36
--- /dev/null
@@ -0,0 +1,826 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = .
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in $(top_srcdir)/configure COPYING \
+       ChangeLog INSTALL NEWS compile config.guess config.sub depcomp \
+       install-sh ltmain.sh missing
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/aclocal/bsdsignals.m4 \
+       $(top_srcdir)/aclocal/ipv6.m4 \
+       $(top_srcdir)/aclocal/kerberos5.m4 \
+       $(top_srcdir)/aclocal/libblkid.m4 \
+       $(top_srcdir)/aclocal/libcap.m4 \
+       $(top_srcdir)/aclocal/libevent.m4 \
+       $(top_srcdir)/aclocal/libnfsidmap.m4 \
+       $(top_srcdir)/aclocal/librpcsecgss.m4 \
+       $(top_srcdir)/aclocal/libtirpc.m4 \
+       $(top_srcdir)/aclocal/libtool.m4 \
+       $(top_srcdir)/aclocal/ltoptions.m4 \
+       $(top_srcdir)/aclocal/ltsugar.m4 \
+       $(top_srcdir)/aclocal/ltversion.m4 \
+       $(top_srcdir)/aclocal/lt~obsolete.m4 \
+       $(top_srcdir)/aclocal/nfs-utils.m4 \
+       $(top_srcdir)/aclocal/rpcsec_vers.m4 \
+       $(top_srcdir)/aclocal/tcp-wrappers.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/support/include/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir dist dist-all distcheck
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  { test ! -d "$(distdir)" \
+    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+         && rm -fr "$(distdir)"; }; }
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = -I aclocal
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_CFLAGS = @AM_CFLAGS@
+AM_CPPFLAGS = @AM_CPPFLAGS@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_FOR_BUILD = @CC_FOR_BUILD@
+CFLAGS = @CFLAGS@
+CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+GSSD = @GSSD@
+GSSGLUE_CFLAGS = @GSSGLUE_CFLAGS@
+GSSGLUE_LIBS = @GSSGLUE_LIBS@
+HAVE_LIBWRAP = @HAVE_LIBWRAP@
+HAVE_TCP_WRAPPER = @HAVE_TCP_WRAPPER@
+IDMAPD = @IDMAPD@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+K5VERS = @K5VERS@
+KRBCFLAGS = @KRBCFLAGS@
+KRBDIR = @KRBDIR@
+KRBLDFLAGS = @KRBLDFLAGS@
+KRBLIBS = @KRBLIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@
+LIBBLKID = @LIBBLKID@
+LIBBSD = @LIBBSD@
+LIBCAP = @LIBCAP@
+LIBCRYPT = @LIBCRYPT@
+LIBNSL = @LIBNSL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBSOCKET = @LIBSOCKET@
+LIBTOOL = @LIBTOOL@
+LIBWRAP = @LIBWRAP@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+RANLIB = @RANLIB@
+RELEASE = @RELEASE@
+RPCGEN_PATH = @RPCGEN_PATH@
+RPCSECGSS_CFLAGS = @RPCSECGSS_CFLAGS@
+RPCSECGSS_LIBS = @RPCSECGSS_LIBS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+SVCGSSD = @SVCGSSD@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+enable_gss = @enable_gss@
+enable_ipv6 = @enable_ipv6@
+enable_mountconfig = @enable_mountconfig@
+enable_nfsv3 = @enable_nfsv3@
+enable_nfsv4 = @enable_nfsv4@
+enable_nfsv41 = @enable_nfsv41@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+kprefix = @kprefix@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+mountfile = @mountfile@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+startstatd = @startstatd@
+statduser = @statduser@
+statedir = @statedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = foreign
+SUBDIRS = tools support utils linux-nfs tests
+MAINTAINERCLEANFILES = Makefile.in
+EXTRA_DIST = \
+       autogen.sh \
+       \
+       debian/changelog \
+       debian/control \
+       debian/copyright \
+       debian/etc.exports \
+       debian/idmapd.conf \
+       debian/nfs-common.conffiles \
+       debian/nfs-common.default \
+       debian/nfs-common.dirs \
+       debian/nfs-common.files \
+       debian/nfs-common.init \
+       debian/nfs-common.install \
+       debian/nfs-common.postinst \
+       debian/nfs-common.postrm \
+       debian/nfs-common.prerm \
+       debian/nfs-kernel-server.NEWS \
+       debian/nfs-kernel-server.conffiles \
+       debian/nfs-kernel-server.default \
+       debian/nfs-kernel-server.dirs \
+       debian/nfs-kernel-server.init \
+       debian/nfs-kernel-server.postinst \
+       debian/nfs-kernel-server.postrm \
+       debian/nfs-kernel-server.prerm \
+       debian/nhfsstone.dirs \
+       debian/nhfsstone.files \
+       debian/nhfsstone.postinst \
+       debian/nhfsstone.prerm \
+       debian/rules \
+       \
+       aclocal/bsdsignals.m4 \
+       aclocal/nfs-utils.m4 \
+       aclocal/kerberos5.m4 \
+       aclocal/tcp-wrappers.m4 \
+       aclocal/libtirpc.m4 \
+       aclocal/libevent.m4 \
+       aclocal/libnfsidmap.m4 \
+       aclocal/rpcsec_vers.m4 \
+       aclocal/ipv6.m4
+
+all: all-recursive
+
+.SUFFIXES:
+am--refresh:
+       @:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
+             $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
+               && exit 0; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           echo ' $(SHELL) ./config.status'; \
+           $(SHELL) ./config.status;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+       $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+       $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool config.lt
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       $(am__remove_distdir)
+       test -d "$(distdir)" || mkdir "$(distdir)"
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+       -test -n "$(am__skip_mode_fix)" \
+       || find "$(distdir)" -type d ! -perm -755 \
+               -exec chmod u+rwx,go+rx {} \; -o \
+         ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+         ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+         ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+       || chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+       tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+       $(am__remove_distdir)
+
+dist-bzip2: distdir
+       tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+       $(am__remove_distdir)
+
+dist-lzma: distdir
+       tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+       $(am__remove_distdir)
+
+dist-xz: distdir
+       tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
+       $(am__remove_distdir)
+
+dist-tarZ: distdir
+       tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+       $(am__remove_distdir)
+
+dist-shar: distdir
+       shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+       $(am__remove_distdir)
+
+dist-zip: distdir
+       -rm -f $(distdir).zip
+       zip -rq $(distdir).zip $(distdir)
+       $(am__remove_distdir)
+
+dist dist-all: distdir
+       tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+       $(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+       case '$(DIST_ARCHIVES)' in \
+       *.tar.gz*) \
+         GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+       *.tar.bz2*) \
+         bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+       *.tar.lzma*) \
+         lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+       *.tar.xz*) \
+         xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+       *.tar.Z*) \
+         uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+       *.shar.gz*) \
+         GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+       *.zip*) \
+         unzip $(distdir).zip ;;\
+       esac
+       chmod -R a-w $(distdir); chmod a+w $(distdir)
+       mkdir $(distdir)/_build
+       mkdir $(distdir)/_inst
+       chmod a-w $(distdir)
+       test -d $(distdir)/_build || exit 0; \
+       dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+         && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+         && am__cwd=`pwd` \
+         && $(am__cd) $(distdir)/_build \
+         && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+           $(DISTCHECK_CONFIGURE_FLAGS) \
+         && $(MAKE) $(AM_MAKEFLAGS) \
+         && $(MAKE) $(AM_MAKEFLAGS) dvi \
+         && $(MAKE) $(AM_MAKEFLAGS) check \
+         && $(MAKE) $(AM_MAKEFLAGS) install \
+         && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+         && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+         && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+               distuninstallcheck \
+         && chmod -R a-w "$$dc_install_base" \
+         && ({ \
+              (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+                   distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+             } || { rm -rf "$$dc_destdir"; exit 1; }) \
+         && rm -rf "$$dc_destdir" \
+         && $(MAKE) $(AM_MAKEFLAGS) dist \
+         && rm -rf $(DIST_ARCHIVES) \
+         && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+         && cd "$$am__cwd" \
+         || exit 1
+       $(am__remove_distdir)
+       @(echo "$(distdir) archives ready for distribution: "; \
+         list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+         sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+       @$(am__cd) '$(distuninstallcheck_dir)' \
+       && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+          || { echo "ERROR: files left after uninstall:" ; \
+               if test -n "$(DESTDIR)"; then \
+                 echo "  (check DESTDIR support)"; \
+               fi ; \
+               $(distuninstallcheck_listfiles) ; \
+               exit 1; } >&2
+distcleancheck: distclean
+       @if test '$(srcdir)' = . ; then \
+         echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+         exit 1 ; \
+       fi
+       @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+         || { echo "ERROR: files left in build directory after distclean:" ; \
+              $(distcleancheck_listfiles) ; \
+              exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool \
+       distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+       @$(NORMAL_INSTALL)
+       $(MAKE) $(AM_MAKEFLAGS) install-data-hook
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+       -rm -rf $(top_srcdir)/autom4te.cache
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+       @$(NORMAL_INSTALL)
+       $(MAKE) $(AM_MAKEFLAGS) uninstall-hook
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+       install-am install-data-am install-strip tags-recursive \
+       uninstall-am
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am am--refresh check check-am clean clean-generic \
+       clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
+       dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
+       distcheck distclean distclean-generic distclean-libtool \
+       distclean-tags distcleancheck distdir distuninstallcheck dvi \
+       dvi-am html html-am info info-am install install-am \
+       install-data install-data-am install-data-hook install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       installdirs-am maintainer-clean maintainer-clean-generic \
+       mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+       ps ps-am tags tags-recursive uninstall uninstall-am \
+       uninstall-hook
+
+
+install-data-hook:
+       if [ ! -d $(DESTDIR)$(statedir) ]; then mkdir -p $(DESTDIR)$(statedir); fi
+       touch $(DESTDIR)$(statedir)/xtab; chmod 644 $(DESTDIR)$(statedir)/xtab
+       touch $(DESTDIR)$(statedir)/etab; chmod 644 $(DESTDIR)$(statedir)/etab
+       touch $(DESTDIR)$(statedir)/rmtab; chmod 644 $(DESTDIR)$(statedir)/rmtab
+       mkdir -p $(DESTDIR)$(statedir)/sm $(DESTDIR)$(statedir)/sm.bak
+       touch $(DESTDIR)$(statedir)/state
+       chmod go-rwx $(DESTDIR)$(statedir)/sm $(DESTDIR)$(statedir)/sm.bak $(DESTDIR)$(statedir)/state
+       -chown $(statduser) $(DESTDIR)$(statedir)/sm $(DESTDIR)$(statedir)/sm.bak $(DESTDIR)$(statedir)/state
+
+uninstall-hook:
+       rm $(DESTDIR)$(statedir)/xtab
+       rm $(DESTDIR)$(statedir)/etab
+       rm $(DESTDIR)$(statedir)/rmtab
+       rm $(DESTDIR)$(statedir)/state
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644 (file)
index 0000000..7e0274d
--- /dev/null
@@ -0,0 +1,1199 @@
+# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.65],,
+[m4_warning([this file was generated for autoconf 2.65.
+You have another version of autoconf.  It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
+
+# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
+# 
+# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
+#
+# 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; 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+       AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+       _pkg_min_version=m4_default([$1], [0.9.0])
+       AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+       if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+               AC_MSG_RESULT([yes])
+       else
+               AC_MSG_RESULT([no])
+               PKG_CONFIG=""
+       fi
+               
+fi[]dnl
+])# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists.  Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+#
+# Similar to PKG_CHECK_MODULES, make sure that the first instance of
+# this or PKG_CHECK_MODULES is called, or make sure to call
+# PKG_CHECK_EXISTS manually
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+  m4_ifval([$2], [$2], [:])
+m4_ifvaln([$3], [else
+  $3])dnl
+fi])
+
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+m4_define([_PKG_CONFIG],
+[if test -n "$$1"; then
+    pkg_cv_[]$1="$$1"
+ elif test -n "$PKG_CONFIG"; then
+    PKG_CHECK_EXISTS([$3],
+                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
+                    [pkg_failed=yes])
+ else
+    pkg_failed=untried
+fi[]dnl
+])# _PKG_CONFIG
+
+# _PKG_SHORT_ERRORS_SUPPORTED
+# -----------------------------
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi[]dnl
+])# _PKG_SHORT_ERRORS_SUPPORTED
+
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+#
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+        _PKG_SHORT_ERRORS_SUPPORTED
+        if test $_pkg_short_errors_supported = yes; then
+               $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1`
+        else 
+               $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+       ifelse([$4], , [AC_MSG_ERROR(dnl
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT
+])],
+               [AC_MSG_RESULT([no])
+                $4])
+elif test $pkg_failed = untried; then
+       ifelse([$4], , [AC_MSG_FAILURE(dnl
+[The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])],
+               [$4])
+else
+       $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+       $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+        AC_MSG_RESULT([yes])
+       ifelse([$3], , :, [$3])
+fi[]dnl
+])# PKG_CHECK_MODULES
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.11'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version.  Point them to the right macro.
+m4_if([$1], [1.11.1], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too.  Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.11.1])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL                                            -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 9
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 10
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
+       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
+       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+       [$1], UPC,  [depcc="$UPC"  am_compiler_list=],
+       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                   [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+])
+
+# Generate code to set up dependency tracking.              -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+#serial 5
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named `Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`AS_DIRNAME("$mf")`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running `make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # When using ansi2knr, U may be empty or an underscore; expand it
+    U=`sed -n 's/^U = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`AS_DIRNAME(["$file"])`
+      AS_MKDIR_P([$dirpart/$fdir])
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake.                             -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 16
+
+# This macro actually does too much.  Some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.62])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+             [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+                            [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+                 [_AM_DEPENDENCIES(CC)],
+                 [define([AC_PROG_CC],
+                         defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+                 [_AM_DEPENDENCIES(CXX)],
+                 [define([AC_PROG_CXX],
+                         defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+                 [_AM_DEPENDENCIES(OBJC)],
+                 [define([AC_PROG_OBJC],
+                         defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+])
+
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005, 2008  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless `enable' is passed literally.
+# For symmetry, `disable' may be passed as well.  Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+       [enable], [m4_define([am_maintainer_other], [disable])],
+       [disable], [m4_define([am_maintainer_other], [enable])],
+       [m4_define([am_maintainer_other], [enable])
+        m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles])
+  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+  AC_ARG_ENABLE([maintainer-mode],
+[  --][am_maintainer_other][-maintainer-mode  am_maintainer_other make rules and dependencies not useful
+                         (and sometimes confusing) to the casual installer],
+      [USE_MAINTAINER_MODE=$enableval],
+      [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+  MAINT=$MAINTAINER_MODE_TRUE
+  AC_SUBST([MAINT])dnl
+]
+)
+
+AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
+
+# Check to see how 'make' treats includes.                 -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2009  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+       @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 6
+
+# AM_PROG_CC_C_O
+# --------------
+# Like AC_PROG_CC_C_O, but changed for automake.
+AC_DEFUN([AM_PROG_CC_C_O],
+[AC_REQUIRE([AC_PROG_CC_C_O])dnl
+AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+dnl Make sure AC_PROG_CC is never called again, or it will override our
+dnl setting of CC.
+m4_define([AC_PROG_CC],
+          [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
+])
+
+# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 6
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+  [[\\/$]]* | ?:[[\\/]]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling.                     -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2008  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \   ]]*)
+    AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+   if test "$[*]" = "X"; then
+      # -L didn't work.
+      set X `ls -t "$srcdir/configure" conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$[*]" != "X $srcdir/configure conftest.file" \
+      && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+alias in your environment])
+   fi
+
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006, 2008  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball.                            -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+#     tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+#     $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+     [m4_case([$1], [ustar],, [pax],,
+              [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+  case $_am_tool in
+  gnutar)
+    for _am_tar in tar gnutar gtar;
+    do
+      AM_RUN_LOG([$_am_tar --version]) && break
+    done
+    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+    am__untar="$_am_tar -xf -"
+    ;;
+  plaintar)
+    # Must skip GNU tar: if it does not support --format= it doesn't create
+    # ustar tarball either.
+    (tar --version) >/dev/null 2>&1 && continue
+    am__tar='tar chf - "$$tardir"'
+    am__tar_='tar chf - "$tardir"'
+    am__untar='tar xf -'
+    ;;
+  pax)
+    am__tar='pax -L -x $1 -w "$$tardir"'
+    am__tar_='pax -L -x $1 -w "$tardir"'
+    am__untar='pax -r'
+    ;;
+  cpio)
+    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+    am__untar='cpio -i -H $1 -d'
+    ;;
+  none)
+    am__tar=false
+    am__tar_=false
+    am__untar=false
+    ;;
+  esac
+
+  # If the value was cached, stop now.  We just wanted to have am__tar
+  # and am__untar set.
+  test -n "${am_cv_prog_tar_$1}" && break
+
+  # tar/untar a dummy directory, and stop if the command works
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  echo GrepMe > conftest.dir/file
+  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+  rm -rf conftest.dir
+  if test -s conftest.tar; then
+    AM_RUN_LOG([$am__untar <conftest.tar])
+    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+  fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([aclocal/bsdsignals.m4])
+m4_include([aclocal/ipv6.m4])
+m4_include([aclocal/kerberos5.m4])
+m4_include([aclocal/libblkid.m4])
+m4_include([aclocal/libcap.m4])
+m4_include([aclocal/libevent.m4])
+m4_include([aclocal/libnfsidmap.m4])
+m4_include([aclocal/librpcsecgss.m4])
+m4_include([aclocal/libtirpc.m4])
+m4_include([aclocal/libtool.m4])
+m4_include([aclocal/ltoptions.m4])
+m4_include([aclocal/ltsugar.m4])
+m4_include([aclocal/ltversion.m4])
+m4_include([aclocal/lt~obsolete.m4])
+m4_include([aclocal/nfs-utils.m4])
+m4_include([aclocal/rpcsec_vers.m4])
+m4_include([aclocal/tcp-wrappers.m4])
diff --git a/aclocal/libtool.m4 b/aclocal/libtool.m4
new file mode 100644 (file)
index 0000000..671cde1
--- /dev/null
@@ -0,0 +1,7360 @@
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+#
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008 Free Software Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+m4_define([_LT_COPYING], [dnl
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008 Free Software Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+#   This file is part of GNU Libtool.
+#
+# GNU Libtool 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; either version 2 of
+# the License, or (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+])
+
+# serial 56 LT_INIT
+
+
+# LT_PREREQ(VERSION)
+# ------------------
+# Complain and exit if this libtool version is less that VERSION.
+m4_defun([LT_PREREQ],
+[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
+       [m4_default([$3],
+                  [m4_fatal([Libtool version $1 or higher is required],
+                            63)])],
+       [$2])])
+
+
+# _LT_CHECK_BUILDDIR
+# ------------------
+# Complain if the absolute build directory name contains unusual characters
+m4_defun([_LT_CHECK_BUILDDIR],
+[case `pwd` in
+  *\ * | *\    *)
+    AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
+esac
+])
+
+
+# LT_INIT([OPTIONS])
+# ------------------
+AC_DEFUN([LT_INIT],
+[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+AC_BEFORE([$0], [LT_LANG])dnl
+AC_BEFORE([$0], [LT_OUTPUT])dnl
+AC_BEFORE([$0], [LTDL_INIT])dnl
+m4_require([_LT_CHECK_BUILDDIR])dnl
+
+dnl Autoconf doesn't catch unexpanded LT_ macros by default:
+m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
+m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
+dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
+dnl unless we require an AC_DEFUNed macro:
+AC_REQUIRE([LTOPTIONS_VERSION])dnl
+AC_REQUIRE([LTSUGAR_VERSION])dnl
+AC_REQUIRE([LTVERSION_VERSION])dnl
+AC_REQUIRE([LTOBSOLETE_VERSION])dnl
+m4_require([_LT_PROG_LTMAIN])dnl
+
+dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+_LT_SETUP
+
+# Only expand once:
+m4_define([LT_INIT])
+])# LT_INIT
+
+# Old names:
+AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
+AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
+dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+m4_defun([_LT_CC_BASENAME],
+[for cc_temp in $1""; do
+  case $cc_temp in
+    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+])
+
+
+# _LT_FILEUTILS_DEFAULTS
+# ----------------------
+# It is okay to use these file commands and assume they have been set
+# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
+m4_defun([_LT_FILEUTILS_DEFAULTS],
+[: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+])# _LT_FILEUTILS_DEFAULTS
+
+
+# _LT_SETUP
+# ---------
+m4_defun([_LT_SETUP],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+_LT_DECL([], [host_alias], [0], [The host system])dnl
+_LT_DECL([], [host], [0])dnl
+_LT_DECL([], [host_os], [0])dnl
+dnl
+_LT_DECL([], [build_alias], [0], [The build system])dnl
+_LT_DECL([], [build], [0])dnl
+_LT_DECL([], [build_os], [0])dnl
+dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+dnl
+AC_REQUIRE([AC_PROG_LN_S])dnl
+test -z "$LN_S" && LN_S="ln -s"
+_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
+dnl
+AC_REQUIRE([LT_CMD_MAX_LEN])dnl
+_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
+_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
+dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_CMD_RELOAD])dnl
+m4_require([_LT_CHECK_MAGIC_METHOD])dnl
+m4_require([_LT_CMD_OLD_ARCHIVE])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+
+_LT_CONFIG_LIBTOOL_INIT([
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+])
+if test -n "${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+
+_LT_CHECK_OBJDIR
+
+m4_require([_LT_TAG_COMPILER])dnl
+_LT_PROG_ECHO_BACKSLASH
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([["`\\]]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    _LT_PATH_MAGIC
+  fi
+  ;;
+esac
+
+# Use C for the default configuration in the libtool script
+LT_SUPPORTED_TAG([CC])
+_LT_LANG_C_CONFIG
+_LT_LANG_DEFAULT_CONFIG
+_LT_CONFIG_COMMANDS
+])# _LT_SETUP
+
+
+# _LT_PROG_LTMAIN
+# ---------------
+# Note that this code is called both from `configure', and `config.status'
+# now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
+# `config.status' has no value for ac_aux_dir unless we are using Automake,
+# so we pass a copy along to make sure it has a sensible value anyway.
+m4_defun([_LT_PROG_LTMAIN],
+[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
+_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
+ltmain="$ac_aux_dir/ltmain.sh"
+])# _LT_PROG_LTMAIN
+
+
+## ------------------------------------- ##
+## Accumulate code for creating libtool. ##
+## ------------------------------------- ##
+
+# So that we can recreate a full libtool script including additional
+# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
+# in macros and then make a single call at the end using the `libtool'
+# label.
+
+
+# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
+# ----------------------------------------
+# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL_INIT],
+[m4_ifval([$1],
+          [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
+                     [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_INIT])
+
+
+# _LT_CONFIG_LIBTOOL([COMMANDS])
+# ------------------------------
+# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL],
+[m4_ifval([$1],
+          [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
+                     [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
+
+
+# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
+# -----------------------------------------------------
+m4_defun([_LT_CONFIG_SAVE_COMMANDS],
+[_LT_CONFIG_LIBTOOL([$1])
+_LT_CONFIG_LIBTOOL_INIT([$2])
+])
+
+
+# _LT_FORMAT_COMMENT([COMMENT])
+# -----------------------------
+# Add leading comment marks to the start of each line, and a trailing
+# full-stop to the whole comment if one is not present already.
+m4_define([_LT_FORMAT_COMMENT],
+[m4_ifval([$1], [
+m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
+              [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
+)])
+
+
+
+## ------------------------ ##
+## FIXME: Eliminate VARNAME ##
+## ------------------------ ##
+
+
+# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
+# -------------------------------------------------------------------
+# CONFIGNAME is the name given to the value in the libtool script.
+# VARNAME is the (base) name used in the configure script.
+# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
+# VARNAME.  Any other value will be used directly.
+m4_define([_LT_DECL],
+[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
+    [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
+       [m4_ifval([$1], [$1], [$2])])
+    lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
+    m4_ifval([$4],
+       [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
+    lt_dict_add_subkey([lt_decl_dict], [$2],
+       [tagged?], [m4_ifval([$5], [yes], [no])])])
+])
+
+
+# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
+# --------------------------------------------------------
+m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
+
+
+# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_tag_varnames],
+[_lt_decl_filter([tagged?], [yes], $@)])
+
+
+# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
+# ---------------------------------------------------------
+m4_define([_lt_decl_filter],
+[m4_case([$#],
+  [0], [m4_fatal([$0: too few arguments: $#])],
+  [1], [m4_fatal([$0: too few arguments: $#: $1])],
+  [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
+  [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
+  [lt_dict_filter([lt_decl_dict], $@)])[]dnl
+])
+
+
+# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
+# --------------------------------------------------
+m4_define([lt_decl_quote_varnames],
+[_lt_decl_filter([value], [1], $@)])
+
+
+# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_dquote_varnames],
+[_lt_decl_filter([value], [2], $@)])
+
+
+# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_varnames_tagged],
+[m4_assert([$# <= 2])dnl
+_$0(m4_quote(m4_default([$1], [[, ]])),
+    m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
+    m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
+m4_define([_lt_decl_varnames_tagged],
+[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
+
+
+# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_all_varnames],
+[_$0(m4_quote(m4_default([$1], [[, ]])),
+     m4_if([$2], [],
+          m4_quote(lt_decl_varnames),
+       m4_quote(m4_shift($@))))[]dnl
+])
+m4_define([_lt_decl_all_varnames],
+[lt_join($@, lt_decl_varnames_tagged([$1],
+                       lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
+])
+
+
+# _LT_CONFIG_STATUS_DECLARE([VARNAME])
+# ------------------------------------
+# Quote a variable value, and forward it to `config.status' so that its
+# declaration there will have the same value as in `configure'.  VARNAME
+# must have a single quote delimited value for this to work.
+m4_define([_LT_CONFIG_STATUS_DECLARE],
+[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`'])
+
+
+# _LT_CONFIG_STATUS_DECLARATIONS
+# ------------------------------
+# We delimit libtool config variables with single quotes, so when
+# we write them to config.status, we have to be sure to quote all
+# embedded single quotes properly.  In configure, this macro expands
+# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
+#
+#    <var>='`$ECHO "X$<var>" | $Xsed -e "$delay_single_quote_subst"`'
+m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
+    [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAGS
+# ----------------
+# Output comment and list of tags supported by the script
+m4_defun([_LT_LIBTOOL_TAGS],
+[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
+available_tags="_LT_TAGS"dnl
+])
+
+
+# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
+# -----------------------------------
+# Extract the dictionary values for VARNAME (optionally with TAG) and
+# expand to a commented shell variable setting:
+#
+#    # Some comment about what VAR is for.
+#    visible_name=$lt_internal_name
+m4_define([_LT_LIBTOOL_DECLARE],
+[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
+                                          [description])))[]dnl
+m4_pushdef([_libtool_name],
+    m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
+m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
+    [0], [_libtool_name=[$]$1],
+    [1], [_libtool_name=$lt_[]$1],
+    [2], [_libtool_name=$lt_[]$1],
+    [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
+m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
+])
+
+
+# _LT_LIBTOOL_CONFIG_VARS
+# -----------------------
+# Produce commented declarations of non-tagged libtool config variables
+# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
+# script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
+# section) are produced by _LT_LIBTOOL_TAG_VARS.
+m4_defun([_LT_LIBTOOL_CONFIG_VARS],
+[m4_foreach([_lt_var],
+    m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
+    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAG_VARS(TAG)
+# -------------------------
+m4_define([_LT_LIBTOOL_TAG_VARS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
+    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
+
+
+# _LT_TAGVAR(VARNAME, [TAGNAME])
+# ------------------------------
+m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
+
+
+# _LT_CONFIG_COMMANDS
+# -------------------
+# Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
+# variables for single and double quote escaping we saved from calls
+# to _LT_DECL, we can put quote escaped variables declarations
+# into `config.status', and then the shell code to quote escape them in
+# for loops in `config.status'.  Finally, any additional code accumulated
+# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
+m4_defun([_LT_CONFIG_COMMANDS],
+[AC_PROVIDE_IFELSE([LT_OUTPUT],
+       dnl If the libtool generation code has been placed in $CONFIG_LT,
+       dnl instead of duplicating it all over again into config.status,
+       dnl then we will have config.status run $CONFIG_LT later, so it
+       dnl needs to know what name is stored there:
+        [AC_CONFIG_COMMANDS([libtool],
+            [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
+    dnl If the libtool generation code is destined for config.status,
+    dnl expand the accumulated commands and init code now:
+    [AC_CONFIG_COMMANDS([libtool],
+        [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
+])#_LT_CONFIG_COMMANDS
+
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
+[
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+_LT_CONFIG_STATUS_DECLARATIONS
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# Quote evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_quote_varnames); do
+    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+    *[[\\\\\\\`\\"\\\$]]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Double-quote double-evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_dquote_varnames); do
+    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+    *[[\\\\\\\`\\"\\\$]]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Fix-up fallback echo if it was mangled by the above quoting rules.
+case \$lt_ECHO in
+*'\\\[$]0 --fallback-echo"')dnl "
+  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\`
+  ;;
+esac
+
+_LT_OUTPUT_LIBTOOL_INIT
+])
+
+
+# LT_OUTPUT
+# ---------
+# This macro allows early generation of the libtool script (before
+# AC_OUTPUT is called), incase it is used in configure for compilation
+# tests.
+AC_DEFUN([LT_OUTPUT],
+[: ${CONFIG_LT=./config.lt}
+AC_MSG_NOTICE([creating $CONFIG_LT])
+cat >"$CONFIG_LT" <<_LTEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate a libtool stub with the current configuration.
+
+lt_cl_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AS_SHELL_SANITIZE
+_AS_PREPARE
+
+exec AS_MESSAGE_FD>&1
+exec AS_MESSAGE_LOG_FD>>config.log
+{
+  echo
+  AS_BOX([Running $as_me.])
+} >&AS_MESSAGE_LOG_FD
+
+lt_cl_help="\
+\`$as_me' creates a local libtool stub from the current configuration,
+for use in further configure time tests before the real libtool is
+generated.
+
+Usage: $[0] [[OPTIONS]]
+
+  -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
+
+Report bugs to <bug-libtool@gnu.org>."
+
+lt_cl_version="\
+m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
+m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
+configured by $[0], generated by m4_PACKAGE_STRING.
+
+Copyright (C) 2008 Free Software Foundation, Inc.
+This config.lt script is free software; the Free Software Foundation
+gives unlimited permision to copy, distribute and modify it."
+
+while test $[#] != 0
+do
+  case $[1] in
+    --version | --v* | -V )
+      echo "$lt_cl_version"; exit 0 ;;
+    --help | --h* | -h )
+      echo "$lt_cl_help"; exit 0 ;;
+    --debug | --d* | -d )
+      debug=: ;;
+    --quiet | --q* | --silent | --s* | -q )
+      lt_cl_silent=: ;;
+
+    -*) AC_MSG_ERROR([unrecognized option: $[1]
+Try \`$[0] --help' for more information.]) ;;
+
+    *) AC_MSG_ERROR([unrecognized argument: $[1]
+Try \`$[0] --help' for more information.]) ;;
+  esac
+  shift
+done
+
+if $lt_cl_silent; then
+  exec AS_MESSAGE_FD>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AC_MSG_NOTICE([creating $ofile])
+_LT_OUTPUT_LIBTOOL_COMMANDS
+AS_EXIT(0)
+_LTEOF
+chmod +x "$CONFIG_LT"
+
+# configure is writing to config.log, but config.lt does its own redirection,
+# appending to config.log, which fails on DOS, as config.log is still kept
+# open by configure.  Here we exec the FD to /dev/null, effectively closing
+# config.log, so it can be properly (re)opened and appended to by config.lt.
+if test "$no_create" != yes; then
+  lt_cl_success=:
+  test "$silent" = yes &&
+    lt_config_lt_args="$lt_config_lt_args --quiet"
+  exec AS_MESSAGE_LOG_FD>/dev/null
+  $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+  exec AS_MESSAGE_LOG_FD>>config.log
+  $lt_cl_success || AS_EXIT(1)
+fi
+])# LT_OUTPUT
+
+
+# _LT_CONFIG(TAG)
+# ---------------
+# If TAG is the built-in tag, create an initial libtool script with a
+# default configuration from the untagged config vars.  Otherwise add code
+# to config.status for appending the configuration named by TAG from the
+# matching tagged config vars.
+m4_defun([_LT_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_CONFIG_SAVE_COMMANDS([
+  m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
+  m4_if(_LT_TAG, [C], [
+    # See if we are running on zsh, and set the options which allow our
+    # commands through without removal of \ escapes.
+    if test -n "${ZSH_VERSION+set}" ; then
+      setopt NO_GLOB_SUBST
+    fi
+
+    cfgfile="${ofile}T"
+    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+    $RM "$cfgfile"
+
+    cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+_LT_COPYING
+_LT_LIBTOOL_TAGS
+
+# ### BEGIN LIBTOOL CONFIG
+_LT_LIBTOOL_CONFIG_VARS
+_LT_LIBTOOL_TAG_VARS
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+  case $host_os in
+  aix3*)
+    cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+_LT_EOF
+    ;;
+  esac
+
+  _LT_PROG_LTMAIN
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+    || (rm -f "$cfgfile"; exit 1)
+
+  _LT_PROG_XSI_SHELLFNS
+
+  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+    || (rm -f "$cfgfile"; exit 1)
+
+  mv -f "$cfgfile" "$ofile" ||
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+],
+[cat <<_LT_EOF >> "$ofile"
+
+dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
+dnl in a comment (ie after a #).
+# ### BEGIN LIBTOOL TAG CONFIG: $1
+_LT_LIBTOOL_TAG_VARS(_LT_TAG)
+# ### END LIBTOOL TAG CONFIG: $1
+_LT_EOF
+])dnl /m4_if
+],
+[m4_if([$1], [], [
+    PACKAGE='$PACKAGE'
+    VERSION='$VERSION'
+    TIMESTAMP='$TIMESTAMP'
+    RM='$RM'
+    ofile='$ofile'], [])
+])dnl /_LT_CONFIG_SAVE_COMMANDS
+])# _LT_CONFIG
+
+
+# LT_SUPPORTED_TAG(TAG)
+# ---------------------
+# Trace this macro to discover what tags are supported by the libtool
+# --tag option, using:
+#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
+AC_DEFUN([LT_SUPPORTED_TAG], [])
+
+
+# C support is built-in for now
+m4_define([_LT_LANG_C_enabled], [])
+m4_define([_LT_TAGS], [])
+
+
+# LT_LANG(LANG)
+# -------------
+# Enable libtool support for the given language if not already enabled.
+AC_DEFUN([LT_LANG],
+[AC_BEFORE([$0], [LT_OUTPUT])dnl
+m4_case([$1],
+  [C],                 [_LT_LANG(C)],
+  [C++],               [_LT_LANG(CXX)],
+  [Java],              [_LT_LANG(GCJ)],
+  [Fortran 77],                [_LT_LANG(F77)],
+  [Fortran],           [_LT_LANG(FC)],
+  [Windows Resource],  [_LT_LANG(RC)],
+  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
+    [_LT_LANG($1)],
+    [m4_fatal([$0: unsupported language: "$1"])])])dnl
+])# LT_LANG
+
+
+# _LT_LANG(LANGNAME)
+# ------------------
+m4_defun([_LT_LANG],
+[m4_ifdef([_LT_LANG_]$1[_enabled], [],
+  [LT_SUPPORTED_TAG([$1])dnl
+  m4_append([_LT_TAGS], [$1 ])dnl
+  m4_define([_LT_LANG_]$1[_enabled], [])dnl
+  _LT_LANG_$1_CONFIG($1)])dnl
+])# _LT_LANG
+
+
+# _LT_LANG_DEFAULT_CONFIG
+# -----------------------
+m4_defun([_LT_LANG_DEFAULT_CONFIG],
+[AC_PROVIDE_IFELSE([AC_PROG_CXX],
+  [LT_LANG(CXX)],
+  [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_F77],
+  [LT_LANG(F77)],
+  [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_FC],
+  [LT_LANG(FC)],
+  [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
+
+dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
+dnl pulling things in needlessly.
+AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+  [LT_LANG(GCJ)],
+  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+    [LT_LANG(GCJ)],
+    [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
+      [LT_LANG(GCJ)],
+      [m4_ifdef([AC_PROG_GCJ],
+       [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
+       m4_ifdef([A][M_PROG_GCJ],
+       [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
+       m4_ifdef([LT_PROG_GCJ],
+       [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
+
+AC_PROVIDE_IFELSE([LT_PROG_RC],
+  [LT_LANG(RC)],
+  [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
+])# _LT_LANG_DEFAULT_CONFIG
+
+# Obsolete macros:
+AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
+AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
+AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
+AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
+dnl AC_DEFUN([AC_LIBTOOL_F77], [])
+dnl AC_DEFUN([AC_LIBTOOL_FC], [])
+dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
+
+
+# _LT_TAG_COMPILER
+# ----------------
+m4_defun([_LT_TAG_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
+_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
+_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
+_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_TAG_COMPILER
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+m4_defun([_LT_COMPILER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+])# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+m4_defun([_LT_LINKER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+])# _LT_LINKER_BOILERPLATE
+
+# _LT_REQUIRED_DARWIN_CHECKS
+# -------------------------
+m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
+  case $host_os in
+    rhapsody* | darwin*)
+    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
+    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
+    AC_CHECK_TOOL([LIPO], [lipo], [:])
+    AC_CHECK_TOOL([OTOOL], [otool], [:])
+    AC_CHECK_TOOL([OTOOL64], [otool64], [:])
+    _LT_DECL([], [DSYMUTIL], [1],
+      [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
+    _LT_DECL([], [NMEDIT], [1],
+      [Tool to change global to local symbols on Mac OS X])
+    _LT_DECL([], [LIPO], [1],
+      [Tool to manipulate fat objects and archives on Mac OS X])
+    _LT_DECL([], [OTOOL], [1],
+      [ldd/readelf like tool for Mach-O binaries on Mac OS X])
+    _LT_DECL([], [OTOOL64], [1],
+      [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
+
+    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
+      [lt_cv_apple_cc_single_mod=no
+      if test -z "${LT_MULTI_MODULE}"; then
+       # By default we will add the -single_module flag. You can override
+       # by either setting the environment variable LT_MULTI_MODULE
+       # non-empty at configure time, or by adding -multi_module to the
+       # link flags.
+       rm -rf libconftest.dylib*
+       echo "int foo(void){return 1;}" > conftest.c
+       echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
+       $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+         -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+        _lt_result=$?
+       if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+         lt_cv_apple_cc_single_mod=yes
+       else
+         cat conftest.err >&AS_MESSAGE_LOG_FD
+       fi
+       rm -rf libconftest.dylib*
+       rm -f conftest.*
+      fi])
+    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
+      [lt_cv_ld_exported_symbols_list],
+      [lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+       [lt_cv_ld_exported_symbols_list=yes],
+       [lt_cv_ld_exported_symbols_list=no])
+       LDFLAGS="$save_LDFLAGS"
+    ])
+    case $host_os in
+    rhapsody* | darwin1.[[012]])
+      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+    darwin1.*)
+      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+    darwin*) # darwin 5.x on
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+       10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
+         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+       10.[[012]]*)
+         _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+       10.*)
+         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    else
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    fi
+    if test "$DSYMUTIL" != ":"; then
+      _lt_dsymutil='~$DSYMUTIL $lib || :'
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
+])
+
+
+# _LT_DARWIN_LINKER_FEATURES
+# --------------------------
+# Checks for linker and compiler features on darwin
+m4_defun([_LT_DARWIN_LINKER_FEATURES],
+[
+  m4_require([_LT_REQUIRED_DARWIN_CHECKS])
+  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+  _LT_TAGVAR(hardcode_direct, $1)=no
+  _LT_TAGVAR(hardcode_automatic, $1)=yes
+  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+  _LT_TAGVAR(link_all_deplibs, $1)=yes
+  _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
+  case $cc_basename in
+     ifort*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test "$_lt_dar_can_shared" = "yes"; then
+    output_verbose_link_cmd=echo
+    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+    m4_if([$1], [CXX],
+[   if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+    fi
+],[])
+  else
+  _LT_TAGVAR(ld_shlibs, $1)=no
+  fi
+])
+
+# _LT_SYS_MODULE_PATH_AIX
+# -----------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+m4_defun([_LT_SYS_MODULE_PATH_AIX],
+[m4_require([_LT_DECL_SED])dnl
+AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+       /^0/ {
+           s/^0  *\(.*\)$/\1/
+           p
+       }
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi],[])
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+])# _LT_SYS_MODULE_PATH_AIX
+
+
+# _LT_SHELL_INIT(ARG)
+# -------------------
+m4_define([_LT_SHELL_INIT],
+[ifdef([AC_DIVERSION_NOTICE],
+            [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+        [AC_DIVERT_PUSH(NOTICE)])
+$1
+AC_DIVERT_POP
+])# _LT_SHELL_INIT
+
+
+# _LT_PROG_ECHO_BACKSLASH
+# -----------------------
+# Add some code to the start of the generated configure script which
+# will find an echo command which doesn't interpret backslashes.
+m4_defun([_LT_PROG_ECHO_BACKSLASH],
+[_LT_SHELL_INIT([
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$lt_ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+  ;;
+esac
+
+ECHO=${lt_ECHO-echo}
+if test "X[$]1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X[$]1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
+  # Yippee, $ECHO works!
+  :
+else
+  # Restart under the correct shell.
+  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
+fi
+
+if test "X[$]1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<_LT_EOF
+[$]*
+_LT_EOF
+  exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test -z "$lt_ECHO"; then
+  if test "X${echo_test_string+set}" != Xset; then
+    # find a string as large as possible, as long as the shell can cope with it
+    for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+      # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+      if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
+        { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
+      then
+        break
+      fi
+    done
+  fi
+
+  if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
+     echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
+     test "X$echo_testing_string" = "X$echo_test_string"; then
+    :
+  else
+    # The Solaris, AIX, and Digital Unix default echo programs unquote
+    # backslashes.  This makes it impossible to quote backslashes using
+    #   echo "$something" | sed 's/\\/\\\\/g'
+    #
+    # So, first we look for a working echo in the user's PATH.
+
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for dir in $PATH /usr/ucb; do
+      IFS="$lt_save_ifs"
+      if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+         test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+         echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+         test "X$echo_testing_string" = "X$echo_test_string"; then
+        ECHO="$dir/echo"
+        break
+      fi
+    done
+    IFS="$lt_save_ifs"
+
+    if test "X$ECHO" = Xecho; then
+      # We didn't find a better echo, so look for alternatives.
+      if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
+         echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
+         test "X$echo_testing_string" = "X$echo_test_string"; then
+        # This shell has a builtin print -r that does the trick.
+        ECHO='print -r'
+      elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
+          test "X$CONFIG_SHELL" != X/bin/ksh; then
+        # If we have ksh, try running configure again with it.
+        ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+        export ORIGINAL_CONFIG_SHELL
+        CONFIG_SHELL=/bin/ksh
+        export CONFIG_SHELL
+        exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
+      else
+        # Try using printf.
+        ECHO='printf %s\n'
+        if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
+          echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
+          test "X$echo_testing_string" = "X$echo_test_string"; then
+         # Cool, printf works
+         :
+        elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+            test "X$echo_testing_string" = 'X\t' &&
+            echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+            test "X$echo_testing_string" = "X$echo_test_string"; then
+         CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+         export CONFIG_SHELL
+         SHELL="$CONFIG_SHELL"
+         export SHELL
+         ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
+        elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+            test "X$echo_testing_string" = 'X\t' &&
+            echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+            test "X$echo_testing_string" = "X$echo_test_string"; then
+         ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
+        else
+         # maybe with a smaller string...
+         prev=:
+
+         for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
+           if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
+           then
+             break
+           fi
+           prev="$cmd"
+         done
+
+         if test "$prev" != 'sed 50q "[$]0"'; then
+           echo_test_string=`eval $prev`
+           export echo_test_string
+           exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
+         else
+           # Oops.  We lost completely, so just stick with echo.
+           ECHO=echo
+         fi
+        fi
+      fi
+    fi
+  fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+lt_ECHO=$ECHO
+if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+   lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+fi
+
+AC_SUBST(lt_ECHO)
+])
+_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
+_LT_DECL([], [ECHO], [1],
+    [An echo program that does not interpret backslashes])
+])# _LT_PROG_ECHO_BACKSLASH
+
+
+# _LT_ENABLE_LOCK
+# ---------------
+m4_defun([_LT_ENABLE_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+  [AS_HELP_STRING([--disable-libtool-lock],
+    [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.$ac_objext` in
+      *ELF-32*)
+       HPUX_IA64_MODE="32"
+       ;;
+      *ELF-64*)
+       HPUX_IA64_MODE="64"
+       ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    if test "$lt_cv_prog_gnu_ld" = yes; then
+      case `/usr/bin/file conftest.$ac_objext` in
+       *32-bit*)
+         LD="${LD-ld} -melf32bsmip"
+         ;;
+       *N32*)
+         LD="${LD-ld} -melf32bmipn32"
+         ;;
+       *64-bit*)
+         LD="${LD-ld} -melf64bmip"
+       ;;
+      esac
+    else
+      case `/usr/bin/file conftest.$ac_objext` in
+       *32-bit*)
+         LD="${LD-ld} -32"
+         ;;
+       *N32*)
+         LD="${LD-ld} -n32"
+         ;;
+       *64-bit*)
+         LD="${LD-ld} -64"
+         ;;
+      esac
+    fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.o` in
+      *32-bit*)
+       case $host in
+         x86_64-*kfreebsd*-gnu)
+           LD="${LD-ld} -m elf_i386_fbsd"
+           ;;
+         x86_64-*linux*)
+           LD="${LD-ld} -m elf_i386"
+           ;;
+         ppc64-*linux*|powerpc64-*linux*)
+           LD="${LD-ld} -m elf32ppclinux"
+           ;;
+         s390x-*linux*)
+           LD="${LD-ld} -m elf_s390"
+           ;;
+         sparc64-*linux*)
+           LD="${LD-ld} -m elf32_sparc"
+           ;;
+       esac
+       ;;
+      *64-bit*)
+       case $host in
+         x86_64-*kfreebsd*-gnu)
+           LD="${LD-ld} -m elf_x86_64_fbsd"
+           ;;
+         x86_64-*linux*)
+           LD="${LD-ld} -m elf_x86_64"
+           ;;
+         ppc*-*linux*|powerpc*-*linux*)
+           LD="${LD-ld} -m elf64ppc"
+           ;;
+         s390*-*linux*|s390*-*tpf*)
+           LD="${LD-ld} -m elf64_s390"
+           ;;
+         sparc*-*linux*)
+           LD="${LD-ld} -m elf64_sparc"
+           ;;
+       esac
+       ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+    [AC_LANG_PUSH(C)
+     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+     AC_LANG_POP])
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+sparc*-*solaris*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      *)
+       if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+         LD="${LD-ld} -64"
+       fi
+       ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+esac
+
+need_locks="$enable_libtool_lock"
+])# _LT_ENABLE_LOCK
+
+
+# _LT_CMD_OLD_ARCHIVE
+# -------------------
+m4_defun([_LT_CMD_OLD_ARCHIVE],
+[AC_CHECK_TOOL(AR, ar, false)
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+_LT_DECL([], [AR], [1], [The archiver])
+_LT_DECL([], [AR_FLAGS], [1])
+
+AC_CHECK_TOOL(STRIP, strip, :)
+test -z "$STRIP" && STRIP=:
+_LT_DECL([], [STRIP], [1], [A symbol stripping program])
+
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+test -z "$RANLIB" && RANLIB=:
+_LT_DECL([], [RANLIB], [1],
+    [Commands used to install an old-style archive])
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+_LT_DECL([], [old_postinstall_cmds], [2])
+_LT_DECL([], [old_postuninstall_cmds], [2])
+_LT_TAGDECL([], [old_archive_cmds], [2],
+    [Commands used to build an old-style archive])
+])# _LT_CMD_OLD_ARCHIVE
+
+
+# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#              [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([_LT_COMPILER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$3"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       $2=yes
+     fi
+   fi
+   $RM conftest*
+])
+
+if test x"[$]$2" = xyes; then
+    m4_if([$5], , :, [$5])
+else
+    m4_if([$6], , :, [$6])
+fi
+])# _LT_COMPILER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
+
+
+# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#                  [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------
+# Check whether the given linker option works
+AC_DEFUN([_LT_LINKER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $3"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&AS_MESSAGE_LOG_FD
+       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         $2=yes
+       fi
+     else
+       $2=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+    m4_if([$4], , :, [$4])
+else
+    m4_if([$5], , :, [$5])
+fi
+])# _LT_LINKER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
+
+
+# LT_CMD_MAX_LEN
+#---------------
+AC_DEFUN([LT_CMD_MAX_LEN],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+  i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw* | cegcc*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536      # usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[        ]]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8 ; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
+                = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
+             test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+  AC_MSG_RESULT(none)
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+_LT_DECL([], [max_cmd_len], [0],
+    [What is the maximum length of a command?])
+])# LT_CMD_MAX_LEN
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
+
+
+# _LT_HEADER_DLFCN
+# ----------------
+m4_defun([_LT_HEADER_DLFCN],
+[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
+])# _LT_HEADER_DLFCN
+
+
+# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ----------------------------------------------------------------
+m4_defun([_LT_TRY_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test "$cross_compiling" = yes; then :
+  [$4]
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+[#line __oline__ "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL          RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL                DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL                0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW         DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW       RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW     DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW     0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}]
+_LT_EOF
+  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) $1 ;;
+      x$lt_dlneed_uscore) $2 ;;
+      x$lt_dlunknown|x*) $3 ;;
+    esac
+  else :
+    # compilation failed
+    $3
+  fi
+fi
+rm -fr conftest*
+])# _LT_TRY_DLOPEN_SELF
+
+
+# LT_SYS_DLOPEN_SELF
+# ------------------
+AC_DEFUN([LT_SYS_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32* | cegcc*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+    ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+    ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    AC_CHECK_LIB([dl], [dlopen],
+               [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ])
+    ;;
+
+  *)
+    AC_CHECK_FUNC([shl_load],
+         [lt_cv_dlopen="shl_load"],
+      [AC_CHECK_LIB([dld], [shl_load],
+           [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
+       [AC_CHECK_FUNC([dlopen],
+             [lt_cv_dlopen="dlopen"],
+         [AC_CHECK_LIB([dl], [dlopen],
+               [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+           [AC_CHECK_LIB([svld], [dlopen],
+                 [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+             [AC_CHECK_LIB([dld], [dld_link],
+                   [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
+             ])
+           ])
+         ])
+       ])
+      ])
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    AC_CACHE_CHECK([whether a program can dlopen itself],
+         lt_cv_dlopen_self, [dnl
+         _LT_TRY_DLOPEN_SELF(
+           lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+           lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+    ])
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+         lt_cv_dlopen_self_static, [dnl
+         _LT_TRY_DLOPEN_SELF(
+           lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+           lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
+      ])
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+_LT_DECL([dlopen_support], [enable_dlopen], [0],
+        [Whether dlopen is supported])
+_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
+        [Whether dlopen of programs is supported])
+_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
+        [Whether dlopen of statically linked programs is supported])
+])# LT_SYS_DLOPEN_SELF
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
+
+
+# _LT_COMPILER_C_O([TAGNAME])
+# ---------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler.
+# This macro does not hard code the compiler like AC_PROG_CC_C_O.
+m4_defun([_LT_COMPILER_C_O],
+[m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+     fi
+   fi
+   chmod u+w . 2>&AS_MESSAGE_LOG_FD
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+])
+_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
+       [Does compiler simultaneously support -c and -o options?])
+])# _LT_COMPILER_C_O
+
+
+# _LT_COMPILER_FILE_LOCKS([TAGNAME])
+# ----------------------------------
+# Check to see if we can do hard links to lock some files if needed
+m4_defun([_LT_COMPILER_FILE_LOCKS],
+[m4_require([_LT_ENABLE_LOCK])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_COMPILER_C_O([$1])
+
+hard_links="nottested"
+if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  AC_MSG_CHECKING([if we can lock with hard links])
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  AC_MSG_RESULT([$hard_links])
+  if test "$hard_links" = no; then
+    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
+])# _LT_COMPILER_FILE_LOCKS
+
+
+# _LT_CHECK_OBJDIR
+# ----------------
+m4_defun([_LT_CHECK_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+_LT_DECL([], [objdir], [0],
+         [The name of the directory that contains temporary libtool files])dnl
+m4_pattern_allow([LT_OBJDIR])dnl
+AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
+  [Define to the sub-directory in which libtool stores uninstalled libraries.])
+])# _LT_CHECK_OBJDIR
+
+
+# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
+# --------------------------------------
+# Check hardcoding attributes.
+m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
+   test -n "$_LT_TAGVAR(runpath_var, $1)" ||
+   test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+     test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
+    # Linking always hardcodes the temporary library directory.
+    _LT_TAGVAR(hardcode_action, $1)=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    _LT_TAGVAR(hardcode_action, $1)=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  _LT_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
+   test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+_LT_TAGDECL([], [hardcode_action], [0],
+    [How to hardcode a shared library path into an executable])
+])# _LT_LINKER_HARDCODE_LIBPATH
+
+
+# _LT_CMD_STRIPLIB
+# ----------------
+m4_defun([_LT_CMD_STRIPLIB],
+[m4_require([_LT_DECL_EGREP])
+striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+  darwin*)
+    if test -n "$STRIP" ; then
+      striplib="$STRIP -x"
+      old_striplib="$STRIP -S"
+      AC_MSG_RESULT([yes])
+    else
+      AC_MSG_RESULT([no])
+    fi
+    ;;
+  *)
+    AC_MSG_RESULT([no])
+    ;;
+  esac
+fi
+_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
+_LT_DECL([], [striplib], [1])
+])# _LT_CMD_STRIPLIB
+
+
+# _LT_SYS_DYNAMIC_LINKER([TAG])
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+m4_defun([_LT_SYS_DYNAMIC_LINKER],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_OBJDUMP])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_MSG_CHECKING([dynamic linker characteristics])
+m4_if([$1],
+       [], [
+if test "$GCC" = yes; then
+  case $host_os in
+    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+    *) lt_awk_arg="/^libraries:/" ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary.
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+    else
+      test -d "$lt_sys_path" && \
+       lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+  lt_foo="";
+  lt_count=0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo="/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
+  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
+}'`
+  sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix[[4-9]]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[[01]] | aix4.[[01]].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+          echo ' yes '
+          echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+       :
+      else
+       can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[[45]]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+m4_if([$1], [],[
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[[123]]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+interix[[3-9]]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+       if test "$lt_cv_prog_gnu_ld" = yes; then
+               version_type=linux
+       else
+               version_type=irix
+       fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # Some binutils ld are patched to set DT_RUNPATH
+  save_LDFLAGS=$LDFLAGS
+  save_libdir=$libdir
+  eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
+       LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
+  AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+    [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
+       [shlibpath_overrides_runpath=yes])])
+  LDFLAGS=$save_LDFLAGS
+  libdir=$save_libdir
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Add ABI-specific directories to the system library path.
+  sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[  ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[[89]] | openbsd2.[[89]].*)
+       shlibpath_overrides_runpath=no
+       ;;
+      *)
+       shlibpath_overrides_runpath=yes
+       ;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$li