util-vserver-0.30.208
authorMark Huang <mlhuang@cs.princeton.edu>
Sun, 21 Aug 2005 18:05:23 +0000 (18:05 +0000)
committerMark Huang <mlhuang@cs.princeton.edu>
Sun, 21 Aug 2005 18:05:23 +0000 (18:05 +0000)
573 files changed:
ChangeLog
INSTALL
Makefile.am
Makefile.in
NEWS
README
REQUIREMENTS [new file with mode: 0644]
THANKS
aclocal.m4
compat-c99.h [new file with mode: 0644]
compat.h
compile
config.guess [new file with mode: 0755]
config.h.in
config.sub [new file with mode: 0755]
configure
configure.ac
contrib/Makefile-files [new file with mode: 0644]
contrib/make-manifest [new file with mode: 0755]
contrib/manifest.dat.pathsubst [new file with mode: 0644]
contrib/yum-2.2.1-chroot.patch [new file with mode: 0644]
contrib/yum-2.3.2-chroot.patch [new file with mode: 0644]
contrib/yum-2.3.3-chroot.patch [new file with mode: 0644]
contrib/yum-2.3.4-chroot.patch [new file with mode: 0644]
depcomp
distrib/Makefile.am [new file with mode: 0644]
distrib/Makefile.in [new file with mode: 0644]
distrib/defaults/apt.conf [new file with mode: 0644]
distrib/defaults/apt/apt.conf [new file with mode: 0644]
distrib/defaults/devs [new file with mode: 0644]
distrib/defaults/rpm/macros [new file with mode: 0644]
distrib/fc1/apt/rpmpriorities [new file with mode: 0644]
distrib/fc1/apt/sources.list [new file with mode: 0644]
distrib/fc1/pkgs/01 [new file with mode: 0644]
distrib/fc1/pkgs/02 [new file with mode: 0644]
distrib/fc2/apt/rpmpriorities [new file with mode: 0644]
distrib/fc2/apt/sources.list [new file with mode: 0644]
distrib/fc2/pkgs/01 [new file with mode: 0644]
distrib/fc2/pkgs/02 [new file with mode: 0644]
distrib/fc3/apt/rpmpriorities [new file with mode: 0644]
distrib/fc3/apt/sources.list [new file with mode: 0644]
distrib/fc3/pkgs/01 [new file with mode: 0644]
distrib/fc3/pkgs/02 [new file with mode: 0644]
distrib/fc3/pkgs/03 [new file with mode: 0644]
distrib/fc3/rpmlist.d/00.lst [new file with mode: 0644]
distrib/fc3/yum.repos.d/fedora-devel.repo [new file with mode: 0644]
distrib/fc3/yum.repos.d/fedora-updates-testing.repo [new file with mode: 0644]
distrib/fc3/yum.repos.d/fedora-updates.repo [new file with mode: 0644]
distrib/fc3/yum.repos.d/fedora.repo [new file with mode: 0644]
distrib/fc3/yum/yum.conf [new file with mode: 0644]
distrib/fc4/apt/rpmpriorities [new file with mode: 0644]
distrib/fc4/apt/sources.list [new file with mode: 0644]
distrib/fc4/pkgs/01 [new file with mode: 0644]
distrib/fc4/pkgs/02 [new file with mode: 0644]
distrib/fc4/pkgs/03 [new file with mode: 0644]
distrib/fc4/rpmlist.d/00.lst [new file with mode: 0644]
distrib/fc4/yum.repos.d/fedora-devel.repo [new file with mode: 0644]
distrib/fc4/yum.repos.d/fedora-updates-testing.repo [new file with mode: 0644]
distrib/fc4/yum.repos.d/fedora-updates.repo [new file with mode: 0644]
distrib/fc4/yum.repos.d/fedora.repo [new file with mode: 0644]
distrib/fc4/yum/yum.conf [new file with mode: 0644]
distrib/misc/debootstrap.uri [new file with mode: 0644]
distrib/misc/fstab [new file with mode: 0644]
distrib/misc/mtab [new file with mode: 0644]
distrib/misc/vprocunhide-files [new file with mode: 0644]
distrib/misc/vunify-exclude [new file with mode: 0644]
distrib/redhat/initpost [new file with mode: 0755]
distrib/redhat/initpre [new file with mode: 0755]
distrib/redhat/rc.sysinit [new file with mode: 0755]
distrib/rh9/apt/rpmpriorities [new file with mode: 0644]
distrib/rh9/apt/sources.list [new file with mode: 0644]
distrib/rh9/pkgs/01 [new file with mode: 0644]
distrib/rh9/pkgs/02 [new file with mode: 0644]
distrib/suse91/apt/rpmpriorities [new file with mode: 0644]
distrib/suse91/apt/sources.list [new file with mode: 0644]
distrib/suse91/pkgs/01 [new file with mode: 0644]
distrib/suse91/pkgs/02 [new file with mode: 0644]
distrib/suse91/rpm/macros [new file with mode: 0644]
distrib/template/initpost [new file with mode: 0755]
distrib/template/initpre [new file with mode: 0755]
doc/Makefile-files
doc/compatibility-xhtml.xsl [new file with mode: 0644]
doc/compatibility.dtd [new file with mode: 0644]
doc/compatibility.html [new file with mode: 0644]
doc/compatibility.xml [new file with mode: 0644]
doc/configuration-xhtml.xsl [new file with mode: 0644]
doc/configuration.css [new file with mode: 0644]
doc/configuration.dtd [new file with mode: 0644]
doc/configuration.html [new file with mode: 0644]
doc/configuration.xml [new file with mode: 0644]
doc/configuration.xsd [new file with mode: 0644]
ensc_fmt/Makefile-files [new file with mode: 0644]
ensc_fmt/fmt-32.c [new file with mode: 0644]
ensc_fmt/fmt-64.c [new file with mode: 0644]
ensc_fmt/fmt-internal.h [new file with mode: 0644]
ensc_fmt/fmt-tai64n.c [new file with mode: 0644]
ensc_fmt/fmt.h [new file with mode: 0644]
ensc_fmt/fmt.hc [new file with mode: 0644]
ensc_fmt/fmtx-32.c [new file with mode: 0644]
ensc_fmt/fmtx-64.c [new file with mode: 0644]
ensc_fmt/fmtx.hc [new file with mode: 0644]
ensc_vector/Makefile-files [new file with mode: 0644]
ensc_vector/list-add.c [new file with mode: 0644]
ensc_vector/list-at.c [new file with mode: 0644]
ensc_vector/list-free.c [new file with mode: 0644]
ensc_vector/list-init.c [new file with mode: 0644]
ensc_vector/list-insertinternal.c [new file with mode: 0644]
ensc_vector/list-internal.h [new file with mode: 0644]
ensc_vector/list-search.c [new file with mode: 0644]
ensc_vector/list-searchselforg.c [new file with mode: 0644]
ensc_vector/list.h [new file with mode: 0644]
ensc_vector/list.hc [new file with mode: 0644]
ensc_vector/testsuite/Makefile-files [new file with mode: 0644]
ensc_vector/testsuite/test1.c [new file with mode: 0644]
ensc_vector/testsuite/test2.c [new file with mode: 0644]
ensc_vector/vector-clear.c [new file with mode: 0644]
ensc_vector/vector-foreach.c [new file with mode: 0644]
ensc_vector/vector-free.c [new file with mode: 0644]
ensc_vector/vector-init.c [new file with mode: 0644]
ensc_vector/vector-insert.c [new file with mode: 0644]
ensc_vector/vector-internal.h [new file with mode: 0644]
ensc_vector/vector-popback.c [new file with mode: 0644]
ensc_vector/vector-pushback.c [new file with mode: 0644]
ensc_vector/vector-resize.c [new file with mode: 0644]
ensc_vector/vector-resizeinternal.hc [new file with mode: 0644]
ensc_vector/vector-search.c [new file with mode: 0644]
ensc_vector/vector-searchselforg.c [new file with mode: 0644]
ensc_vector/vector-sort.c [new file with mode: 0644]
ensc_vector/vector-unique.c [new file with mode: 0644]
ensc_vector/vector-zeroend.c [new file with mode: 0644]
ensc_vector/vector.h [new file with mode: 0644]
ensc_vector/vector.hc [new file with mode: 0644]
ensc_wrappers/Makefile-files [new file with mode: 0644]
ensc_wrappers/wrappers-clone.hc [new file with mode: 0644]
ensc_wrappers/wrappers-dirent.hc [new file with mode: 0644]
ensc_wrappers/wrappers-fcntl.hc [new file with mode: 0644]
ensc_wrappers/wrappers-io.hc [new file with mode: 0644]
ensc_wrappers/wrappers-ioctl.hc [new file with mode: 0644]
ensc_wrappers/wrappers-iosock.hc [new file with mode: 0644]
ensc_wrappers/wrappers-mount.hc [new file with mode: 0644]
ensc_wrappers/wrappers-pivot.hc [new file with mode: 0644]
ensc_wrappers/wrappers-resource.hc [new file with mode: 0644]
ensc_wrappers/wrappers-socket.hc [new file with mode: 0644]
ensc_wrappers/wrappers-stdlib.hc [new file with mode: 0644]
ensc_wrappers/wrappers-string.hc [new file with mode: 0644]
ensc_wrappers/wrappers-unistd.hc [new file with mode: 0644]
ensc_wrappers/wrappers-vserver.hc [new file with mode: 0644]
ensc_wrappers/wrappers-wait.hc [new file with mode: 0644]
ensc_wrappers/wrappers.h [new file with mode: 0644]
ensc_wrappers/wrappers_handler.hc [new file with mode: 0644]
install-sh
kernel/context.h [new file with mode: 0644]
kernel/context_cmd.h [new file with mode: 0644]
kernel/cvirt.h [new file with mode: 0644]
kernel/cvirt_cmd.h [new file with mode: 0644]
kernel/cvirt_def.h [new file with mode: 0644]
kernel/debug.h [new file with mode: 0644]
kernel/debug_cmd.h [new file with mode: 0644]
kernel/dlimit.h [new file with mode: 0644]
kernel/dlimit_cmd.h [new file with mode: 0644]
kernel/inode.h [new file with mode: 0644]
kernel/inode_cmd.h [new file with mode: 0644]
kernel/legacy.h [new file with mode: 0644]
kernel/limit.h [new file with mode: 0644]
kernel/limit_cmd.h [new file with mode: 0644]
kernel/limit_def.h [new file with mode: 0644]
kernel/namespace.h [new file with mode: 0644]
kernel/namespace_cmd.h [new file with mode: 0644]
kernel/network.h [new file with mode: 0644]
kernel/network_cmd.h [new file with mode: 0644]
kernel/sched.h [new file with mode: 0644]
kernel/sched_cmd.h [new file with mode: 0644]
kernel/sched_def.h [new file with mode: 0644]
kernel/signal_cmd.h [new file with mode: 0644]
kernel/switch.h [new file with mode: 0644]
kernel/xid.h [new file with mode: 0644]
lib/Makefile-files
lib/apidoc/Doxyfile.in [new file with mode: 0644]
lib/apidoc/Makefile-files [new file with mode: 0644]
lib/apidoc/list2xxx.syntax [new file with mode: 0644]
lib/bcaps-v13.c [new file with mode: 0644]
lib/bcaps_list-v13.c [new file with mode: 0644]
lib/capabilities.c [new file with mode: 0644]
lib/ccaps-v13.c [new file with mode: 0644]
lib/ccaps_list-v13.c [new file with mode: 0644]
lib/cflags-compat.c [new file with mode: 0644]
lib/cflags-v13.c [new file with mode: 0644]
lib/cflags_list-compat.c [new file with mode: 0644]
lib/cflags_list-v13.c [new file with mode: 0644]
lib/checkversion.c
lib/createskeleton-full.hc [new file with mode: 0644]
lib/createskeleton-short.hc [new file with mode: 0644]
lib/createskeleton.c [new file with mode: 0644]
lib/ext2fs.h [new file with mode: 0644]
lib/fmt.h [new file with mode: 0644]
lib/getfilecontext.c [new file with mode: 0644]
lib/getinsecurebcaps.c [new file with mode: 0644]
lib/getnbipv4root.c [new file with mode: 0644]
lib/getprocentry-legacy.c [new file with mode: 0644]
lib/getversion-internal.hc
lib/getversion.c
lib/getvserverappdir.c [new file with mode: 0644]
lib/getvserverbyctx-compat.hc [new file with mode: 0644]
lib/getvserverbyctx-v13.hc [new file with mode: 0644]
lib/getvserverbyctx.c [new file with mode: 0644]
lib/getvservercfgdir.c [new file with mode: 0644]
lib/getvservercfgstyle.c [new file with mode: 0644]
lib/getvserverctx.c [new file with mode: 0644]
lib/getvservername.c [new file with mode: 0644]
lib/getvservervdir.c [new file with mode: 0644]
lib/getxidtype.c [new file with mode: 0644]
lib/internal.h [new file with mode: 0644]
lib/ioctl-getext2flags.hc [new file with mode: 0644]
lib/ioctl-getfilecontext.hc [new file with mode: 0644]
lib/ioctl-getxflg.hc [new file with mode: 0644]
lib/ioctl-setext2flags.hc [new file with mode: 0644]
lib/ioctl-setfilecontext.hc [new file with mode: 0644]
lib/ioctl-setxflg.hc [new file with mode: 0644]
lib/isdirectory.c [new file with mode: 0644]
lib/isdynamicxid.c [new file with mode: 0644]
lib/isfile.c [new file with mode: 0644]
lib/islink.c [new file with mode: 0644]
lib/issupported.c [new file with mode: 0644]
lib/issupportedstring.c [new file with mode: 0644]
lib/listparser.hc [new file with mode: 0644]
lib/listparser_uint32.c [new file with mode: 0644]
lib/listparser_uint64.c [new file with mode: 0644]
lib/ncaps-net.c [new file with mode: 0644]
lib/ncaps_list-net.c [new file with mode: 0644]
lib/nflags-net.c [new file with mode: 0644]
lib/nflags_list-net.c [new file with mode: 0644]
lib/parselimit.c [new file with mode: 0644]
lib/personalityflag.c [new file with mode: 0644]
lib/personalityflag_list.c [new file with mode: 0644]
lib/personalitytype.c [new file with mode: 0644]
lib/safechroot-internal.hc
lib/syscall-alternative.h [new file with mode: 0644]
lib/syscall-compat.hc
lib/syscall-legacy.hc
lib/syscall-syscall.c [new file with mode: 0644]
lib/syscall-wrap.h [new file with mode: 0644]
lib/syscall.c
lib/syscall_adddlimit-v13.hc [new file with mode: 0644]
lib/syscall_adddlimit.c [new file with mode: 0644]
lib/syscall_cleanupnamespace-v13.hc [new file with mode: 0644]
lib/syscall_cleanupnamespace.c [new file with mode: 0644]
lib/syscall_ctxcreate-v13.hc [new file with mode: 0644]
lib/syscall_ctxcreate.c [new file with mode: 0644]
lib/syscall_ctxmigrate-v13.hc [new file with mode: 0644]
lib/syscall_ctxmigrate.c [new file with mode: 0644]
lib/syscall_enternamespace-v13.hc [new file with mode: 0644]
lib/syscall_enternamespace.c [new file with mode: 0644]
lib/syscall_getccaps-v13.hc [new file with mode: 0644]
lib/syscall_getccaps.c [new file with mode: 0644]
lib/syscall_getcflags-v13.hc [new file with mode: 0644]
lib/syscall_getcflags.c [new file with mode: 0644]
lib/syscall_getdlimit-v13.hc [new file with mode: 0644]
lib/syscall_getdlimit.c [new file with mode: 0644]
lib/syscall_getiattr-fscompat.hc [new file with mode: 0644]
lib/syscall_getiattr-v13.hc [new file with mode: 0644]
lib/syscall_getiattr.c [new file with mode: 0644]
lib/syscall_getncaps-net.hc [new file with mode: 0644]
lib/syscall_getncaps.c [new file with mode: 0644]
lib/syscall_getnflags-net.hc [new file with mode: 0644]
lib/syscall_getnflags.c [new file with mode: 0644]
lib/syscall_getnxinfo-net.hc [new file with mode: 0644]
lib/syscall_getnxinfo.c [new file with mode: 0644]
lib/syscall_gettasknid-net.hc [new file with mode: 0644]
lib/syscall_gettasknid.c [new file with mode: 0644]
lib/syscall_gettaskxid-oldproc.hc [new file with mode: 0644]
lib/syscall_gettaskxid-v13.hc [new file with mode: 0644]
lib/syscall_gettaskxid.c [new file with mode: 0644]
lib/syscall_getvhiname-olduts.hc [new file with mode: 0644]
lib/syscall_getvhiname-v13.hc [new file with mode: 0644]
lib/syscall_getvhiname.c [new file with mode: 0644]
lib/syscall_getvxinfo-oldproc.hc [new file with mode: 0644]
lib/syscall_getvxinfo-v13.hc [new file with mode: 0644]
lib/syscall_getvxinfo.c [new file with mode: 0644]
lib/syscall_kill-v11.hc
lib/syscall_kill.c
lib/syscall_netadd-net.hc [new file with mode: 0644]
lib/syscall_netadd.c [new file with mode: 0644]
lib/syscall_netcreate-net.hc [new file with mode: 0644]
lib/syscall_netcreate.c [new file with mode: 0644]
lib/syscall_netmigrate-net.hc [new file with mode: 0644]
lib/syscall_netmigrate.c [new file with mode: 0644]
lib/syscall_netremove-net.hc [new file with mode: 0644]
lib/syscall_netremove.c [new file with mode: 0644]
lib/syscall_remdlimit-v13.hc [new file with mode: 0644]
lib/syscall_remdlimit.c [new file with mode: 0644]
lib/syscall_rlimit-v11.hc
lib/syscall_rlimit.c
lib/syscall_setccaps-v13.hc [new file with mode: 0644]
lib/syscall_setccaps.c [new file with mode: 0644]
lib/syscall_setcflags-v13.hc [new file with mode: 0644]
lib/syscall_setcflags.c [new file with mode: 0644]
lib/syscall_setdlimit-v13.hc [new file with mode: 0644]
lib/syscall_setdlimit.c [new file with mode: 0644]
lib/syscall_setiattr-fscompat.hc [new file with mode: 0644]
lib/syscall_setiattr-v13.hc [new file with mode: 0644]
lib/syscall_setiattr.c [new file with mode: 0644]
lib/syscall_setnamespace-v13.hc [new file with mode: 0644]
lib/syscall_setnamespace.c [new file with mode: 0644]
lib/syscall_setncaps-net.hc [new file with mode: 0644]
lib/syscall_setncaps.c [new file with mode: 0644]
lib/syscall_setnflags-net.hc [new file with mode: 0644]
lib/syscall_setnflags.c [new file with mode: 0644]
lib/syscall_setsched-v13.hc
lib/syscall_setsched.c
lib/syscall_setvhiname-olduts.hc [new file with mode: 0644]
lib/syscall_setvhiname-v13.hc [new file with mode: 0644]
lib/syscall_setvhiname.c [new file with mode: 0644]
lib/syscall_waitexit-v13.hc [new file with mode: 0644]
lib/syscall_waitexit.c [new file with mode: 0644]
lib/testsuite/Makefile-files [new file with mode: 0644]
lib/testsuite/cflags.c [new file with mode: 0644]
lib/testsuite/fmt.c [new file with mode: 0644]
lib/testsuite/parselimit.c [new file with mode: 0644]
lib/testsuite/personality.c [new file with mode: 0644]
lib/util-vserver.pc.subst [new file with mode: 0644]
lib/utils-legacy.h [new file with mode: 0644]
lib/val2text-t2v-uint32.c [new file with mode: 0644]
lib/val2text-t2v-uint64.c [new file with mode: 0644]
lib/val2text-v2t-uint32.c [new file with mode: 0644]
lib/val2text-v2t-uint64.c [new file with mode: 0644]
lib/val2text.hc [new file with mode: 0644]
lib/virtual.h
lib/vserver-internal.h
lib/vserver.h
lib/xidopt2xid.c [new file with mode: 0644]
lib_internal/Makefile-files [new file with mode: 0644]
lib_internal/command-appendparameter.c [new file with mode: 0644]
lib_internal/command-exec.c [new file with mode: 0644]
lib_internal/command-free.c [new file with mode: 0644]
lib_internal/command-init.c [new file with mode: 0644]
lib_internal/command-reset.c [new file with mode: 0644]
lib_internal/command-setparams.c [new file with mode: 0644]
lib_internal/command-wait.c [new file with mode: 0644]
lib_internal/command.h [new file with mode: 0644]
lib_internal/coreassert.h [new file with mode: 0644]
lib_internal/errinfo-writeerrno.c [new file with mode: 0644]
lib_internal/errinfo.h [new file with mode: 0644]
lib_internal/filecfg-iteratemultiline.c [new file with mode: 0644]
lib_internal/filecfg-readentryflag.c [new file with mode: 0644]
lib_internal/filecfg-readentrystr.c [new file with mode: 0644]
lib_internal/filecfg.h [new file with mode: 0644]
lib_internal/jail.h [new file with mode: 0644]
lib_internal/jailintotempdir.c [new file with mode: 0644]
lib_internal/matchlist-appendfiles.c [new file with mode: 0644]
lib_internal/matchlist-compare.c [new file with mode: 0644]
lib_internal/matchlist-destroy.c [new file with mode: 0644]
lib_internal/matchlist-init.c [new file with mode: 0644]
lib_internal/matchlist-initbyvserver.c [new file with mode: 0644]
lib_internal/matchlist-initmanually.c [new file with mode: 0644]
lib_internal/matchlist-initrefserverlist.c [new file with mode: 0644]
lib_internal/matchlist-printid.c [new file with mode: 0644]
lib_internal/matchlist.h [new file with mode: 0644]
lib_internal/matchvserverinfo-free.c [new file with mode: 0644]
lib_internal/matchvserverinfo-init.c [new file with mode: 0644]
lib_internal/pathinfo-append.c [new file with mode: 0644]
lib_internal/pathinfo-test.c [new file with mode: 0644]
lib_internal/pathinfo.h [new file with mode: 0644]
lib_internal/string.h [new file with mode: 0644]
lib_internal/string.hc [new file with mode: 0644]
lib_internal/switchtowatchxid.c [new file with mode: 0644]
lib_internal/sys_clone.h [new file with mode: 0644]
lib_internal/sys_personality.h [new file with mode: 0644]
lib_internal/testsuite/Makefile-files [new file with mode: 0644]
lib_internal/testsuite/command.c [new file with mode: 0644]
lib_internal/testsuite/copy-check [new file with mode: 0755]
lib_internal/testsuite/copy.c [new file with mode: 0644]
lib_internal/testsuite/filecfg-ml.c [new file with mode: 0644]
lib_internal/testsuite/sigbus.c [new file with mode: 0644]
lib_internal/unify-copy.c [new file with mode: 0644]
lib_internal/unify-deunify.c [new file with mode: 0644]
lib_internal/unify-isiunlinkable.c [new file with mode: 0644]
lib_internal/unify-settime.c [new file with mode: 0644]
lib_internal/unify-unify.c [new file with mode: 0644]
lib_internal/unify.h [new file with mode: 0644]
lib_internal/util-canonify.c [new file with mode: 0644]
lib_internal/util-cast.h [new file with mode: 0644]
lib_internal/util-commonstrings.h [new file with mode: 0644]
lib_internal/util-debug.h [new file with mode: 0644]
lib_internal/util-declarecmd.h [new file with mode: 0644]
lib_internal/util-dimof.h [new file with mode: 0644]
lib_internal/util-dotfile.h [new file with mode: 0644]
lib_internal/util-exitlikeprocess.c [new file with mode: 0644]
lib_internal/util-exitlikeprocess.h [new file with mode: 0644]
lib_internal/util-io.h [new file with mode: 0644]
lib_internal/util-isnumber.c [new file with mode: 0644]
lib_internal/util-lockfile.c [new file with mode: 0644]
lib_internal/util-lockfile.h [new file with mode: 0644]
lib_internal/util-mem.h [new file with mode: 0644]
lib_internal/util-perror.h [new file with mode: 0644]
lib_internal/util-safechdir.c [new file with mode: 0644]
lib_internal/util-safechdir.h [new file with mode: 0644]
lib_internal/util-unixsock.h [new file with mode: 0644]
lib_internal/util.h [new file with mode: 0644]
ltmain.sh [new file with mode: 0644]
m4/changelog.am
m4/ensc_cflags.m4
m4/ensc_changelog.m4
m4/ensc_cxxcompiler.m4 [new file with mode: 0644]
m4/ensc_dietlibc.m4 [new file with mode: 0644]
m4/ensc_dietlibc_compat.m4 [new file with mode: 0644]
m4/ensc_e2fscheck.m4
m4/ensc_initrddir.m4 [new file with mode: 0644]
m4/ensc_kerneldir.m4
m4/ensc_pathprog.m4 [new file with mode: 0644]
m4/ensc_personality.m4 [new file with mode: 0644]
m4/ensc_release.m4 [new file with mode: 0644]
m4/ensc_syscall.m4
m4/ensc_syscallnr.m4
m4/ensc_uv_vrootdir.m4
m4/gpgsig.am
m4/install-notify.am [new file with mode: 0644]
m4/libsel.am [new file with mode: 0644]
m4/pkgconfig.am [new file with mode: 0644]
m4/validate.am
man/Makefile-files
missing
pathconfig.h.pathsubst [new file with mode: 0644]
scripts/Makefile-files
scripts/chcontext [new file with mode: 0755]
scripts/functions [new file with mode: 0644]
scripts/legacy/distrib-info [new file with mode: 0755]
scripts/legacy/rootshell [new file with mode: 0755]
scripts/legacy/save_s_context [new file with mode: 0755]
scripts/legacy/vps.pathsubst [new file with mode: 0755]
scripts/legacy/vserver [new file with mode: 0755]
scripts/legacy/vserver-copy [new file with mode: 0755]
scripts/legacy/vserverkillall [new file with mode: 0755]
scripts/pkgmgmt [new file with mode: 0755]
scripts/start-vservers [new file with mode: 0755]
scripts/util-vserver-vars.pathsubst [new file with mode: 0644]
scripts/vapt-get [new file with mode: 0755]
scripts/vapt-get-worker [new file with mode: 0755]
scripts/vpkg [new file with mode: 0755]
scripts/vprocunhide [new file with mode: 0755]
scripts/vpstree
scripts/vrpm
scripts/vrpm-preload [new file with mode: 0755]
scripts/vrpm-worker [new file with mode: 0755]
scripts/vserver
scripts/vserver-build [new file with mode: 0755]
scripts/vserver-build.apt-rpm [new file with mode: 0644]
scripts/vserver-build.debootstrap [new file with mode: 0644]
scripts/vserver-build.functions [new file with mode: 0644]
scripts/vserver-build.functions.apt [new file with mode: 0644]
scripts/vserver-build.functions.pkgmgmt [new file with mode: 0644]
scripts/vserver-build.functions.rpm [new file with mode: 0644]
scripts/vserver-build.functions.yum [new file with mode: 0644]
scripts/vserver-build.rpm [new file with mode: 0644]
scripts/vserver-build.skeleton [new file with mode: 0644]
scripts/vserver-build.yum [new file with mode: 0644]
scripts/vserver-setup.functions [new file with mode: 0644]
scripts/vserver-wrapper [new file with mode: 0755]
scripts/vserver.functions [new file with mode: 0644]
scripts/vserver.start [new file with mode: 0644]
scripts/vserver.stop [new file with mode: 0644]
scripts/vserver.suexec [new file with mode: 0644]
scripts/vservers.grabinfo.sh
scripts/vshelper [new file with mode: 0755]
scripts/vsomething [new file with mode: 0755]
scripts/vsysvwrapper
scripts/vtop
scripts/vyum [new file with mode: 0755]
scripts/vyum-worker [new file with mode: 0755]
src/Makefile-files
src/capability-compat.h [new file with mode: 0644]
src/capchroot.c
src/chain-echo.c [new file with mode: 0644]
src/chbind.c
src/chcontext.c
src/check-unixfile.c [new file with mode: 0644]
src/chroot-sh.c [new file with mode: 0644]
src/chxid.c [new file with mode: 0644]
src/compat-pivot_root.h [new file with mode: 0644]
src/context-sync.hc [new file with mode: 0644]
src/exec-cd.c [new file with mode: 0644]
src/exec-ulimit.c [new file with mode: 0644]
src/fakerunlevel.c
src/filetime.c
src/fstool.c [new file with mode: 0644]
src/fstool.h [new file with mode: 0644]
src/ifspec.c
src/keep-ctx-alive.c [new file with mode: 0644]
src/listdevip.c
src/lockfile.c [new file with mode: 0644]
src/lsxid.c [new file with mode: 0644]
src/mask2prefix.c [new file with mode: 0644]
src/readlink.c
src/rebootmgr.c
src/reducecap.c
src/rpm-fake-resolver.c [new file with mode: 0644]
src/rpm-fake.c [new file with mode: 0644]
src/save_ctxinfo.c [new file with mode: 0644]
src/secure-mount.c [new file with mode: 0644]
src/setattr.c [new file with mode: 0644]
src/showattr.c
src/showperm.c
src/sigexec.c [new file with mode: 0644]
src/stack-start.h [new file with mode: 0644]
src/testsuite/Makefile-files [new file with mode: 0644]
src/testsuite/chbind-test.c [new file with mode: 0644]
src/testsuite/chcontext-test.c [new file with mode: 0644]
src/testsuite/rpm-fake-test.c [new file with mode: 0644]
src/testsuite/vunify-functest.c [new file with mode: 0644]
src/testsuite/vunify-test.sh [new file with mode: 0755]
src/util.h [new file with mode: 0644]
src/vattribute.c [new file with mode: 0644]
src/vcontext.c [new file with mode: 0644]
src/vcopy-init.hc [new file with mode: 0644]
src/vcopy.c [new file with mode: 0644]
src/vdlimit.c
src/vdu.c
src/vhashify-init.hc [new file with mode: 0644]
src/vhashify.c [new file with mode: 0644]
src/vhashify.h [new file with mode: 0644]
src/vkill.c
src/vlimit.c
src/vnamespace.c [new file with mode: 0644]
src/vps.c [new file with mode: 0644]
src/vreboot.c
src/vrsetup.c [new file with mode: 0644]
src/vsched.c [new file with mode: 0644]
src/vserver-info.c [new file with mode: 0644]
src/vserver-stat.c
src/vserver-visitdir.hc [new file with mode: 0644]
src/vshelper-sync.c [new file with mode: 0644]
src/vuname.c [new file with mode: 0644]
src/vunify-init.hc [new file with mode: 0644]
src/vunify.c [new file with mode: 0644]
src/vunify.h [new file with mode: 0644]
src/vwait.c [new file with mode: 0644]
sysv/Makefile-files
sysv/rebootmgr [new file with mode: 0755]
sysv/vprocunhide [new file with mode: 0755]
sysv/vservers-default [new file with mode: 0755]
sysv/vservers-legacy [new file with mode: 0755]
tests/Makefile-files
tests/escaperoot.c [new file with mode: 0644]
tests/forkbomb.c [new file with mode: 0644]
tests/getctx.c [new file with mode: 0644]
tests/getinitpid.c [new file with mode: 0644]
tests/testipc.c [new file with mode: 0644]
tests/testlimit.c [new file with mode: 0644]
tests/testopenf.c [new file with mode: 0644]
tests/vserver-info.c [new file with mode: 0644]
util-vserver.spec
util-vserver.spec.in
vserver-start/Makefile-files [new file with mode: 0644]
vserver-start/configuration-init.c [new file with mode: 0644]
vserver-start/configuration.c [new file with mode: 0644]
vserver-start/configuration.h [new file with mode: 0644]
vserver-start/defaulttty.c [new file with mode: 0644]
vserver-start/interface-add.c [new file with mode: 0644]
vserver-start/interface-free.hc [new file with mode: 0644]
vserver-start/interface-init.hc [new file with mode: 0644]
vserver-start/interface-print.c [new file with mode: 0644]
vserver-start/interface-read.c [new file with mode: 0644]
vserver-start/interface-remove.c [new file with mode: 0644]
vserver-start/interface.c [new file with mode: 0644]
vserver-start/interface.h [new file with mode: 0644]
vserver-start/main.c [new file with mode: 0644]
vserver-start/mount.c [new file with mode: 0644]
vserver-start/mount.h [new file with mode: 0644]
vserver-start/scriptlets.c [new file with mode: 0644]
vserver-start/undo.c [new file with mode: 0644]
vserver-start/undo.h [new file with mode: 0644]
vserver-start/vserver-start.h [new file with mode: 0644]
vserver-start/vshelper.c [new file with mode: 0644]
vserver-start/vshelper.h [new file with mode: 0644]

index f688679..edc1682 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
-2004-07-03 00:49  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2005-07-15 22:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * configure.ac: version 0.30
+       * NEWS, configure.ac:
 
-2004-05-27 14:16  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       version 0.30.208
 
-       * distrib/install-fc1: fixed DOS lineends (Arne Blankerts)
+2005-07-15 21:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2004-04-23 13:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * configure.ac, lib/personalityflag.c, lib/personalitytype.c,
+         m4/ensc_personality.m4:
 
-       * NEWS, configure.ac: version 0.29.5
+       check whether enums from <linux/personality.h> are available before using
+       them (https://savannah.nongnu.org/bugs/?func=detailitem&item_id=12921)
 
-2004-04-23 13:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2005-07-15 21:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * util-vserver.spec.in: cleanups
+       * util-vserver.spec.in:
 
-2004-04-20 20:16  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       - require the -lib subpackage by -devel
+       - copy GPG keys from /etc/pki/rpm-gpg/
 
-       * sysv/: rebootmgr.subst, vservers.subst: made '--force-reload' an
-         alias for 'restart' (Noèl Köthe,
-         http://savannah.nongnu.org/patch/?func=detailitem&item_id=2633)
+2005-07-15 21:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2004-04-20 20:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * src/testsuite/rpm-fake-test.sh:
 
-       * scripts/distrib-info: added patch from Matthew Lavy for Debian
-         support
+       fixed paths so that it works again...
 
-2004-04-03 03:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2005-07-15 21:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * distrib/Makefile-files: added the fc* files
+       * sysv/vprocunhide:
 
-2004-04-03 03:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       do not run when IATTR feature is not supported
 
-       * NEWS, configure.ac: version 0.29.4
+2005-07-15 21:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2004-04-03 02:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * scripts/: vserver.start, vserver.suexec:
 
-       * util-vserver.spec.in: removed doc/FAQ.txt from %doc-list
+       readded the limit-ulimits-per-vserver stuff due popular request
+       (http://savannah.nongnu.org/bugs/?func=detailitem&item_id=12840)
 
-2004-04-03 02:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2005-07-15 20:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * distrib/: fc1-minimum, install-fc1: initial checkin (provided by
-         Arne Blankerts)
+       * lib/getinsecurebcaps.c:
 
-2004-04-03 01:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       - adjusted insecure caps for the added CAP_AUDIT* and removed
+         CAP_QUOTACTL stuff
+       - assume every unknown capability as insecure
 
-       * distrib/rh9.0-minimum: replaced with list from 'vserver 0.29'
-         package (reported by Arne Blankerts)
+2005-07-15 20:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2004-04-03 01:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * lib/testsuite/.cvsignore:
 
-       * distrib/sample.conf: s!-H!-HS!  (reported by Arne Blankerts)
+       added 'personality'
 
-2004-03-18 19:29  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2005-07-15 20:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * doc/: FAQ.txt[DEAD], Makefile-files, changelog.txt[DEAD]: removed
-         FAQ.txt and changelog.txt; they are containing errormessages only
+       * lib/: syscall_netadd-net.hc, syscall_netremove-net.hc:
 
-2004-03-09 05:16  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       changed code so that it *compiles* with current kernel headers
 
-       * m4/ensc_syscallnr.m4: stopped to confuse users with wrong error
-         messages; the correct CPPFLAGS are '-D...' but not '-D=...'
+2005-07-15 20:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2004-03-05 06:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * lib/: syscall_getiattr-fscompat.hc, syscall_setiattr-fscompat.hc:
 
-       * m4/ensc_syscallnr.m4: use $ensc_cv_path_kernelheaders instead of
-         $kernelincludedir
+       Changed the barrier-code so that it sets both the 't' ext2-flag and
+       chmod-0 permissions. This is required to work with 1.2.10 patch;
+       formerly the chmod-0 sufficed. [reported by Bjoern Steinbrink,
+       http://savannah.nongnu.org/bugs/?func=detailitem&item_id=13170]
 
-2004-03-05 05:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2005-07-15 18:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * src/reducecap.c: use strncasecmp() instead of strncmp() include
-         <strings.h>
+       * lib/capabilities.c:
 
-2004-03-04 04:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       use a static '29' for QUOTACTL capability as  VC_CAP_QUOTACTL was removed
 
-       * NEWS, configure.ac: version 0.29.3
+2005-07-15 18:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2004-03-04 04:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * lib/ccaps-v13.c:
 
-       * lib/Makefile-files: do not use '-I $kernelincludedir' anymore
+       added VC_VXC_{SYSLOG,BINARY_MOUNT,QUOTA_CTL}
+       added/moved some aliases
 
-2004-03-04 04:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2005-07-15 18:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * m4/ensc_syscallnr.m4: require AC_PROG_CPP
+       * lib/bcaps-v13.c:
 
-2004-03-04 04:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       removed VC_CAP_QUOTACTL
+       added VC_CAP_AUDIT*
 
-       * m4/: ensc_cflags.m4, ensc_kerneldir.m4, ensc_syscall.m4,
-         ensc_syscallnr.m4, validate.am: merged with HEAD
+2005-07-15 18:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2004-03-04 01:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * lib/vserver.h:
 
-       * src/reducecap.c: BUGFIX/ENHANCEMENTS: the CLI interface of
-         'reducecap' was fixed significantly: now it is possible to remove
-         capabilities like CHOWN'. Formerly, only privileged caps like
-         SYS_* or *_ADMIN could be removed because of a coding error.
-         Changes in the related code are making it possible that both
-         '--CAP_XXX' and '--XXX' syntax will be recognized (based on
-         patches and reports by Bodo Eggert).
+       removed VC_CAP_QUOTACTL
+       added VC_CAP_AUDIT*
+       added VC_VXC_{SYSLOG,BINARY_MOUNT,QUOTA_CTL}
 
-2004-02-20 20:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2005-07-15 18:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * configure.ac: version 0.29.2
+       * contrib/: Makefile-files, yum-2.3.4-chroot.patch:
 
-2004-02-20 20:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       added yum-2.3.4-chroot patch
 
-       * lib/syscall_rlimit-v11.hc: vc_get_rlimit_mask_v11(): use correct
-         datastructure (backported from HEAD)
+2005-07-15 18:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2004-02-20 20:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * kernel/: network.h, network_cmd.h, switch.h, xid.h:
 
-       * src/vlimit.c: * changed logic to skip entries without chance for
-         success (backported   from HEAD) * fixed '--help' message * give
-         vc_set_rlimit() the context instead of a static '-2' * require a
-         ctx on the CLI
+       updated to patch-2.6.12.2-vs2.0-rc7
 
-2004-02-19 23:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2005-07-05 00:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * lib/syscall-compat.hc: vc_set_ipv4root_compat(): fixed off-by-one
-         error while checking number of allowed IPs (backported from HEAD)
+       * scripts/vserver-build.functions:
 
-2004-02-19 23:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       check whether context is already active before starting the build
+       (http://savannah.nongnu.org/bugs/?func=detailitem&item_id=12849)
 
-       * m4/ensc_e2fscheck.m4: tell correct packagename for Debian's
-         e2fsprogs-devel (backported from HEAD) tell packagename for
-         Mandrake (backported from HEAD)
+2005-07-05 00:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2004-02-14 01:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * src/vserver-info.c:
 
-       * configure.ac: version 0.29.1 use new syscall# detection code
-         (backported from HEAD)
+       allow to pass a numeric xid to 'vserver-info ... RUNNING'
 
-2004-02-14 01:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2005-07-05 00:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * lib/vserver-internal.h: use new syscall# detection code
-         (backported from HEAD)
+       * lib_internal/: Makefile-files, util-isnumber.c, util.h:
 
-2004-02-14 01:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       isNumber(): added
 
-       * m4/ensc_syscallnr.m4: initial checkin (backported from HEAD)
+2005-07-04 20:14  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2004-02-11 22:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * scripts/vserver-build.debootstrap:
 
-       * NEWS, configure.ac: version 0.29
+       give out status message before downloading debootstrap
+       (http://savannah.nongnu.org/bugs/?func=detailitem&item_id=13472)
 
-2004-02-10 00:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2005-07-04 20:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * configure.ac: version 0.28.91
+       * lib/syscall-alternative.h:
 
-2004-02-10 00:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       updated to http://vserver.13thfloor.at/Experimental/SYSCALL/syscall.h
+       from 2005-05-07
 
-       * Makefile.am, src/Makefile-files: remove src/setattr on 'clean'
-         (reported by Noèl Köthe)
+2005-07-04 00:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2004-02-09 23:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * distrib/misc/debootstrap.uri:
 
-       * scripts/vserver-copy, src/vbuild.cc: further chattr "fixes"
+       oops... set the wrong value
 
-2004-02-06 23:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2005-07-04 00:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * configure.ac: version 0.28.90
+       * distrib/misc/debootstrap.uri:
 
-2004-02-06 23:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       updated
 
-       * util-vserver.spec.in: require chattr set 't' attribute on
-         /vservers
+2005-07-04 00:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2004-02-06 23:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * distrib/Makefile.am:
 
-       * distrib/install-pre.sh, distrib/install-rh7.2,
-         distrib/install-rh7.3, scripts/vserver: when creating new vserver
-         topdirectories, call 'chattr -t' on them
+       register fc4 as rh-style distribution
 
-2004-02-05 04:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2005-07-03 22:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * configure.ac, lib/syscall-legacy.hc, lib/vserver-internal.h,
-         m4/ensc_syscall.m4: backported ENSC_SYSCALL_TRADITIONAL from HEAD
-         version 0.28.1
+       * configure.ac:
 
-2004-01-29 22:16  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       check for 'nohup'
 
-       * scripts/vserver-copy: fixed copyright, it is still at Mark
-         Lawrence
+2005-07-03 19:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2004-01-28 12:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * contrib/manifest.dat.pathsubst:
 
-       * configure.ac: version 0.28
+       removed chroot_* + C++ programs
+       added chroot_sh + vwait
 
-2004-01-26 19:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2005-07-03 19:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * NEWS: version 0.27.91
+       * Makefile.am, lib/virtual.h:
 
-2004-01-26 19:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       updated used kernel headers to 2.6.12.2-vs2.0-rc5
 
-       * configure.ac: version 0.27.91 use new ext2fs.h test
+2005-07-03 19:49  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2004-01-26 19:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * lib/: syscall_getvhiname-v13.hc, syscall_setvhiname-v13.hc:
 
-       * src/ext2fs.h: updated to new ext2fs.h test
+       - s!VCMD_vx_.et_vhi_name!VCMD_.et_vhi_name!
+       - added workaround for older kernels not having the naming above
 
-2004-01-26 19:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2005-07-03 19:48  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * m4/: ensc_cflags.m4, ensc_kerneldir.m4, ensc_uv_vrootdir.m4:
-         added missing quotes
+       * scripts/vshelper:
 
-2004-01-26 19:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       accept 'async' method
 
-       * m4/ensc_e2fscheck.m4: initial checkin
+2005-07-03 19:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2004-01-26 19:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * scripts/vserver.start:
 
-       * lib/syscall_kill-v11.hc: fixed warnings about missing initializer
+       pipe 'popd' output to /dev/null
 
-2004-01-26 19:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2005-07-03 19:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * lib/: getversion.c, vserver.h: vc_get_version(): removed 'int
-         cat' parameter
+       * scripts/vserver.functions:
 
-2004-01-22 21:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       initSync(): fixed parameter naming
+       initSync(): set 'async' method when 'vwait' is available
+       _waitForVWait(): read pipe after 'wait' returned
 
-       * NEWS, configure.ac: version 0.27.90
+2005-07-03 19:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2004-01-22 20:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * scripts/vserver-build:
 
-       * scripts/vserver: call 'chkconfig' to fix initscripts *after*
-         generating the configuration (reported by DUCLOS Andre)
+       do not set OPTION_KEEP
 
-2004-01-22 17:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2005-07-03 19:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * scripts/vserver: allow to override start/stop commands (patch by
-         Erik Smit)
+       * scripts/util-vserver-vars.pathsubst:
 
-2004-01-20 00:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       added vwait
 
-       * scripts/vserver-copy: use an argument on 'mktemp' call
+2005-07-03 19:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2004-01-17 07:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * scripts/pkgmgmt:
 
-       * scripts/vserver-copy: autodetect the mktemp/tempfile command
-         (reported by DUCLOS Andre)
+       - cleanups
+       - unset %_dbpath at 'internalize' operation
 
-2004-01-17 07:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2005-07-03 19:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * scripts/vserver: start programs with 'exec' on the 'suexec' (and
-         related) commands (patch by Alec Thomas)
+       * scripts/functions:
 
-2004-01-07 17:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       vshelper.initSync(): fixed parameter naming
 
-       * src/chcontext.c: backported from HEAD: * removed obsolete and
-         unused 'fakeinit' variable * fixed ctx-creation with fakeinit and
-         static ctx-id's; fakeinit   requires a second call for ctx -2 to
-         take effect
+2005-07-03 19:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2004-01-07 17:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * src/chroot-sh.c:
 
-       * lib/vserver-internal.h: fixed handling of errors within
-         utilvserver_checkCompatVersion() to return real error-code but
-         not -EINVAL
+       implemented 'testfile' subcommand
 
-2003-12-30 20:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2005-07-03 16:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * configure.ac: version 0.27
+       * contrib/: Makefile-files, yum-2.3.3-chroot.patch:
 
-2003-12-30 15:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       added yum-2.3.3-chroot.patch
 
-       * NEWS, configure.ac: version 0.26.90
+2005-07-03 16:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-12-30 15:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * scripts/functions:
 
-       * configure.ac: * another s!sys_virtual_context!vserver! * test for
-         ext2fs.h headers with the C++ compiler; this will detect
-         problems with RH rawhide headers very early
-         (https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=112448)
+       do not quote $_VSHELPER in help message (reported by Roman Barczynski,
+       https://savannah.nongnu.org/bugs/?func=detailitem&item_id=13162)
 
-2003-12-30 15:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2005-07-03 16:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * lib/vserver-internal.h: another s!sys_virtual_context!vserver!
+       * doc/configuration.xml:
 
-2003-12-30 15:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       mentioned the working directory for the scripts
 
-       * lib/syscall_kill-v11.hc: made it compilable with non-C99
-         compilers
+2005-07-03 16:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-12-30 14:50  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * kernel/: context.h, context_cmd.h, cvirt_cmd.h, debug.h,
+         namespace.h, namespace_cmd.h, network.h, network_cmd.h, switch.h:
 
-       * scripts/vserver: added basic Slackware support (patch by Stephen
-         Pearce)
+       updated to 2.6.12.2-vs2.0-rc5
 
-2003-12-30 14:49  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2005-07-03 15:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * src/vkill.c: * s!ctx_t!xid_t! * use native vc_ctx_kill() only
-         when legacy-API is disabled * fixed help-msg
+       * scripts/vserver.start:
 
-2003-12-30 14:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       execute the prepre script in the configuration directory (*not* the
+       vdir directory); this should not cause legacy problems as formerly the
+       directory was not changed overall
 
-       * lib/syscall_rlimit.c, lib/vserver-internal.h, lib/vserver.h,
-         lib/getctx-compat.hc, lib/getctx-legacy.hc, lib/getctx.c,
-         lib/syscall-compat.hc, lib/syscall.c, lib/syscall_kill-v11.hc,
-         lib/syscall_kill.c, lib/syscall_rlimit-v11.hc, src/vlimit.c,
-         configure.ac, compat.h: s!ctx_t!xid_t!
+2005-07-03 15:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       check whether filesystem is mounted readonly; if so, execute
+       $_SECURE_MOUNT with the '-n' argument
+
+2005-07-03 15:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver-build.apt-rpm, vserver-build.debootstrap,
+         vserver-build.rpm:
+
+       execute base.setSuccess() at the end
+
+2005-07-03 15:16  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/rpm-fake-resolver.c:
+
+       implemented better error-handling in the read() and write() functions
+
+2005-07-03 14:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/: wrappers-io.hc, wrappers-iosock.hc,
+         wrappers-unistd.hc:
+
+       store result of read*(2) and write*(2) fucntions into signed variables;
+       error handling is more cleaner in this way
+
+2005-07-03 14:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-stat.c:
+
+       - cleanups
+       - multiply RSS value with PAGESIZE
+         (https://savannah.nongnu.org/bugs/?func=detailitem&item_id=13184)
+       - prepare the '-O' option: calculate vserver names earlier and use
+         some more helper functions
+
+2005-07-03 14:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/rpm-fake.c:
+
+       - doPwStringRequest(): fixed x86_64 issue; rpm-fake.so transmitted a
+         'size_t' value, but rpm-fake-resolver expected an uint32_t
+       - minor cleanups
+
+2005-07-03 11:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_vector/: Makefile-files, vector-foreach.c, vector.h,
+         vector.hc:
+
+       added Vector_foreach*() functions
+
+2005-07-02 11:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: Makefile-files, vbuild.cc[DEAD], vcheck.cc[DEAD],
+         vfiles.cc[DEAD], vserver.cc[DEAD], vserver.hh[DEAD],
+         vutil.cc[DEAD], vutil.h[DEAD], vutil.p[DEAD]:
+
+       removed the C++ tools; they do not work with recent configuration and
+       are adding huge dependencies
+
+2005-06-30 08:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.stop:
+
+       use vwait infrastructure
+
+2005-06-30 08:16  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver-build.functions.pkgmgmt, vserver.functions:
+
+       use CHROOT_SH instead of CHROOT_*
+       use vwait
+
+2005-06-30 08:16  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.functions:
+
+       remove generated vserver when build fails and '--keep' was not specified
+
+2005-06-30 08:13  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver-build.apt-rpm, vserver-build.debootstrap,
+         vserver-build.rpm, vserver-build.skeleton, vserver-build.yum:
+
+       use 'base.init' instead of 'base.initVariables'
+
+2005-06-30 08:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build:
+
+       added '--keep' option
+
+2005-06-30 08:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: X, util-vserver-vars.pathsubst:
+
+       removed CHROOT_*
+       added CHROOT_SH
+
+2005-06-30 08:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/pkgmgmt:
+
+       use CHROOT_SH instead of CHROOT_*
+
+2005-06-30 08:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/virtual.h:
+
+       include signal_cmd.h instead of signal.h
+
+2005-06-30 08:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       added %dist tag
+       buildrequire 'which' and 'diffutils'
+       require 'apt' on i386 only
+
+2005-06-30 08:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/fc4/: apt/rpmpriorities, apt/sources.list, yum/yum.conf,
+         yum.repos.d/fedora-devel.repo,
+         yum.repos.d/fedora-updates-testing.repo,
+         yum.repos.d/fedora-updates.repo, yum.repos.d/fedora.repo,
+         pkgs/01, pkgs/02, pkgs/03, rpmlist.d/00.lst:
+
+       initial checkin
+
+2005-06-30 08:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/redhat/initpost:
+
+       use CHROOT_SH instead of CHROOT_*
+
+2005-06-30 07:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: .cvsignore, Makefile-files, chroot-cat.c[DEAD],
+         chroot-rm.c[DEAD], chroot-sh.c:
+
+       replaced all the small chroot-* programs with a single 'chroot-sh'
+       program
+
+2005-05-19 20:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added @NOHUP@
+
+2005-05-19 20:16  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/pkgmgmt:
+
+       use new chroot-cat CLI
+
+2005-05-19 20:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * kernel/: context.h, cvirt.h, dlimit.h, dlimit_cmd.h, inode_cmd.h,
+         legacy.h, signal_cmd.h, xid.h, signal.h[DEAD]:
+
+       updated
+
+2005-05-19 20:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: issupported.c, issupportedstring.c, vserver.h:
+
+       vc_isSupported() et.al: added VWAIT feature
+
+2005-05-19 20:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_syscall.m4:
+
+       s!enable_val!enableval!
+
+2005-05-19 20:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-stat.c:
+
+       fixed calculation of hours (%24 instead of %60); reported in
+       http://savannah.nongnu.org/bugs/?func=detailitem&item_id=13048 by
+       Roman Barczynski
+
+2005-05-19 20:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/chroot-cat.c:
+
+       added '-i', '-o' and '-a' options to cat or override a file, or to
+       append something
+
+2005-05-19 19:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/redhat/initpost:
+
+       use safe chroot-cat commands
+
+2005-05-05 21:13  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_dietlibc.m4:
+
+       - give out a more correct helpstring for the '--enable/disable-dietlibc'
+         option
+       - use AS_HELP_STRING instead of AC_HELP_STRING
+
+2005-05-05 20:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       - removed call to ENSC_FPIC_SYSCALL
+       - enhanced dietlibc version check to the 64 bit version of hppa
+
+2005-05-05 11:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/.cvsignore:
+
+       added vwait
+
+2005-05-05 11:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vwait.c:
+
+       initial checkin
+
+2005-05-05 11:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vshelper-sync.c:
+
+       use '__linux__' instead of '__linux' (reported by Ola Lundqvist)
+
+2005-05-05 11:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/exec-cd.c:
+
+       minor cosmetical cleanup
+
+2005-05-05 11:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/chroot-cat.c:
+
+       - added support for '--help' and '--version'
+       - added '-a' option to append information instead of truncating the
+         file
+
+2005-05-05 11:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       - 'chroot-cat' supports now the '--help' and '--version' options so
+         removed it from AM_INSTALLCHECK_STD_OPTIONS_EXEMPT
+       - added vwait
+
+2005-05-05 11:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/install-notify.am:
+
+       s!^# !## !
+
+2005-05-05 11:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: Makefile-files, syscall_waitexit-v13.hc,
+         syscall_waitexit.c, vserver.h:
+
+       vc_wait_exit(): implemented support for this syscall
+
+2005-05-02 23:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/compat-pivot_root.h:
+
+       use <syscall-wrap.h>
+
+2005-05-02 23:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_syscall.m4:
+
+       minor cosmetical cleanups
+
+2005-05-02 23:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_fpicsyscall.m4[DEAD]:
+
+       obsoleted
+
+2005-05-02 23:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_fpicsyscall.m4:
+
+       use ENSC_SYSCALL_ALTERNATIVE
+
+2005-05-02 23:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver-internal.h:
+
+       cleaned up '#include <*syscall.h>' stuff
+
+2005-05-02 23:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: syscall-legacy.hc, syscall-wrap.h:
+
+       include <syscall.h> also
+
+2005-05-02 23:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration-xhtml.xsl:
+
+       use class 'directoryname' instead of 'directory' for '<directory/>'
+       markup
+
+2005-05-02 23:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am, distrib/Makefile.am, m4/install-notify.am:
+
+       give out additional information about the 'make install' process
+
+2005-04-28 21:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.30.207
+
+2005-04-28 20:48  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       adjusted dietlibc requirements
+
+2005-04-28 20:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vcontext.c:
+
+       allow to override the execution domain (personality); added
+       '--personality-type' and '--personality-flags' options
+
+2005-04-28 20:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/rpm-fake-resolver.c:
+
+       added a TEMP_FAILURE_RETRY around a read(2)
+
+2005-04-28 20:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver.start, vserver.suexec:
+
+       added support for a rescue mode
+
+2005-04-28 20:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       * _generatePersonalityOptions(): added and use it
+       * added support for a rescue mode
+
+2005-04-28 20:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.functions.pkgmgmt:
+
+       YUM_RELEASEPKGS: added
+
+2005-04-28 20:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver:
+
+       fixed docu for 'stop' and 'start'
+
+2005-04-28 20:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/pkgmgmt:
+
+       * verifyInternalPackages(): added
+       * added some sanity checks for a sany environment when internalizing
+         the package management
+
+2005-04-28 20:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       * isRegularFile():  fixed evaluation of params
+       * hasSubstring():   added
+       * getAllVservers(): fixed typo
+
+2005-04-28 20:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/sys_clone.h:
+
+       cleanups; do not include <sys/syscall.h>
+
+2005-04-28 20:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/: Makefile-files, sys_personality.h:
+
+       added sys_personality.h
+
+2005-04-28 19:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver-copy[DEAD], legacy/vserver-copy:
+
+       moved to legacy
+
+2005-04-28 19:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/testsuite/: Makefile-files, personality.c:
+
+       added testcases for the vc_*personality*() functions
+
+2005-04-28 19:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       added prototypes for vc_*personality* support
+
+2005-04-28 19:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/virtual.h:
+
+       updated to new kernel headers
+
+2005-04-28 19:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/cflags_list-v13.c:
+
+       do not include <string.h> anymore
+
+2005-04-28 19:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/internal.h:
+
+       utilvserver_listparser_uint*(): removed the 'nonnull' attribute for the 'mask' param
+
+2005-04-28 19:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: Makefile-files, personalityflag.c, personalityflag_list.c,
+         personalitytype.c:
+
+       added personality* files
+
+2005-04-28 19:50  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       * added some markup
+       * documented 'personality'
+
+2005-04-28 19:50  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/: configuration-xhtml.xsl, configuration.dtd:
+
+       added support for <directory> and <filename> markup
+
+2005-04-28 19:49  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/fc3/yum/yum.conf:
+
+       s!redhat-release!fedora-release!
+
+2005-04-28 19:49  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/fc3/pkgs/02:
+
+       removed 'coreutils'
+
+2005-04-28 19:48  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/fc3/rpmlist.d/00.lst:
+
+       added some more packages
+
+2005-04-28 19:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/: fc1/apt/rpmpriorities, fc2/apt/rpmpriorities,
+         fc3/apt/rpmpriorities, rh9/apt/rpmpriorities:
+
+       added *-release packages
+
+2005-04-28 19:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst, scripts/Makefile-files:
+
+       moved vserver-copy to legacy
+
+2005-04-28 19:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       added new kernel headers
+
+2005-04-28 13:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * kernel/: context.h, context_cmd.h, cvirt.h, cvirt_cmd.h,
+         cvirt_def.h, debug.h, debug_cmd.h, dlimit.h, dlimit_cmd.h,
+         inode.h, inode_cmd.h, legacy.h, limit.h, limit_cmd.h,
+         limit_def.h, namespace.h, network.h, network_cmd.h, sched.h,
+         sched_cmd.h, sched_def.h, switch.h, xid.h:
+
+       updated to headers from patch-2.6.11.7-vs2.0-pre2
+
+2005-04-24 22:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-stat.c:
+
+       showContexts(): added 'const' qualifier
+
+2005-04-24 22:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: start-vservers, vsomething:
+
+       use the new getAllVservers() functionality to specify special kinds of
+       vservers
+
+2005-04-24 22:29  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       * isRegularFile(): allow to override the '-f' classifier
+       * getAllVservers(): added several types of vservers (marked, unmarked,
+         running...)
+       * getAllVserversByArg()" added
+
+2005-04-24 22:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_dietlibc_compat.m4:
+
+       * ENSC_DIETLIBC_NEED_COMPAT: use the 'syscall-wrap.h' header and the
+         results from ENSC_SYSCALL_ALTERNATIVE
+
+2005-04-24 22:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_syscall.m4:
+
+       * ENSC_SYSCALL_ALTERNATIVE: added
+       * ENSC_SYSCALL: use the 'syscall-wrap.h' header and the results from
+         ENSC_SYSCALL_ALTERNATIVE
+
+2005-04-24 22:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver-internal.h, lib_internal/sys_clone.h:
+
+       include "syscall-wrap.h"
+
+2005-04-24 22:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: ncaps-net.c, nflags-net.c:
+
+       VALUES: added an empty field to make it compile with gcc4
+
+2005-04-24 22:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: ncaps_list-net.c, nflags_list-net.c:
+
+       made it compatible to the new utilvserver_listparser_uint*() API and
+       added wrappers with a third 'bool *' arg
+
+2005-04-24 22:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/listparser.hc:
+
+       * parser function has now to set a 'bool *' arg to signal errors
+       * when 'mask' argument is null, the special modifiers like '~', '!' or
+         'any' are not allowed
+
+2005-04-24 22:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/internal.h:
+
+       utilvserver_listparser_uint*(): added a third 'bool *' arg for the
+       parser function so that errors can be better propagated
+
+2005-04-24 22:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: bcaps_list-v13.c, ccaps_list-v13.c, cflags_list-v13.c:
+
+       made it compatible to the new utilvserver_listparser_uint*() API and
+       added wrappers with a third 'bool *' arg
+
+2005-04-24 22:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: Makefile-files, syscall-alternative.h, syscall-wrap.h:
+
+       added syscall-alternative.h and syscall-wrap.h
+
+2005-04-24 22:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * update-doc:
+
+       exclude some static files
+
+2005-04-24 22:16  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * build-all:
+
+       remove config.cache when CLEAN is set
+       disabled gcc33 build
+
+2005-04-24 13:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/: configuration-xhtml.xsl, configuration.dtd,
+         configuration.xml:
+
+       added new markup
+       added new CSS from Nicolas Costes
+
+2005-04-16 23:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       cleanups
+       added '--disable-extra-optimizations' option
+
+2005-04-16 23:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver-build.functions, vserver-build.functions.apt,
+         vserver-build.functions.rpm, vserver-build.functions.yum,
+         vserver.functions:
+
+       use the common isRegularFile() method to filter out backup-files
+
+2005-04-16 23:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       isRegularFile(): added
+
+2005-04-16 23:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       cleanups
+       added changelog entry for 0.30.206
+
+2005-04-13 00:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.30.206
+
+2005-04-12 23:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-info.c:
+
+       implemented VERIFYPROC method
+
+2005-04-12 23:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       added verify-proc sanity check
+
+2005-04-12 23:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       killContext(): commented out the more correct
+       (but not working) kill-sequence
+
+2005-04-12 23:50  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       ship the yum patches
+
+2005-04-12 23:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       added '--no-wrap -S' to the CVS2CL_AMFLAGS
+
+2005-04-12 21:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       adjusted min-dietlibc requirements
+
+2005-04-12 21:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_dietlibc.m4:
+
+       ENSC_ENABLE_DIETLIBC(): allow 'min_ver' to be a shell variable
+
+2005-04-12 20:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       vshelper.isDebug(): fixed logic
+
+2005-04-10 14:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/rpm-fake.c:
+
+       send the signals for endgrent() and endpwent()
+
+2005-04-10 14:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/: Makefile-files, yum-2.2.1-chroot.patch,
+         yum-2.3.2-chroot.patch:
+
+       added patches for yum
+
+2005-04-10 14:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       include m4/libsel.am
+
+2005-04-10 03:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/context-sync.hc:
+
+       ignore errors during setsid(2) execution (required for vs1.9.5.12+)
+
+2005-04-10 03:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vshelper:
+
+       * kill vserver processes explicitly with 'killContext'; userspace
+         reboot helper may assume that 'reboot(2)' never returns...
+       * added 'async' method
+
+2005-04-10 02:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.stop:
+
+       implicate '--sync' option; it is not possible to stop asynchronously
+       send SIGINT to pid 1 instead of trying to determine initpid
+
+2005-04-10 02:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       use 'killContext()' instead of  invoking 'vkill' manually
+       set an initial runlevel for 'minit' style also
+       set 'async' vshelper method for non-sync mode
+
+2005-04-10 02:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vprocunhide:
+
+       fixed missing quoting of '~'; this may cause very slow booting when
+       NIS/LDAP servers are local vservers as bash tries to expand this to a
+       homedir...
+
+2005-04-10 02:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       spawn(), killContext(): added
+
+2005-04-10 02:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/libsel.am:
+
+       initial checkin
+
+2005-04-10 02:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_dietlibc.m4:
+
+       use a more modern version which accepts 'DIET' and 'DIETFLAGS' as
+       global configure variables
+
+2005-04-10 02:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_cxxcompiler.m4:
+
+       fixed typo
+
+2005-04-10 02:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       defined ENSC_USE_DIETLIBC + ENSC_USE_GLIBC
+
+2005-04-10 02:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       removed 'DIET' and 'DIETFLAGS' variables; they are set by configure now
+
+2005-04-08 21:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vyum-worker:
+
+       added better test for patched yum
+
+2005-04-08 21:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-info.c:
+
+       fixed typo
+
+2005-04-08 21:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.suexec:
+
+       fixed typo (reported by Paul S. Gumerman)
+
+2005-04-08 21:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.functions.yum:
+
+       substitute @YUMLOCKDIR@
+
+2005-04-08 21:14  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/chcontext:
+
+       fixed operation when context was not specified
+
+2005-04-08 21:13  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/redhat/initpre:
+
+       reverted the patch adding '/usr/X11'
+       create '/sbin/new-kernel-pkg'; 'initpost' would be too late for FC4
+
+2005-04-08 21:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/redhat/initpost:
+
+       use 'ln -sf' instead of 'ln -s'
+
+2005-04-08 21:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/fc3/yum/yum.conf:
+
+       add 'lockfile'
+
+2005-04-08 21:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/Makefile.am:
+
+       added 'fc3' to 'redhat_style'
+
+2005-04-08 21:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       use DIETFLAGS instead of DIET_FLAGS
+
+2005-03-29 04:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_vector/Makefile-files:
+
+       use $(LIBENSCVECTOR) instead of libensc_vector.a
+
+2005-03-25 22:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.stop:
+
+       fixed typo
+
+2005-03-25 18:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       minor cleanups: call vkill with '--xid' instead of '-c'
+
+2005-03-25 17:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.stop:
+
+       address both the context and the pid when sending SIGINT to init
+
+2005-03-25 03:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/testsuite/copy-check:
+
+       do not use '-s' with 'cmp' but display verbose error reason
+
+2005-03-25 03:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/switchtowatchxid.c:
+
+       simplified it and made it work with recent kernels
+
+2005-03-25 03:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration-xhtml.xsl:
+
+       use 'alternate stylesheet' instead of 'stylesheet' (reported by Herbert
+       Poetzl)
+
+2005-03-25 03:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       fixed quoting of % in %description
+
+2005-03-24 15:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am, REQUIREMENTS:
+
+       added REQUIREMENTS
+
+2005-03-24 14:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac, util-vserver.spec.in:
+
+       version 0.30.205
+
+2005-03-24 14:50  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       added some %descriptions
+
+2005-03-24 13:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vhashify.c:
+
+       s!write()!Vwrite()! at some places
+       add 'volatile' qualifier at variables used around 'setjmp'
+       use sigsetjmp() instead of setjmp()
+       minor code cleanups
+
+2005-03-24 13:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/secure-mount.c:
+
+       s!write()!Vwrite()! at some places
+       use Echdir() instead of chdir()
+
+2005-03-24 13:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/filetime.c, src/lsxid.c, src/readlink.c, src/reducecap.c,
+         src/showattr.c, src/vattribute.c, src/vcontext.c, src/vcopy.c,
+         src/vdlimit.c, src/vlimit.c, src/vps.c, src/vserver-stat.c,
+         src/vuname.c, src/vunify.c, vserver-start/interface-read.c:
+
+       s!write()!Vwrite()! at some places
+
+2005-03-24 13:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/testsuite/sigbus.c:
+
+       use Etruncate() instead of truncate()
+
+2005-03-24 13:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/testsuite/copy-check:
+
+       added new tests and better diagnostic
+
+2005-03-24 13:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/unify-copy.c:
+
+       moved 'volatile' qualifiers to a better place
+       minor code cleanups
+
+2005-03-24 13:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/wrappers-unistd.hc:
+
+       E*truncate(): added
+
+2005-03-24 13:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_vector/testsuite/test2.c:
+
+       #undef NDEBUG
+
+2005-03-24 02:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/testsuite/sigbus.c:
+
+       unlink temporary files on exit
+
+2005-03-24 01:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/unify-unify.c:
+
+       Unify_unify(): block signals while executing the non-atomic operations
+
+2005-03-24 01:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vhashify.c:
+
+       optimized directory creation
+
+2005-03-24 01:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/unify-copy.c:
+
+       prepared for sigbus testcase
+       added some 'volatile' modifiers
+       use siglongjmp() instead of longjmp()
+
+2005-03-24 01:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/matchvserverinfo-init.c:
+
+       minor code cleanups
+
+2005-03-24 01:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/testsuite/: .cvsignore, Makefile-files, sigbus.c:
+
+       added sigbus testcase
+
+2005-03-23 03:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_vector/testsuite/.cvsignore:
+
+       updated
+
+2005-03-23 03:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: vhashify-init.hc, vhashify.c:
+
+       added lots of new code...
+
+2005-03-23 03:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/rpm-fake.c:
+
+       is_selinux_enabled(): added
+
+2005-03-23 03:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver-build.apt-rpm, vserver-build.rpm,
+         vserver-build.yum:
+
+       execute '--initdb' before importing pubkeys
+       import pubkeys from /etc/vservers/.distributions/.common/pubkeys also
+
+2005-03-23 03:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver:
+
+       added 'hashify' target
+
+2005-03-23 03:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added $_VHASHIFY
+
+2005-03-23 03:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/matchlist-initrefserverlist.c:
+
+       fixed initialization of 'vserver'
+
+2005-03-23 03:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/Makefile.am:
+
+       create /etc/.../.distributions/.common/pubkeys/
+       create /etc/.../.defaults/apps/vunify/hash
+
+2005-03-23 03:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       copy GPG keys from the system into the confdir
+       buildrequire dietlibc-0.25
+
+2005-03-23 03:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * build-all:
+
+       build with debug settings
+
+2005-03-22 16:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/rpm-fake.c:
+
+       honor return codes of read(2) and write(2) when communication with the rpm-fake-helper
+       call read(2) and write(2) through TEMP_FAILURE_RETRY()
+       use Vwrite() instead of write(2) at some places
+
+2005-03-22 16:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/command-exec.c:
+
+       call write(2) through TEMP_FAILURE_RETRY()
+
+2005-03-22 16:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       BuildRequire beecrypt-devel
+
+2005-03-22 16:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: chcontext.c, vhashify.c:
+
+       workaround warning messages regarding 'warn_unused_return_value' when
+       using _FORTIFY_SOURCE.
+
+2005-03-22 15:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/getvservervdir.c, lib_internal/coreassert.h,
+         lib_internal/matchlist-initmanually.c,
+         lib_internal/matchlist-printid.c,
+         lib_internal/util-exitlikeprocess.c, lib_internal/util-io.h:
+
+       workaround warning messages regarding 'warn_unused_return_value' when
+       using _FORTIFY_SOURCE.
+
+2005-03-22 15:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst:
+
+       added vhashify + vdlimit
+
+2005-03-22 15:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       cleanups
+       use %global instead of %define
+
+2005-03-22 15:48  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * build-all:
+
+       set _FORTIFY_SOURCE
+
+2005-03-19 04:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * .cvsignore:
+
+       updated
+
+2005-03-19 03:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * update-doc:
+
+       initial checkin
+
+2005-03-19 03:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/chcontext:
+
+       do not use '--create' for dynamic contexts
+
+2005-03-19 03:16  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * sysv/vkillall[DEAD], tests/attack.spec[DEAD]:
+
+       obsoleted
+
+2005-03-19 03:16  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * sysv/vkillall, tests/attack.spec:
+
+       added to be removed...
+
+2005-03-19 03:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/redhat/initsignal[DEAD]:
+
+       obsoleted
+
+2005-03-19 03:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/redhat/initsignal:
+
+       added to be removed soon...
+
+2005-03-19 03:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vnet.c[DEAD]:
+
+       obsoleted...
+
+2005-03-19 03:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/vunify-verbosity.txt, lib/apidoc/list2xxx.descr, scripts/X,
+         src/vnet.c:
+
+       initial checkin
+
+2005-03-19 03:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * vserver-start/: interface-add.c, interface-print.c,
+         interface-remove.c, main.c:
+
+       avoid warnings regarding unused params
+
+2005-03-19 03:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       moved vdlimit into the only-C99 section
+       build vhashify only with C99 and beecrypt
+       cleanups
+
+2005-03-19 03:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/testsuite/copy-check:
+
+       cleanups
+       conditionalize expensive tests
+
+2005-03-19 03:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/Makefile-files, lib/Makefile-files:
+
+       moved *dlimit* files into the only-C99 section
+       clean all potentially built libraries
+
+2005-03-19 03:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_vector/list-free.c:
+
+       some minor C89 compatibility changes
+
+2005-03-19 03:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_vector/Makefile-files:
+
+       use 'lib-dietlibc-not-enabled-error.a' consistently
+       clean all libraries inclusive those which might not be built
+
+2005-03-19 03:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.dtd:
+
+       readded
+
+2005-03-19 03:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       documented the 'vhashify' configuration
+       moved '<default>' tags before '<description>'
+
+2005-03-19 03:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration-xhtml.xsl:
+
+       applied changes regarding the new www-location on savannah
+
+2005-03-19 02:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/Makefile-files:
+
+       (re)added xsltproc support
+
+2005-03-19 02:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       added tests for XSLTPROC
+       added '--disable-expensive-tests'
+       added beecrypt tests
+       cosmetical cleanups + enhancements
+
+2005-03-19 02:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       set some values in TESTS_ENVIRONMENT
+       added some hacks for lib-dietlibc-not-enabled-error.a
+
+2005-03-18 04:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/testsuite/.cvsignore:
+
+       updated
+
+2005-03-18 04:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/unify.h, src/vunify.h:
+
+       include <sys/stat.h> instead of defining a 'struct stat'; this prevents
+       problems with the 64bit interface of the filesystem functions
+
+2005-03-18 04:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/unify-copy.c:
+
+       use a sparse-file friendly method for copying files
+
+2005-03-18 04:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/testsuite/: Makefile-files, copy-check, copy.c:
+
+       added testcases for Unify_copy()
+
+2005-03-18 01:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * vserver-start/Makefile-files:
+
+       use $(LIBENSCVECTOR) instead of libensc_vector.a
+
+2005-03-18 01:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: vhashify-init.hc, vhashify.c, vhashify.h:
+
+       made it work...
+
+2005-03-18 01:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: vcopy-init.hc, vunify-init.hc:
+
+       applied changes in the MatchList-API
+
+2005-03-18 01:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       use $(LIBENSCVECTOR) instead of libensc_vector.a
+       use $(LIBVSERVER_GLIBC) instead of lib/libvserver.la
+
+2005-03-18 01:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vpkg:
+
+       exit with returncode of '2' when pkgmgmt can not be determined
+
+2005-03-18 01:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/testsuite/Makefile-files:
+
+       use $(LIBENSCVECTOR) instead of libensc_vector.a
+
+2005-03-18 01:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/: unify-isiunlinkable.c, unify.h:
+
+       Unify_isIUnlinkable(): changed return-type
+
+2005-03-18 01:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/unify-copy.c:
+
+       implemented copyReg() with mmap(2) instead of read(2)+write(2) sequences
+
+2005-03-18 01:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/string.hc:
+
+       String_free(): added
+
+2005-03-18 01:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/string.h:
+
+       renamed String_destroy() to String_free()
+
+2005-03-18 01:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/string-destroy.c[DEAD]:
+
+       obsoleted; String_free() is now inlined
+
+2005-03-18 01:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/: matchlist-initbyvserver.c,
+         matchlist-initmanually.c, matchlist-initrefserverlist.c,
+         matchlist.h:
+
+       applied lot of API changes
+
+2005-03-18 01:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/matchlist-destroy.c:
+
+       use String_free() instead of String_destroy()
+
+2005-03-18 01:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/Makefile-files:
+
+       added matchvserverinfo-*
+       removed string-destroy.c
+
+2005-03-18 01:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/: matchvserverinfo-free.c, matchvserverinfo-init.c:
+
+       initial checkin
+
+2005-03-18 01:13  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_vector/testsuite/Makefile-files,
+         lib/testsuite/Makefile-files:
+
+       use $(LIBENSCVECTOR) instead of libensc_vector.a
+
+2005-03-18 01:13  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_vector/Makefile-files, lib/Makefile-files:
+
+       split into a -glibc and a -diet part
+
+2005-03-18 01:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       HACK: set 'enable_static=no' for dietlibc case and postpone AC_PROG_LIBTOOL execution
+
+2005-03-18 01:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       use $(LIBVSERVER) instead of lib/libvserver.la
+       use $(LIBENSCVECTOR_DIET) instead of $(ENSC_VECTOR_LIBS)
+
+2005-03-17 15:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/.cvsignore:
+
+       updated
+
+2005-03-17 15:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vunify.c:
+
+       use new Unify_unify() API
+       rearranged some code; I do not try to be C89 compliant in C99 progams anymore...
+
+2005-03-17 15:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vcopy.c:
+
+       use new Unify_unify() API
+
+2005-03-17 15:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: vhashify-init.hc, vhashify.c, vhashify.h:
+
+       initial checkin
+
+2005-03-17 15:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       use $(LIBINTERNAL) instead of lib_internal/libinternal.a
+       added vhashify*
+
+2005-03-17 15:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * build-all:
+
+       updated
+
+2005-03-17 15:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/testsuite/Makefile-files,
+         src/testsuite/Makefile-files, vserver-start/Makefile-files:
+
+       use $(LIBINTERNAL) instead of lib_internal/libinternal.a
+
+2005-03-17 15:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/unify.h:
+
+       * added an 'ignore_zero' argument to Unify_unify()
+       * Unify_isIUnlinkable(): added
+
+2005-03-17 15:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/unify-unify.c:
+
+       added an 'ignore_zero' argument to Unify_unify()
+
+2005-03-17 15:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/unify-isiunlinkable.c:
+
+       initial checkin
+
+2005-03-17 15:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/Makefile-files:
+
+       * create both libinternal-diet.a and libinternal-glibc.a. This is
+         needed to avoid segfaults with gcc4 when linking against glibc based
+         libraries like 'beecrypt'. Perhaps, these segfaults are a problem
+         with gcc4 as they do not happen with gcc33...
+
+       * added unify-isiunlinkable.c
+
+2005-03-17 15:49  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_vector/testsuite/test1.c:
+
+       added tests for Vector_searchSelfOrg()
+
+2005-03-17 15:48  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_vector/testsuite/Makefile-files:
+
+       added test2
+
+2005-03-17 15:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_vector/: vector.h, vector.hc:
+
+       Vector_searchSelfOrg*(): added
+
+2005-03-17 15:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_vector/: list-add.c, list-at.c, list-free.c, list-init.c,
+         list-insertinternal.c, list-internal.h, list-search.c,
+         list-searchselforg.c, list.h, list.hc, vector-searchselforg.c,
+         testsuite/test2.c:
+
+       initial checkin
+
+2005-03-17 15:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_vector/Makefile-files:
+
+       added list-* files
+       added vector-searchselforg.c
+
+2005-03-17 15:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_fmt/: fmt.h, fmtx-32.c:
+
+       fixed declaration of the *_x*int() methods; they do not take a 'base' argument
+
+2005-03-09 15:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-info.c:
+
+       added XIDTYPE support
+
+2005-03-09 15:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/context-sync.hc:
+
+       use EopenD() instead of Eopen()
+
+2005-03-09 15:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_initrddir.m4:
+
+       fixed typo
+
+2005-03-09 15:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       vc_getXIDType(): added
+
+2005-03-09 15:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver-internal.h:
+
+       added some magic to avoid warnings with gcc4
+
+2005-03-09 15:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: Makefile-files, getxidtype.c:
+
+       added getxidtype.c
+
+2005-03-09 15:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/redhat/initpre:
+
+       create /usr/X11 also
+
+2005-03-09 15:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/: Makefile.am, fc3/apt/rpmpriorities,
+         fc3/apt/sources.list:
+
+       added apt support for FC3
+
+2005-03-02 02:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: syscall_adddlimit.c, syscall_getdlimit.c,
+         syscall_remdlimit.c, syscall_setdlimit.c,
+         syscall_adddlimit-v13.hc, syscall_getdlimit-v13.hc,
+         syscall_remdlimit-v13.hc, syscall_setdlimit-v13.hc:
+
+       use CALL_VC_V13B instead of CALL_VC_V13
+
+2005-03-02 02:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vyum:
+
+       allow '--all' param
+
+2005-03-02 02:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/testsuite/cflags.c:
+
+       avoid some compiler warnings
+
+2005-03-02 02:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       added some VC_ATTR_NONNULL() statements
+
+2005-03-02 02:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: syscall_adddlimit-v13.hc, syscall_remdlimit-v13.hc,
+         vserver-internal.h:
+
+       minor cleanups
+
+2005-03-02 01:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/secure-mount.c:
+
+       do not assume 'nodev' on 'devpts'
+
+2005-03-02 01:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver-internal.h:
+
+       CDLIM_USER2KERNEL/CDLIM_KERNEL2USER(): added
+
+2005-03-02 01:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files, lib/syscall_adddlimit-v13.hc,
+         lib/syscall_adddlimit.c, lib/syscall_getdlimit-v13.hc,
+         lib/syscall_getdlimit.c, lib/syscall_remdlimit-v13.hc,
+         lib/syscall_remdlimit.c, lib/syscall_setdlimit-v13.hc,
+         lib/syscall_setdlimit.c, lib/virtual.h, lib/vserver.h,
+         src/Makefile-files, src/vdlimit.c:
+
+       added *vdlimit functions + tools (patch provided by Daniel Hokka Zakrisson)
+
+2005-02-26 00:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-setup.functions:
+
+       added some sanity checks
+
+2005-02-26 00:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/: Makefile-files, wrappers-string.hc, wrappers.h:
+
+       added wrapper around string functions
+
+2005-02-26 00:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/secure-mount.c:
+
+       /me should learn to differ between script-languages and C... strings in C are still marked by >"< but not by >'<...
+       fixed allocation of the newly generated option string
+
+2005-02-25 22:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vapt-get-worker, vyum-worker:
+
+       deprecate usage of $_YUM and $_APT_GET
+
+2005-02-25 22:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/redhat/initpost, scripts/functions, scripts/pkgmgmt,
+         scripts/start-vservers, scripts/util-vserver-vars.pathsubst,
+         scripts/vprocunhide, scripts/vpstree, scripts/vserver,
+         scripts/vserver-build, scripts/vserver-build.apt-rpm,
+         scripts/vserver-build.debootstrap,
+         scripts/vserver-build.functions,
+         scripts/vserver-build.functions.apt,
+         scripts/vserver-build.functions.pkgmgmt,
+         scripts/vserver-build.functions.rpm,
+         scripts/vserver-build.functions.yum, scripts/vserver-build.rpm,
+         scripts/vserver-build.yum, scripts/vserver-copy,
+         scripts/vserver-setup.functions, scripts/vserver.functions,
+         scripts/vserver.start, scripts/vserver.stop,
+         scripts/vservers.grabinfo.sh, scripts/vshelper,
+         scripts/vsysvwrapper, scripts/vtop, scripts/legacy/distrib-info,
+         scripts/legacy/rootshell, scripts/legacy/vserver, sysv/rebootmgr,
+         sysv/vservers-legacy:
+
+       LEGACY BREAKAGE FOR 3RD PARTY PATCHES: introduced a more common naming
+       scheme: global, immutable variables names are now named like '$__ABC'
+       instead of '$ABC'. This happens at much places and will break a lot of
+       patches therefore.
+
+2005-02-25 22:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       changed my GPG key
+
+2005-02-25 22:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/secure-mount.c:
+
+       assume 'nodev' by default
+
+2005-02-25 21:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver-build.functions.yum, vyum-worker:
+
+       added preliminary support for the patch from
+       https://bugzilla.redhat.com/beta/attachment.cgi?id=111435&action=view
+
+2005-02-25 21:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.functions.pkgmgmt:
+
+       avoid ambiguous usage of $PKGDIR, use $PKGINSTALLDIR instead of
+       use $SETUP_CONFDIR instead of $confdir
+
+2005-02-25 21:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver-build.apt-rpm, vserver-build.yum:
+
+       avoid ambiguous usage of $PKGDIR, use $PKGINSTALLDIR instead of
+
+2005-02-21 00:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.functions.rpm:
+
+       rpm.initFilesystem(): fixed variable-names; this caused e.g. an unset %_dbpath macro formerly
+
+2005-02-16 00:13  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.30.204
+
+2005-02-15 23:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       added information where the 'ip' and 'vconfig' programs can be found
+
+2005-02-15 23:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vshelper:
+
+       adjusted the order of cli options evaluation; automake-1.9.5 redirects
+       input from /dev/null so the 'tty -s' check gets triggered and 'make
+       distcheck' fails in the '... --version/--help' tests
+
+2005-02-15 19:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/save_ctxinfo.c:
+
+       fixed name of the run.rev symlink; there was a '/' missing which
+       caused a pollution of the /etc/vservers/.defaults directory with
+       'run.revXXX' entries. (reported and analyzed by Olivier Poitrey).
+
+2005-02-07 19:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions, scripts/vserver-build.functions.pkgmgmt,
+         src/vunify.c:
+
+       fixed typos
+
+2005-02-07 19:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       documented the *namespace options
+
+2005-02-04 13:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       SECURITY: fixed detection of the mtab-location (Georg Glas)
+       https://savannah.nongnu.org/bugs/?func=detailitem&item_id=11844
+
+2005-02-04 03:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       fixed one of the previously added 'test -n'
+
+2005-02-02 15:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_pathprog.m4:
+
+       ENSC_PATHPROG_INIT(): fixed doc
+       ENSC_PATHPROG(): added a '<DESCR>' parameter
+
+2005-02-02 14:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/: compatibility-xhtml.xsl, compatibility.css:
+
+       applied http://vserver.lauft.net/wegen/util-vserver/patches/merge/util-vserver--merge--0.0--patch-2.patch
+
+2005-02-01 18:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.30.203
+
+2005-02-01 18:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/Makefile-files:
+
+       added vyum-worker to AM_INSTALLCHECK_STD_OPTIONS_EXEMPT
+
+2005-02-01 18:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vyum-worker:
+
+       minor cosmetical change
+
+2005-02-01 18:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: functions, pkgmgmt:
+
+       fixed 'local VAR=$(ACTION) || ERROR' constructs; the 'local VAR=$(ACTION)'
+       succeeds everytime so ERROR will be never executed. So, it is rewritten to
+       'local VAR; VAR=$(ACTION) || ERROR'.
+
+2005-02-01 18:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.30.202
+
+2005-02-01 17:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/fc3/rpmlist.d/00.lst:
+
+       initial checkin
+
+2005-02-01 17:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.rpm:
+
+       moved installPackages into vserver-build.functions.rpm
+       added support for preconfigured package-lists
+
+2005-02-01 17:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.functions.rpm:
+
+       rpmlist.*(): added
+
+2005-02-01 17:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build:
+
+       documented the '--empty' switch for the '-m rpm' method
+       allow an increasing debug-level
+
+2005-02-01 17:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       vshelper.isDebug(): fixed it...
+
+2005-02-01 17:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/Makefile.am:
+
+       added the fc3 rpmlist.d directory + content
+
+2005-02-01 17:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst:
+
+       added vserver-build.rpm
+
+2005-02-01 03:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/matchlist-initbyvserver.c,
+         lib_internal/matchlist-initmanually.c,
+         lib_internal/matchlist-initrefserverlist.c, src/vcopy-init.hc,
+         src/vunify-init.hc:
+
+       changed matchlist-API to pass additional information about a
+       vserver. This allows to turn off pkgmgmt-queries for not-yet
+       existent vservers in 'vcopy'
+
+2005-02-01 03:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/matchlist.h:
+
+       struct MatchVserverInfo: added; it allows to pass additional information about the vserver
+
+2005-02-01 03:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/unify-copy.c:
+
+       copyReg(): open out_fd with O_RDWR, fixed resource leak in error-case
+
+2005-02-01 01:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/createskeleton-full.hc:
+
+       argl... fixed overflow when appending the '/'
+
+2005-02-01 00:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml, scripts/functions, scripts/vshelper:
+
+       added 'debug' option for vshelper
+
+2005-02-01 00:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vshelper:
+
+       added delegation support (Herbert Poetzl)
+       http://vserver.13thfloor.at/Experimental/NGNET/delta-vshelper-delegate.diff
+
+2005-01-31 23:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.functions:
+
+       getDistribution(): added support for a default distribution
+
+2005-01-31 23:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: Makefile-files, vserver-build, vserver-build.rpm:
+
+       added the '-m rpm' method
+
+2005-01-31 23:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/: Makefile.am, template/initpost, template/initpre:
+
+       added the 'template' distribution
+
+2005-01-31 18:48  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/rpm-fake.c:
+
+       fixed environment unsetting: it will be now done shortly before execve(2)
+       but not on initialization anymore. This solves the problem when 'rpm' is
+       a wrapper only calling the real 'rpm?'. Then, LD_PRELOAD et.al. was unset
+       and the wrapper not used.
+
+2005-01-31 18:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vshelper:
+
+       fixed the (currently non-existent) child->parent traversal
+
+2005-01-31 18:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/apidoc/Doxyfile.in:
+
+       added DOT_TRANSPARENT + DOT_MULTI_TARGET
+
+2005-01-31 18:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       updated
+
+2005-01-31 18:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am, util-vserver.spec.in, lib/createskeleton-full.hc,
+         scripts/vserver-build.functions, scripts/vserver-setup.functions,
+         src/save_ctxinfo.c:
+
+       removed 'run.rev' as a vserver-local variable and made it a system-wide setting
+
+2005-01-28 02:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       reindented it
+       fixed vshelper documentation
+
+2005-01-27 22:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: functions, pkgmgmt, start-vservers, vapt-get, vpkg,
+         vprocunhide, vrpm, vrpm-preload, vserver, vserver-build,
+         vserver-build.debootstrap, vserver-build.functions.rpm,
+         vserver-setup.functions, vserver-wrapper, vserver.functions,
+         vserver.start, vserver.stop, vshelper, vsomething:
+
+       use 'test -n "..."' instead of 'test "..."'; when "..." expands to '-v'
+       or a similar string, the expression will be misinterpreted (noticed by
+       Werner Schalk)
+
+2005-01-27 21:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.30.201
+
+2005-01-27 21:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: reducecap.c, vserver-info.c:
+
+       reworked the capability.h stuff
+
+2005-01-27 21:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: Makefile-files, capability-compat.h:
+
+       added capability-compat.h
+
+2005-01-27 21:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       added check for <sys/capability.h> header
+
+2005-01-27 21:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       removed the linuxcaps.h bits
+
+2005-01-27 20:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-info.c:
+
+       implemented capability-support check
+
+2005-01-27 20:16  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/rpm-fake.c:
+
+       fixed execution order of chroot(2) and context-creation; this caused
+       errors on kernel 2.6 when the vserver is not running yet
+
+2005-01-27 20:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: .cvsignore, Makefile-files:
+
+       added check-unixfile
+
+2005-01-27 20:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.start:
+
+       execute sanityCheck()
+
+2005-01-27 20:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       moved sanity checks which were spread in various functions into the sanityCheck() method
+       implemented checks for non-newline terminated files and missing capability support
+
+2005-01-27 20:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.functions.yum, scripts/vserver-build.yum,
+         scripts/vsomething, scripts/vyum, scripts/vyum-worker,
+         src/check-unixfile.c:
+
+       initial checkin
+
+2005-01-27 20:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build:
+
+       added 'yum' support
+
+2005-01-27 20:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vrpm-preload:
+
+       reorganized; moved lots of code into the 'functions' file
+
+2005-01-27 20:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added yum* files + vsomething + check-unixfile
+
+2005-01-27 20:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       added yum* support
+       reorganized the rpmFake stuff
+
+2005-01-27 20:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/Makefile-files:
+
+       added the yum* files + vsomething
+
+2005-01-27 20:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/redhat/initpre:
+
+       added missing newline
+
+2005-01-27 20:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/fc3/: pkgs/01, pkgs/02, pkgs/03, yum/yum.conf,
+         yum.repos.d/fedora-devel.repo,
+         yum.repos.d/fedora-updates-testing.repo,
+         yum.repos.d/fedora-updates.repo, yum.repos.d/fedora.repo:
+
+       initial checkin
+
+2005-01-27 20:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/Makefile.am:
+
+       added the yum* stuff for fc3
+
+2005-01-27 20:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst:
+
+       added the yum* files + check-unixfile
+
+2005-01-27 20:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * README:
+
+       mentioned the '-m yum' buildmethod
+
+2005-01-27 00:29  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/getvservercfgstyle.c:
+
+       allow dangling symlinks as /etc/vservers/.../vdir also
+
+2005-01-27 00:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.30.199
+
+2005-01-26 22:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       do not ship the /vservers directory itself; as it is immutable, the
+       extraction will fail else
+
+2005-01-26 21:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/testsuite/.cvsignore:
+
+       updated
+
+2005-01-26 21:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       rearranged some scriptlets to avoid comments after '-p /sbin/ldconfig'
+
+2005-01-26 16:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.start:
+
+       added (untested) support for '/' in the vserver fstab
+
+2005-01-26 16:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       use unique prefixes for variables used in functions with 'eval' statements
+       mountRootFS(): added
+
+2005-01-26 16:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       use unique prefixes for variables used in functions with 'eval' statements
+
+2005-01-26 16:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/testsuite/filecfg-ml.c:
+
+       include <string.h> + <ctype.h>
+
+2005-01-26 16:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/Makefile-files:
+
+       moved rootshell to legacy
+
+2005-01-26 16:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * vserver-start/defaulttty.c:
+
+       include <string.h>
+
+2005-01-26 16:29  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/secure-mount.c:
+
+       added '--rootfs' option
+
+2005-01-26 16:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst:
+
+       moved the v_* initscripts to legacy
+
+2005-01-26 15:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       updated BuildRequires:
+       use 'setattr --barrier' instead of 'chattr +t' in the %post scriptlet
+       moved the v_* initscripts to legacy
+
+2005-01-25 17:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/rootshell[DEAD], contrib/manifest.dat.pathsubst,
+         scripts/legacy/rootshell:
+
+       moved rootshell script to legacy
+
+2005-01-21 14:49  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/legacy/vserver:
+
+       fixed http://savannah.nongnu.org/bugs/?func=detailitem&item_id=11570:
+
+         "vserver myvserver start" gives exit code 1 if there is no file
+         /etc/vservers/myvserver.sh, since the last statement in vserver
+         ("test -x /etc/vservers/$1.sh && ...") evaluates to 1 in this case.
+
+         [Daniel Hermann]
+
+2005-01-21 14:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver:
+
+       be more verbosely when vserver could not be determined and give hints
+       about possible solutions (based upon ideas by Thorsten Gunkel)
+
+2005-01-21 14:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-setup.functions:
+
+       interface-configuration: give out a warning when no device was configured
+
+2005-01-21 14:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       * interface-configuration: accept 'nodev' without a configured 'dev';
+         formerly the interface was silently ignored when 'dev' was missing
+       * added some sanity checks for the behaviour described above
+
+2005-01-21 14:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/rpm-fake.c:
+
+       added rpm_execcon() wrapper to make it work in SELinux environments
+       call execve(2) directly instead of execv(3)
+
+2005-01-07 18:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * README:
+
+       fixed typos
+       cleanups + enhancements
+
+2005-01-07 17:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * README:
+
+       "Notes for distributors" + "Which version shall I use?" added
+
+2005-01-07 17:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_dietlibc.m4:
+
+       Fixed last patch: use '[[' instead of '[' (found by Hans Ulrich Niedermann)
+
+2005-01-07 00:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       call ENSC_DIETLIBC_SANITYCHECK, AC_CANONICAL_HOST + AC_CANONICAL_BUILD
+
+2005-01-07 00:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_dietlibc.m4:
+
+       ENSC_DIETLIBC_SANITYCHECK(): added
+       made ENSC_VERSION_DIETLIBC uppercase
+       ignore extra specifiers in dietlibc's minor version (reported by Hans Ulrich Niedermann)
+
+2005-01-07 00:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       fix typo in $_MKTEMPDIR: Use $_MKTEMP not $MKTEMP (fixed by Hans Ulrich Niedermann)
+
+2004-12-28 20:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: functions, pkgmgmt, start-vservers,
+         util-vserver-vars.pathsubst, vpkg, vrpm-preload,
+         vserver-build.debootstrap, vserver-build.functions.apt,
+         vserver-wrapper, vserver.start, vserver.stop:
+
+       use $_<prog> (which expands to absolute paths) instead of trusting into a good $PATH
+
+2004-12-28 20:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       use $_<prog> (which expands to absolute paths) instead of trusting into a good $PATH
+       a small VLAN fix (do not quote the splitted dev)
+       minor cleanups
+
+2004-12-28 20:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       use ENSC_PATHPROG & friends
+
+2004-12-28 20:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_pathprog.m4:
+
+       initial checkin
+
+2004-12-28 20:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       use ${ENSC_PATHPROG_SED} when substituting prognames
+
+2004-12-28 13:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_dietlibc_compat.m4:
+
+       check more syscall variants
+
+2004-12-28 13:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       s!\params!\param!
+       added doc about vc_get_iattr()
+
+2004-12-28 12:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/cfg.txt[DEAD]:
+
+       removed since obsoleted by configuration.xml
+
+2004-12-21 08:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vsched.c:
+
+       fixed segfault when no arguments are given (reported by Adrian Reyer)
+
+2004-12-16 01:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/keep-ctx-alive.c:
+
+       renamed the 'fd_set' variable to 'fdset'. former name causes problems
+       with certain FD_* implementations (reported by Adrian Reyer)
+
+2004-12-09 14:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * build-all:
+
+       added fc-3 host
+
+2004-12-09 14:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       getfilecontext.c: added
+
+2004-12-09 14:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: getfilecontext.c, vserver.h:
+
+       vc_getfilecontext(): as noticed by daniel_hozac in IRC, this function
+       was horribly broken. Fixed and moved it into an own file as it is too
+       complex for an inline function. Documentation was added also.
+
+2004-12-07 12:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * vserver-start/main.c:
+
+       include <unistd.h>
+
+2004-12-07 12:14  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       read enter-shell from the defaults-directory also
+       use prio-bias instead of cpu-mask
+
+2004-12-07 12:13  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/filecfg-iteratemultiline.c:
+
+       include <string.h>
+
+2004-12-07 12:13  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/testsuite/cflags.c:
+
+       added some new flags
+
+2004-12-07 12:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       do not mention the /hostname + /domainname params anymore
+       removed vsched/cpu-mask
+       added vsched/priority-bias
+
+2004-10-21 21:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       added/updated flags and capabilities
+
+2004-10-21 21:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/islink.c:
+
+       initial checkin
+
+2004-10-21 21:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/internal.h:
+
+       utilvserver_isLink(): added prototype
+
+2004-10-21 21:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/cflags-v13.c:
+
+       added lots of new flags
+
+2004-10-21 20:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/ccaps-v13.c:
+
+       added 'remount' + 'icmp' cap; 'ping' is kept for compatibility reasons
+
+2004-10-21 20:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       added islink.c
+
+2004-10-20 01:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       getFileValue(): modified to accept a list of candidates
+
+2004-10-20 01:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vcontext.c:
+
+       merged from UV_NAMESPACE_AFTER_CHROOT branch
+
+2004-10-20 01:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       added 'update-doc' target
+
+2004-10-20 01:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/wrappers-vserver.hc:
+
+       Evc_{new,enter}_namespace(): added
+
+2004-10-19 23:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.30.196
+
+2004-10-19 23:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * kernel/: context.h, cvirt.h:
+
+       updated to vs1.9.3-rc4
+
+2004-10-19 23:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * vserver-start/: configuration-init.c, configuration.c,
+         configuration.h, interface.c, interface.h, main.c, scriptlets.c,
+         vserver-start.h:
+
+       added lots of new code
+
+2004-10-19 23:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * vserver-start/defaulttty.c,
+         lib_internal/filecfg-iteratemultiline.c,
+         lib_internal/testsuite/filecfg-ml.c:
+
+       initial checkin
+
+2004-10-19 23:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * vserver-start/Makefile-files:
+
+       added defaulttty.c
+
+2004-10-19 23:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/reducecap.c:
+
+       use some dirty hacks to include <linuxcaps.h> cleanly
+
+2004-10-19 23:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.stop:
+
+       execute 'prepareStop()'
+
+2004-10-19 23:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       made runlevel_{start,stop} global variables
+       prepareStop(): added
+       set PREVLEVEL on 'vserver ... stop' (required by Debian)
+
+2004-10-19 23:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-setup.functions:
+
+       s!prefix!prefixlen!
+
+2004-10-19 23:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/testsuite/Makefile-files:
+
+       added filecfg-ml test
+
+2004-10-19 23:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/string.hc:
+
+       String_c_str(): added
+
+2004-10-19 23:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/string.h:
+
+       ENSC_STRING_*FIXED(): added
+
+2004-10-19 23:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/filecfg.h:
+
+       FileCfg_iterateOverMultiLine(): added prototypes and related declarations
+
+2004-10-19 23:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/Makefile-files:
+
+       added filecfg-iteratemultiline.c
+
+2004-10-19 23:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/syscall_setsched-v13.hc:
+
+       vc_set_sched_v13obs(): use VCMD_set_sched_v2 instead of VCMD_set_sched
+
+2004-10-19 23:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/wrappers-unistd.hc:
+
+       Enice(): added
+
+2004-10-19 23:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       s!prefix!prefix-length!
+
+2004-10-19 23:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       added new kernel headers
+       changed substition of linuxcaps.h; oldish 'sed' versions do not understand '\<' regexs
+
+2004-10-18 18:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vcontext.c:
+
+       do not include "linuxcaps.h" anymore
+
+2004-10-18 18:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * kernel/: context.h, cvirt.h, inode.h, legacy.h, limit.h,
+         namespace.h, network.h, sched.h, signal.h, switch.h, xid.h:
+
+       updated
+
+2004-10-18 18:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/Makefile-files:
+
+       removed stylesheets and images from the main-package; they are now in the web-CVS
+
+2004-10-18 18:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/: configuration-flower.css[DEAD],
+         configuration-lsd.css[DEAD], configuration-lsd1.css[DEAD],
+         flowers.png[DEAD], flowers1.png[DEAD], flowers2.png[DEAD]:
+
+       moved into web-CVS
+
+2004-10-18 17:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * kernel/: debug.h, dlimit.h:
+
+       updated
+
+2004-10-06 05:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * README:
+
+       updated note about 'vserver-stat' and differ between 2.4 and 2.6
+       kernel
+
+2004-10-06 05:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/unify-unify.c:
+
+       retain 'errno' on the final unlink()
+
+2004-10-06 05:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       link secure-mount against libvserver
+
+2004-10-06 05:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/secure-mount.c:
+
+       added better diagnostic when fstab-parsing fails
+       use strsep() instead of strtok_r() in the parser to make the line-number counter work
+
+2004-10-01 14:16  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.30.195
+
+2004-10-01 14:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       _getProcNumberCount(): s!$_ctx!$1!
+
+2004-10-01 13:50  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac, m4/ensc_dietlibc.m4:
+
+       give out information about version of the found dietlibc
+
+2004-10-01 13:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_dietlibc.m4:
+
+       fixed version-detection when additional information are following the
+       number
+
+2004-10-01 13:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       use more efficient ways to detect number of processes in a context
+       (access /proc/virtual/... information instead of executing vps)
+
+2004-10-01 12:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver-build, vserver-build.debootstrap:
+
+       allowed to specify additional debootstrap options
+
+2004-10-01 12:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: vps.c, vserver-stat.c:
+
+       added warnings regarding procfs-security
+
+2004-09-24 17:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/rpm-fake.c:
+
+       removed a __THROW which is not needed and causes errors with newer gcc
+
+2004-09-24 17:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/syscall_setvhiname-v13.hc:
+
+       use a better method to copy labels; formerly, bad parameters could
+       cause undefined behaviour
+
+2004-09-24 17:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/Makefile-files:
+
+       fixed typo
+
+2004-09-24 01:13  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       added some comments for interfaces/../{name,nodev}
+
+2004-09-24 01:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/: configuration-flower.css, configuration-lsd.css,
+         configuration-lsd1.css, configuration-xhtml.xsl,
+         configuration.css:
+
+       made it validate as xhtml
+
+2004-09-24 00:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * build-all:
+
+       fixed CLEAN=1 usecase
+       use gcc4 instead of gcc35
+
+2004-09-24 00:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.debootstrap:
+
+       added better diagnostic for failed debootstrap download
+
+2004-09-24 00:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.css:
+
+       added *.elements templates
+
+2004-09-24 00:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       updated rlimits description (reported by Nikola Donev)
+       added warning about explicit 'fakeinit' usage
+
+2004-09-24 00:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration-xhtml.xsl:
+
+       added new stylesheets
+       implemented <elements>...</elements> support
+
+2004-09-24 00:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/Makefile-files:
+
+       added new stylesheets and images
+
+2004-09-24 00:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/: configuration-flower.css, configuration-lsd1.css,
+         flowers.png, flowers1.png, flowers2.png:
+
+       initial checkin
+
+2004-09-24 00:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/misc/debootstrap.uri:
+
+       updated
+
+2004-09-22 22:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       s!commented!documented!
+
+2004-09-22 22:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       commented the possible options for 'rpmbuild'
+
+2004-09-22 22:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vsched.c:
+
+       use new vc_set_sched structure
+       generalized CLI options a little bit
+
+2004-09-22 22:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vattribute.c:
+
+       set the "secure" flags on '--secure' manually. This is a crude hack
+       and must be solved better.
+
+2004-09-22 22:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       struct vc_set_sched: updated + added some flags
+       vc_get_insecureflags(): removed again; it is now handled by the utilities
+
+2004-09-22 22:49  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver-internal.h:
+
+       ENSC_STRUCT_IDX, ENSC_SAME_STRUCT_IDX: added
+
+2004-09-22 22:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/syscall_setsched.c:
+
+       added support for the new 'struct vcmd_set_sched_v3'
+
+2004-09-22 22:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/syscall_setsched-v13.hc:
+
+       updated to new 'struct vcmd_set_sched_v3'
+       added some optimizations
+
+2004-09-22 22:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * kernel/sched.h:
+
+       added 'struct vcmd_set_sched_v3' plus macros
+
+2004-09-10 13:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver-internal.h:
+
+       CALL_VC_V13B(), CALL_VC_V13OBS(): added
+
+2004-09-10 02:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vlimit.c:
+
+       fixed missing argument for '--xid' switch
+
+2004-09-07 22:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vattribute.c:
+
+       use vc_get_insecureflags() on '--secure' option
+
+2004-09-07 22:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       vc_get_insecureflags(): added (does this really make sense??)
+
+2004-09-07 22:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/chcontext:
+
+       fixed concatenation of flags + caps
+
+2004-09-07 22:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       added an explicit requirement for version 1.9 of automake
+
+2004-08-27 23:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.30.193
+
+2004-08-27 23:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver.stop, vserver, vserver.start:
+
+       follow LSB behavior when starting/stopping a vserver (no error, when already running/stopped)
+       adjusted some exit-codes
+
+2004-08-27 16:14  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/secure-mount.c:
+
+       showHelp(): improved message
+
+2004-08-27 10:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/misc/debootstrap.uri:
+
+       updated again...
+
+2004-08-27 10:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/save_ctxinfo.c:
+
+       append '\0' to the buffer read by readlink()
+
+2004-08-27 10:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/keep-ctx-alive.c:
+
+       include <sys/select.h>
+
+2004-08-27 10:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/wrappers-unistd.hc:
+
+       Ereadlink*(): return the count of written chars
+
+2004-08-25 02:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions, scripts/pkgmgmt, scripts/vserver.functions,
+         vserver-start/mount.c:
+
+       use the new 'secure-mount' CLI
+
+2004-08-25 02:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/secure-mount.c:
+
+       reworked it; '--chroot' does not accept an argument now, and '--secure'
+       is deprecated. Lots of code was modernized
+
+2004-08-19 18:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * vserver-start/: configuration-init.c, configuration.c,
+         configuration.h, interface-add.c, interface-read.c, interface.c,
+         interface.h, main.c, scriptlets.c, vshelper.c:
+
+       added lots of new code
+
+2004-08-19 17:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * vserver-start/: interface-print.c, interface-remove.c, mount.c,
+         mount.h, undo.c, undo.h:
+
+       initial checkin
+
+2004-08-19 16:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vnamespace.c:
+
+       fixed some #includes for the new position of sys_clone.h
+
+2004-08-19 16:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vkill.c:
+
+       define ENSC_WRAPPERS_UNISTD; it is used for some legacy code
+
+2004-08-19 16:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/rpm-fake.c:
+
+       fixed some #includes to reflect changed position of sys_clone.h
+
+2004-08-19 16:29  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/fstool.h:
+
+       checkForRace(), resolveCtx(): removed prototypes
+
+2004-08-19 16:29  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/fstool.c:
+
+       checkForRace(): removed as unused
+
+2004-08-19 16:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/chxid.c:
+
+       use vc_xidopt2xid() instead of resolveCtx()
+
+2004-08-19 16:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/sys_clone.h[DEAD]:
+
+       moved into lib_internal/
+
+2004-08-19 16:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/fstool-resolvectx.c[DEAD]:
+
+       obsoleted; functionality is already in libvserver
+
+2004-08-19 16:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/testsuite/command.c:
+
+       applied API changes
+
+2004-08-19 16:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/command.h:
+
+       added support for plain-style char** args
+
+2004-08-19 16:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/: command-appendparameter.c, command-exec.c,
+         command-free.c, command-init.c:
+
+       handle plain-style char** args also
+
+2004-08-19 16:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/: command-setparams.c, sys_clone.h:
+
+       initial checkin
+
+2004-08-19 16:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/Makefile-files:
+
+       added command-setparams.c and sys_clone.h
+
+2004-08-19 16:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst:
+
+       marked vserver.start.bin as C99-only
+
+2004-08-19 16:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * pathconfig.h.pathsubst:
+
+       added some new paths
+
+2004-08-19 16:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       automake-1.9 fixes: s!VSERVER_LDFLAGS!VSERVER_LDFLGS!
+       removed some libtool-hacks which are not needed with automake-1.9 anymore
+
+2004-08-19 16:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * vserver-start/Makefile-files:
+
+       automake-1.9 fixes: s!VSERVER_LDFLAGS!VSERVER_LDFLGS!
+       added lots of new files
+
+2004-08-19 16:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       automake-1.9 fixes: s!VSERVER_LDFLAGS!VSERVER_LDFLGS!
+       removed src/sys_clone.h (now in lib_internal/)
+       removed src/fstool-resolvectx.c
+
+2004-08-19 15:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/testsuite/Makefile-files, tests/Makefile-files:
+
+       automake-1.9 fixes: s!VSERVER_LDFLAGS!VSERVER_LDFLGS!
+
+2004-08-19 15:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/xidopt2xid.c:
+
+       removed code without an effect
+
+2004-08-19 15:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/syscall-syscall.c:
+
+       gcc35 fixes: do not make vc_syscall() an alias for vserver() but execute it.
+
+2004-08-19 15:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/isfile.c:
+
+       initial checkin
+
+2004-08-19 15:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/internal.h:
+
+       utilvserver_isFile(): added prototype
+
+2004-08-19 15:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/getvservercfgstyle.c:
+
+       fixed detection of legacy-style (check for file but not directory)
+
+2004-08-19 15:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       addded 'isfile.c'
+
+2004-08-19 15:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/wrappers-stdlib.hc:
+
+       Esetenv(): added
+
+2004-08-19 15:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/wrappers-socket.hc:
+
+       Esend(), Esocketpair(): added
+
+2004-08-19 15:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_fmt/fmt-internal.h:
+
+       minor optimizations
+
+2004-08-19 15:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration-xhtml.xsl:
+
+       add '<ulink>' tag
+
+2004-07-08 13:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       documented vdir, run, run.rev (provided by Olivier Poitrey)
+       added some links about [bc]capabilities and flags
+       added more scheduler doc (provided by Olivier Poitrey)
+       added some comments about 2.4 vs. 2.6 at rlimits/ulimits
+       added doc about rlimit's 'min' setting
+
+2004-07-03 04:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.30.190
+
+2004-07-03 03:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       fixed path of the xsd file
+
+2004-07-03 03:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * build-all:
+
+       added fc-2
+
+2004-07-03 03:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       prepareInit(): fixed case when .autofsck does not exist
+
+2004-07-03 03:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/chcontext:
+
+       accept --xid and prefer it against --ctx in the doc
+       added --silentexist option at --create
+
+2004-07-03 03:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/suse91/apt/rpmpriorities:
+
+       initial checkin
+
+2004-07-03 03:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/redhat/rc.sysinit:
+
+       call 'true' finally
+
+2004-07-03 03:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/redhat/initpost:
+
+       added comment about possible races
+       fixed /etc/inittab substitution
+
+2004-07-03 03:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/Makefile.am:
+
+       added redhat/rc.sysinit
+       added suse/apt/rpmpriorities
+       moved suse/apt/sources.list into the cfgdir
+
+2004-07-03 03:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst:
+
+       added vserver.start.bin
+
+2004-07-03 03:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * vserver-start/Makefile-files:
+
+       use AM_INSTALLCHECK_STD_OPTIONS_EXEMPT for now
+
+2004-07-03 02:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/Makefile.am:
+
+       added suse91 files
+
+2004-07-03 02:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/: redhat/rc.sysinit, suse91/apt/sources.list,
+         suse91/initpost, suse91/pkgs/01, suse91/pkgs/02,
+         suse91/rpm/macros:
+
+       initial checkin
+
+2004-07-03 02:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/redhat/initpost:
+
+       some enhancements for 'plain' initstyle
+
+2004-07-03 02:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/testsuite/.cvsignore:
+
+       added some files
+
+2004-07-03 02:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * vserver-start/.cvsignore:
+
+       initial checkin
+
+2004-07-03 02:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * vserver-start/: configuration-init.c, configuration.c,
+         configuration.h, interface-add.c, interface-free.hc,
+         interface-init.hc, interface-read.c, interface.c, interface.h,
+         main.c, scriptlets.c, vserver-start.h, vshelper.c, vshelper.h:
+
+       initial checkin
+
+2004-07-03 02:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * vserver-start/Makefile-files:
+
+       added lots of files
+
+2004-07-03 02:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-info.c:
+
+       added CANONIFY tag
+
+2004-07-03 02:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/secure-mount.c:
+
+       rewrite 'ext*' to 'ufs'
+
+2004-07-03 01:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver.start, vserver.stop:
+
+       use a canonified lockfile-name
+
+2004-07-03 01:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       function prepareInit(): do some cleanups in the plain-mode
+
+2004-07-03 01:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       vshelper.initSync(): use $1 instead of $VSERVER_DIR
+
+2004-07-03 01:49  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/util.h:
+
+       include util-lockfile.h
+       canonifyVserverName(): added prototype
+
+2004-07-03 01:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/util-mem.h:
+
+       optimized it a little bit
+
+2004-07-03 01:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/pathinfo.h:
+
+       ENSC_PI_DECLARE(): added
+
+2004-07-03 01:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/command-wait.c:
+
+       fixed stupid typo
+
+2004-07-03 01:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/Makefile-files:
+
+       added lots of new files
+
+2004-07-03 01:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/: errinfo-writeerrno.c, errinfo.h,
+         filecfg-readentryflag.c, filecfg-readentrystr.c, filecfg.h,
+         util-canonify.c, util-lockfile.c, util-lockfile.h:
+
+       initial checkin
+
+2004-07-03 01:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       small cosmetical cleanups
+
+2004-07-03 01:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/misc/mtab:
+
+       s!ext2!ufs!
+
+2004-07-03 01:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * pathconfig.h.pathsubst:
+
+       added lots of PATH_* and PROG_* macros needed for vserver-start.bin
+
+2004-07-03 01:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * build-all:
+
+       removed gcc34 target (now default)
+       added gcc35 target (not working currently)
+
+2004-07-01 13:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.start:
+
+       (re)enabled nice-support for 2.6 vservers which was omitted inadvertently
+
+2004-07-01 12:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vlimit.c:
+
+       fixed misinterpretation of '--xid' introduced by rev 1.17
+
+2004-06-29 18:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.apt-rpm:
+
+       fixed installation at non-standard places
+
+2004-06-29 18:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build:
+
+       fixed doc ('pkgcfgbase' vs. 'pkgbase')
+
+2004-06-27 16:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/Makefile-files:
+
+       added command* files and testsuite/
+
+2004-06-27 16:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/command-appendparameter.c,
+         lib_internal/command-exec.c, lib_internal/command-free.c,
+         lib_internal/command-init.c, lib_internal/command-reset.c,
+         lib_internal/command-wait.c, lib_internal/command.h,
+         lib_internal/testsuite/.cvsignore,
+         lib_internal/testsuite/Makefile-files,
+         lib_internal/testsuite/command.c, build-all:
+
+       initial checkin
+
+2004-06-27 15:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-stat.c:
+
+       enhanced output for old-style vservers
+
+2004-06-27 15:13  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/misc/debootstrap.uri:
+
+       updated...
+
+2004-06-27 15:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-info.c:
+
+       assume '- SYSINFO' when no other options are given
+
+2004-06-27 15:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vcopy.c:
+
+       made it work...
+
+2004-06-27 15:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.skeleton:
+
+       do not fail when '-d' is not specified and distribution can not be detected
+
+2004-06-27 15:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.functions:
+
+       getDistribution(): added detection for slackware and gentoo
+
+2004-06-27 15:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vprocunhide:
+
+       fixed typos
+
+2004-06-27 15:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/unify-unify.c:
+
+       Unify_unify(): made it work also when destination file does not exist (needed for vcopy)
+
+2004-06-27 15:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/unify-settime.c:
+
+       Unify_setTime(): skip operation on symlinks
+
+2004-06-27 15:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       vc_syscall(): added prototype
+       added/updated some doc
+
+2004-06-27 15:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/syscall-syscall.c:
+
+       initial checkin
+
+2004-06-27 15:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: getvserverbyctx-compat.hc, getvserverctx.c:
+
+       added legacy support
+
+2004-06-27 15:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       added syscall-syscall.c
+
+2004-06-27 15:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_fmt/fmt.h:
+
+       cleanups; removed unneeded #undef's
+
+2004-06-27 14:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       added comment about 'capabilities' file and kernelversion
+
+2004-06-17 23:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * vserver-start/Makefile-files:
+
+       initial checkin
+
+2004-06-17 23:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       added silent.% target
+       include ensc_fmt/ and vserver-start/ files
+       minor cosmetical fixes
+
+2004-06-16 12:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_vector/: Makefile-files, vector-zeroend.c, vector.h:
+
+       added Vector_zeroEnd() function
+
+2004-06-16 12:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       moved fmt* functionality into the 'ensc_fmt' module
+       removed '-D_REENTRANT' as it is defined globally
+
+2004-06-16 12:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_fmt/.cvsignore, ensc_fmt/Makefile-files, ensc_fmt/fmt-32.c,
+         ensc_fmt/fmt-64.c, ensc_fmt/fmt-internal.h,
+         ensc_fmt/fmt-tai64n.c, ensc_fmt/fmt.h, ensc_fmt/fmt.hc,
+         ensc_fmt/fmtx-32.c, ensc_fmt/fmtx-64.c, ensc_fmt/fmtx.hc,
+         lib/fmt-32.c[DEAD], lib/fmt-64.c[DEAD], lib/fmt-internal.h[DEAD],
+         lib/fmt.h, lib/fmt.hc[DEAD], lib/fmtx-32.c[DEAD],
+         lib/fmtx-64.c[DEAD], lib/fmtx.hc[DEAD]:
+
+       moved fmt* functionality into the 'ensc_fmt' module
+
+2004-05-27 02:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vcontext.c:
+
+       s!fakeinit!initpid! at some places
+
+2004-05-27 02:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       use '--fakeinit' by default; users will have to disable it explicitly
+       by putting '~fakeinit' into the 'flags' configuration file
+
+2004-05-27 02:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.debootstrap:
+
+       cleanups
+
+2004-05-27 02:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * README:
+
+       fixed typos
+
+2004-05-27 02:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/chcontext:
+
+       s!fakeinit!initpid! at some places
+
+2004-05-27 02:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/misc/debootstrap.uri:
+
+       updated
+
+2004-05-27 02:50  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       (re)added the MANIFEST_* variables which were lost some time ago; this
+       will preserve %%config files...
+
+2004-05-27 02:48  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       make util-vserver.spec readonly to prevent losing of changes
+
+2004-05-27 02:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * README:
+
+       added content
+
+2004-05-22 02:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * sysv/vprocunhide:
+
+       fixed rc conflict with /etc/rc.d/functions; reported by taxcollector
+       in https://savannah.nongnu.org/bugs/?func=detailitem&item_id=9052
+
+2004-05-21 17:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac, m4/gpgsig.am:
+
+       added support for the default GPG key
+
+2004-05-21 17:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: functions, vapt-get, vrpm:
+
+       added some color to the life
+
+2004-05-20 02:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: pkgmgmt, vserver:
+
+       mount filesystems on 'vserver ... pkgmgmt ...' operations
+
+2004-05-19 01:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS:
+
+       version 0.29.214
+
+2004-05-19 01:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/misc/debootstrap.uri:
+
+       updated URL (again...)
+
+2004-05-19 01:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/: Makefile.am, fc2/apt/rpmpriorities,
+         fc2/apt/sources.list, fc2/pkgs/01, fc2/pkgs/02:
+
+       added fc2 support
+
+2004-05-19 01:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst:
+
+       removed clearenv, added sigexec
+
+2004-05-19 01:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       s!@PACAKGE@!%name! at some places
+
+2004-05-19 01:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       substitute ENV
+
+2004-05-11 20:49  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac, scripts/util-vserver-vars.pathsubst,
+         scripts/vserver.start, src/Makefile-files, src/clearenv.c[DEAD]:
+
+       use 'env' instead of 'clearenv'; the '-i' switch is SUSv3 and every implementation should have it...
+
+2004-05-11 20:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/sigexec.c:
+
+       initial checkin
+
+2004-05-11 20:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: context-sync.hc, vnamespace.c, vps.c:
+
+       set SIGCHLD sigmask to an expected value (SIG_DFL)
+       use new exitLikeProcess() interface
+
+2004-05-11 20:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: chcontext.c, secure-mount.c, vcontext.c, vkill.c:
+
+       set SIGCHLD sigmask to an expected value (SIG_DFL)
+
+2004-05-11 20:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vshelper:
+
+       execute vshelper through 'sigexec' to set expected sigmask
+
+2004-05-11 20:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: .cvsignore, Makefile-files:
+
+       added sigexec
+
+2004-05-11 20:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/util-exitlikeprocess.h:
+
+       exitLikeProcess(): readded the 'NORETURN' and added a 'ret' parameter
+
+2004-05-11 20:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/util-exitlikeprocess.c:
+
+       exitLikeProcess(): never return...
+
+2004-05-11 20:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/switchtowatchxid.c:
+
+       switchToWatchXid(): modified the new migrate-path to work when there exists a process in xid 1 already
+
+2004-05-08 04:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac, NEWS:
+
+       version 0.29.213
+
+2004-05-08 03:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/exec-ulimit.c:
+
+       added support for 'core'
+
+2004-05-08 03:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vps.c:
+
+       use new exitLikeProcess() interface
+       better error-handling
+
+2004-05-08 03:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: context-sync.hc, vnamespace.c:
+
+       use new exitLikeProcess() interface
+
+2004-05-08 03:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver.start, vserver.stop:
+
+       added locking
+       call setDefaultTTY() correctly
+
+2004-05-08 03:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.apt-rpm:
+
+       call 'vapt-get -- clean' after building the vserver
+
+2004-05-08 03:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       setDefaultTTY(): redirect every descriptors
+
+2004-05-08 03:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/util-exitlikeprocess.h:
+
+       exitLikeProcess(): removed the 'NORETURN'; this causes strange error when the function returns
+       exitLikeProcess(): added a second, 'char *' parameter for the human readable command
+
+2004-05-08 03:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/util-exitlikeprocess.c:
+
+       be more verbose when sending a signal
+
+2004-05-08 03:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/testsuite/cflags.c:
+
+       some changes to make gcc34 happy
+
+2004-05-08 03:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/val2text.hc:
+
+       include <strings.h>
+
+2004-05-08 03:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/getvservername.c:
+
+       getRecentName(): use realpath(3) instead of errorprone 'chdir()' calls
+
+2004-05-08 03:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: getvserverbyctx-compat.hc, getvserverctx.c:
+
+       optimized buffersizes
+
+2004-05-08 03:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       fixed apps/vunify/logfile documentation; it must be configured on a
+       per-system, but not per-vserver base
+
+2004-05-08 03:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/misc/debootstrap.uri:
+
+       updated again
+
+2004-05-05 21:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/clearenv.c:
+
+       fixed case when '--' is used
+
+2004-05-05 21:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vshelper:
+
+       fixed typo
+
+2004-05-05 21:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.start:
+
+       use 'clearenv' in the new path also
+
+2004-05-05 21:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       sendKillSequence(): be silent and succeed everytime
+
+2004-05-05 21:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-setup.functions:
+
+       removed legacy code
+
+2004-05-05 21:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vrpm-preload, src/rpm-fake-resolver.c, src/rpm-fake.c:
+
+       added code to preserve capabilities and flags
+
+2004-05-05 21:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/unify-unify.c:
+
+       added some doc
+
+2004-05-05 21:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/syscall_setiattr-fscompat.hc:
+
+       be more carefully regarding signed vs. unsigned int...
+
+2004-05-05 21:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/bcaps-v13.c:
+
+       removePrefix(): fixed another 'len' issue
+       include <strings.h>
+
+2004-04-30 12:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/bcaps-v13.c:
+
+       removePrefix(): fixed case when len<4
+
+2004-04-28 21:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/changelog.txt[DEAD]:
+
+       removed since unused
+
+2004-04-28 20:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/apidoc/Makefile-files:
+
+       added list2xxx.syntax
+
+2004-04-28 20:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/readlink.c:
+
+       enhanced errormessages
+
+2004-04-28 20:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: rpm-fake.c, vattribute.c:
+
+       use vc_get_insecurebcaps() instead of vc_get_insecurecaps()
+       set secure ccapabilities
+
+2004-04-28 20:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: chcontext.c, reducecap.c:
+
+       use vc_get_insecurebcaps() instead of vc_get_insecurecaps()
+
+2004-04-28 20:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/Makefile-files:
+
+       added coreassert.h
+
+2004-04-28 20:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/testsuite/cflags.c:
+
+       use <lib_internal/coreassert.h>
+       added new testcases
+
+2004-04-28 20:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/testsuite/: fmt.c, parselimit.c:
+
+       use <lib_internal/coreassert.h>
+
+2004-04-28 20:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/testsuite/Makefile-files:
+
+       define ENSC_TESTSUITE
+
+2004-04-28 20:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/apidoc/list2xxx.syntax, lib_internal/coreassert.h:
+
+       initial checkin
+
+2004-04-28 20:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/apidoc/Doxyfile.in:
+
+       set EXAMPLE_PATH
+
+2004-04-28 20:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       vc_get_insecureccaps(): added
+       cleanups
+       added documentation
+
+2004-04-28 20:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/val2text.hc:
+
+       use strncasecmp() instead of strncmp()
+
+2004-04-28 20:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/listparser.hc:
+
+       improved error-detection for the '^' prefix
+       added support for 'none'
+       allow '0'
+
+2004-04-28 19:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/bcaps-v13.c:
+
+       added bcapability names
+       added code to remove a 'CAP_' prefix
+
+2004-04-28 19:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: Makefile-files, getinsecurebcaps.c,
+         getinsecurecaps.c[DEAD]:
+
+       renamed getinsecurecaps.c to getinsecurebcaps.c
+
+2004-04-23 18:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration-lsd.css, NEWS, configure.ac:
+
+       version 0.29.211
+
+2004-04-23 18:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       readjusted Release:
+
+2004-04-23 16:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       cleaned up the %file-lists
+       buildrequire 'xalan-j' (can be disabled with '--without xalan')
+       removed 'libxslt' buildrequire
+
+2004-04-23 16:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/Makefile-files:
+
+       remove *.html only, when we can recreate them
+
+2004-04-23 13:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       fixed typo
+
+2004-04-23 13:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/Makefile-files:
+
+       removed FAQ.txt and configuration.dtd
+       added configuration.xsd
+
+2004-04-23 13:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/FAQ.txt[DEAD]:
+
+       obsoleted
+
+2004-04-22 22:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       added 'net' API
+       disable 'legacy' API by default
+
+2004-04-22 22:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * compat.h:
+
+       added nid_t
+
+2004-04-22 22:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/reducecap.c:
+
+       fixed warnings when compiled without legacy-mode
+
+2004-04-22 22:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: Makefile-files, ncaps-net.c, ncaps_list-net.c,
+         nflags-net.c, nflags_list-net.c, syscall_getncaps-net.hc,
+         syscall_getncaps.c, syscall_getnflags-net.hc,
+         syscall_getnflags.c, syscall_getnxinfo-net.hc,
+         syscall_getnxinfo.c, syscall_gettasknid-net.hc,
+         syscall_gettasknid.c, syscall_netadd-net.hc, syscall_netadd.c,
+         syscall_netcreate-net.hc, syscall_netcreate.c,
+         syscall_netmigrate-net.hc, syscall_netmigrate.c,
+         syscall_netremove-net.hc, syscall_netremove.c,
+         syscall_setncaps-net.hc, syscall_setncaps.c,
+         syscall_setnflags-net.hc, syscall_setnflags.c,
+         vserver-internal.h, vserver.h:
+
+       added network layer functions
+
+2004-04-22 22:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/syscall_ctxcreate-v13.hc:
+
+       fixed return value
+
+2004-04-22 21:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.dtd[DEAD]:
+
+       obsoleted by configuration.xsd
+
+2004-04-22 21:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * THANKS:
+
+       added Olivier Poitrey
+
+2004-04-22 21:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       use xalan instead of xsltproc
+
+2004-04-22 21:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/: configuration-xhtml.xsl, configuration.xml,
+         configuration.xsd:
+
+       use the new, XSD-based format which was defined by Olivier Poitrey
+
+2004-04-22 21:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration-xhtml.xsl:
+
+       made it work with xalan
+       removed debug message
+
+2004-04-22 21:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/beautify.xsl[DEAD]:
+
+       obsoleted
+
+2004-04-22 21:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/Makefile-files:
+
+       use xalan
+
+2004-04-22 20:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * kernel/: network.h, sched.h:
+
+       updated to vs1.9.0pre12
+
+2004-04-22 17:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: cflags-v13.c, testsuite/cflags.c:
+
+       use more specific names for the flags
+
+2004-04-21 23:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.start:
+
+       give correct vserver-name in the hints ($VSERVER_DIR instead of $VSERVER_NAME)
+
+2004-04-21 23:16  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       moved the 'ip_only' handling to the right place
+
+2004-04-21 11:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vshelper-sync.c:
+
+       fixed missing initialization of a timeout struct
+
+2004-04-21 11:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-stat.c:
+
+       use uint64_t for the uptime counter to handle medium+large uptimes
+       (>49 days) correctly
+
+2004-04-21 02:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       made 'nodev' work
+
+2004-04-20 20:13  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/.cvsignore:
+
+       added chain-echo
+
+2004-04-20 20:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       added chain-echo
+
+2004-04-20 20:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vshelper:
+
+       use '--defaulttty'
+
+2004-04-20 20:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.stop:
+
+       use setDefaultTTY()
+
+2004-04-20 20:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.start:
+
+       use setDefaultTTY()
+       added explicit synchronization step for fakeinit with the old methods
+
+2004-04-20 20:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver:
+
+       added '--defaulttty' option
+
+2004-04-20 20:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/start-vservers:
+
+       use --defaulttty options instead of setting tty manually
+
+2004-04-20 20:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       setDefaultTTY(): added
+
+2004-04-20 19:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/getvservercfgstyle.c:
+
+       * vc_getVserverCfgStyle(): interprete relative ('./') and absolute
+         paths ('/...') as vcCFG_RECENT_FULL only
+       * vc_getVserverCfgStyle(): use utilvserver_isDirectory (fstat(2))
+         instead of access(2) to check for directories
+
+2004-04-20 19:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/wrappers-unistd.hc:
+
+       Edup(): added
+
+2004-04-20 19:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/wrappers-fcntl.hc:
+
+       Efcntl(): added
+
+2004-04-20 19:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/misc/debootstrap.uri:
+
+       added some entries
+
+2004-04-20 19:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/misc/vunify-exclude:
+
+       updated
+
+2004-04-20 19:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst,
+         scripts/util-vserver-vars.pathsubst:
+
+       added chain-echo
+
+2004-04-20 19:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/chain-echo.c:
+
+       initial checkin
+
+2004-04-15 04:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.29.209
+
+2004-04-15 04:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vcontext.c:
+
+       setFlags(): optimized (nearly state of 1.10)
+
+2004-04-15 04:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.suexec:
+
+       call chbind when entering vservers
+
+2004-04-15 03:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       call vattribute with '--flag fakeinit' additionally to the '--fakeinit' flag of vcontext
+
+2004-04-15 03:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       callInNamespace(): do not accept non-running vservers
+
+2004-04-15 03:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/misc/debootstrap.uri:
+
+       updated
+
+2004-04-15 01:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vcontext.c:
+
+       applied new kernel API (*flags* -> *cflags*, *_context -> ctx_*)
+       fixed '--fakeinit' option
+
+2004-04-15 01:29  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vshelper:
+
+       fixed another brokeness in CLI option handling
+
+2004-04-15 01:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       lock(): do not execute the pipe; this does not work on 2.6
+
+2004-04-15 01:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/testsuite/.cvsignore:
+
+       added cflags
+
+2004-04-15 01:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       added some comments about uts/context
+
+2004-04-15 01:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration-xhtml.xsl:
+
+       added a new boring stylesheet
+
+2004-04-15 01:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.css:
+
+       initial checkin
+
+2004-04-15 01:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/: make-manifest, manifest.dat.pathsubst:
+
+       added support for '%config(...)' (or whatever) annotations
+
+2004-04-15 01:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/wrappers-vserver.hc,
+         lib_internal/switchtowatchxid.c, src/chcontext.c,
+         src/reducecap.c, src/rpm-fake-resolver.c, src/rpm-fake.c,
+         src/vattribute.c:
+
+       applied new kernel API (*flags* -> *cflags*, *_context -> ctx_*)
+
+2004-04-15 01:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/: Makefile-files, util.h:
+
+       added util-debug.h
+
+2004-04-15 01:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/util-debug.h:
+
+       initial checkin
+
+2004-04-15 01:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * kernel/: context.h, cvirt.h, inode.h, legacy.h, limit.h,
+         namespace.h, network.h, sched.h, switch.h, xid.h:
+
+       updated to vs1.90pre9
+
+2004-04-15 01:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: syscall-compat.hc, vserver.h, testsuite/Makefile-files,
+         testsuite/cflags.c, testsuite/flags.c[DEAD]:
+
+       applied new kernel API
+       renamed functions so that they correspond to the new kernel API
+
+2004-04-15 01:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: Makefile-files, cflags-compat.c, cflags-v13.c,
+         cflags_list-compat.c, cflags_list-v13.c, flags-compat.c[DEAD],
+         flags-v13.c[DEAD], flags_list-compat.c[DEAD],
+         flags_list-v13.c[DEAD], syscall_createcontext-v13.hc[DEAD],
+         syscall_createcontext.c[DEAD], syscall_ctxcreate-v13.hc,
+         syscall_ctxcreate.c, syscall_ctxmigrate-v13.hc,
+         syscall_ctxmigrate.c, syscall_getcflags-v13.hc,
+         syscall_getcflags.c, syscall_getflags-v13.hc[DEAD],
+         syscall_getflags.c[DEAD], syscall_migratecontext-v13.hc[DEAD],
+         syscall_migratecontext.c[DEAD], syscall_setcflags-v13.hc,
+         syscall_setcflags.c, syscall_setflags-v13.hc[DEAD],
+         syscall_setflags.c[DEAD]:
+
+       renamed files so that their names are corresponding the kernel
+       API. Especially, *_context was renamed to ctx_*, and *flags* to
+       *cflags*.
+
+2004-04-13 10:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       further locking fixes
+
+2004-04-13 10:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/lockfile.c:
+
+       propagate errors
+
+2004-04-13 10:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/chroot-rm.c:
+
+       cleanups
+
+2004-04-13 10:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vshelper:
+
+       open FD 0
+       evaluate CLI options depending on used kernel API
+
+2004-04-13 10:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       use new locking mechanism
+
+2004-04-13 10:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: issupported.c, issupportedstring.c, vserver.h:
+
+       added VSHELPER0 feature
+
+2004-04-08 10:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       execScriptlets(): fixed initialization of 'start'
+       execScriptlets(): declare some variables as readonly
+       _sourceWrap(): added some variables
+
+2004-04-08 08:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       implemented support for default-scriptlets (inspired by ideas of
+       Olivier Poitrey)
+
+2004-04-08 08:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: rootshell, vapt-get-worker, vprocunhide, vrpm,
+         vrpm-worker, vserver-build, vshelper:
+
+       give more verbose error-messages
+
+2004-04-08 08:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/syscall.c:
+
+       added link-warning for vc_new_s_context()
+
+2004-04-08 08:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       added general description for the scripts and documented
+       $DONT_SKIP_DEFAULTS
+
+2004-04-08 08:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * compat.h:
+
+       LINK_WARNING(): added
+
+2004-04-07 01:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/chcontext, scripts/pkgmgmt, scripts/start-vservers,
+         scripts/vapt-get, scripts/vpkg, scripts/vpstree,
+         scripts/vrpm-preload, scripts/vserver, scripts/vserver-copy,
+         scripts/vserver-wrapper, scripts/vservers.grabinfo.sh,
+         scripts/vsysvwrapper, scripts/vtop, scripts/legacy/distrib-info,
+         scripts/legacy/vserver, sysv/rebootmgr, sysv/vprocunhide,
+         sysv/vservers-legacy:
+
+       give more comprehensive error-message
+
+2004-04-07 01:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: vps.c, vserver-info.c, vserver-stat.c:
+
+       use switchToWatchXid()
+
+2004-04-07 00:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       link some files against libinternal.a
+
+2004-04-07 00:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/util.h:
+
+       switchToWatchXid(): added prototype
+
+2004-04-07 00:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/switchtowatchxid.c:
+
+       initial checkin
+
+2004-04-07 00:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/Makefile-files:
+
+       added switchtowatchxid.c
+
+2004-04-07 00:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       VC_ATTR_DEPRECATED: added
+
+2004-04-07 00:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/syscall-compat.hc:
+
+       vc_chrootsafe_compat(): removed
+
+2004-04-06 10:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vunify.c:
+
+       applied new MatchList_compare() interface
+
+2004-04-06 10:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-stat.c:
+
+       started support for HZ!=100
+       cleanups
+
+2004-04-06 10:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vcopy.c:
+
+       implement support for SKIP files
+
+2004-04-06 10:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: rpm-fake-resolver.c, rpm-fake.c:
+
+       do not call vc_new_s_context() when COMPAT API is not available
+
+2004-04-06 10:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       cleanups
+       vshelper.doInit(): added another sanity check
+
+2004-04-06 10:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/: matchlist-appendfiles.c, matchlist-compare.c,
+         matchlist.h:
+
+       implemented support for SKIP (~) files
+
+2004-04-06 10:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/testsuite/flags.c:
+
+       added tests for new flags
+
+2004-04-06 10:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       updated VC_VXF_* constants
+       added VC_VXC_* constants
+
+2004-04-06 10:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/flags-v13.c:
+
+       added/updated flaglist
+
+2004-04-06 10:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/ccaps-v13.c:
+
+       added ccap names
+
+2004-04-06 10:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/wrappers-vserver.hc:
+
+       cleanups
+
+2004-04-06 10:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/misc/vunify-exclude:
+
+       exclude keyfiles completely
+       made some big files in /etc canditates for unify
+
+2004-04-06 10:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * kernel/: context.h, inode.h, legacy.h, limit.h, namespace.h,
+         sched.h, signal.h, xid.h:
+
+       updated to 2.6.5-vs1.9.0pre4
+
+2004-03-31 05:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/lockfile.c:
+
+       optimized some things
+       now check, if getppid()==original_parent instead of getppid()!=1 (might make a difference in vservers)
+
+2004-03-31 05:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       added some doc
+       s!_UV_LOCKS!_VS_LOCKS!
+
+2004-03-31 02:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/lockfile.c:
+
+       fixed '--help' output
+
+2004-03-31 02:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst, src/.cvsignore:
+
+       added lockfile
+
+2004-03-31 02:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/lockfile.c:
+
+       initial checkin
+
+2004-03-31 02:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       added lockfile
+
+2004-03-31 02:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       enableInterfaces(), disableInterfaces(): added locking
+       enableInterfaces(), disableInterfaces(): added IP_ADDR_FLUSH type
+
+2004-03-31 02:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       $_LOCKFILE, $LOCKDIR: added
+
+2004-03-31 02:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       lock(),unlock(): added
+       isNumber(): added doc
+
+2004-03-30 22:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       made it work...
+
+2004-03-30 22:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       isNumber(): fixed '0' case
+
+2004-03-30 21:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       implemented parts of Liam Helmer's dummy-interface method
+
+2004-03-30 21:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       isNumber(): added
+
+2004-03-30 20:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am, configure.ac, scripts/util-vserver-vars.pathsubst:
+
+       added substitutions/tests for iptables, modprobe, rmmod and nameif
+       (required for Liam Helmer's dummy-interfaces)
+
+2004-03-30 19:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vshelper-sync.c:
+
+       implemented it with select() instead of alarm(); races are much nicer to handle
+
+2004-03-30 18:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vshelper-sync.c:
+
+       use sigaction() instead of signal() to remove SA_RESTART flag explicitly
+
+2004-03-30 18:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/pipe-sync.c[DEAD]:
+
+       obsoleted by vshelper-sync
+
+2004-03-30 17:50  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * kernel/: context.h, cvirt.h, limit.h, network.h, sched.h,
+         switch.h:
+
+       updated from vs0.09.28
+
+2004-03-30 17:49  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst, src/Makefile-files:
+
+       removed pipe-sync
+
+2004-03-27 05:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.29.207
+
+2004-03-26 10:50  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vshelper:
+
+       use 'findObject -e' instead of 'findFile' to find /dev/null also
+
+2004-03-26 10:50  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.start:
+
+       fixed call of vshelper.isEnabled
+
+2004-03-26 10:49  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       fixed some typos
+
+2004-03-26 10:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       documented apps/vshelper/logfile symlink
+
+2004-03-26 10:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vshelper:
+
+       ignore 'restart2' event; this seems to be issued at vserver *start*
+       added support for a logfile
+       enable logfile-logging when invoked from kernel (no tty)
+
+2004-03-26 09:29  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       fixed order of variables
+       fixed _VSHELPER path
+
+2004-03-26 09:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst:
+
+       fixed vshelper path
+       added vshelper-sync
+
+2004-03-26 09:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       added some Requires:
+       own  %dir /var/run/vshelper
+
+2004-03-26 09:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       added substition for @VSHELPERSTATEDIR@
+       minor cosmetical cleanups
+
+2004-03-26 08:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/.cvsignore:
+
+       added vshelper-sync
+
+2004-03-26 08:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vshelper-sync.c:
+
+       initial checkin
+
+2004-03-26 08:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-info.c:
+
+       - added tgID and tgPXID support
+       - accept 'true' as boolean value
+       - optimized the code a little bit so that the xid will be looked up
+         only when really needed
+
+2004-03-26 08:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vps.c:
+
+       in output, added a ' ' on overlong vserver-names
+
+2004-03-26 08:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/secure-mount.c:
+
+       rewrote some parts to cope better with '-o' options (required for -bme
+       patches to work)
+
+2004-03-26 08:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       added vshelper-sync
+
+2004-03-26 08:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vshelper:
+
+       initial checkin
+
+2004-03-26 08:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.stop:
+
+       added VSHELPER & synchronization code
+
+2004-03-26 08:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.start:
+
+       added documentation about failure reasons
+       added VSHELPER code
+
+2004-03-26 08:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       adapted code to new getFileArray() behavior
+       added VSHELPER support
+       added "LEGACY ALERT" messages
+       initSync(),waitForSync(): added
+
+2004-03-26 08:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-setup.functions:
+
+       added a "LEGACY ALERT"
+
+2004-03-26 08:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build:
+
+       fixed code to work with new behavior of getFileArray
+
+2004-03-26 08:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added some missing variables
+       added the vshelper variables
+
+2004-03-26 08:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/pkgmgmt:
+
+       use pkgmgmt.isAptAvailable()
+
+2004-03-26 08:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       logging(),warning(),panic(),execute(): added
+       pkgmgmt.isAptAvailable(): added
+       vshelper.*(): added
+       getFileArray(): fail, when file does not exist
+
+2004-03-26 08:29  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/Makefile-files:
+
+       added vshelper
+
+2004-03-26 08:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       - minor cleanups
+       - added vcFEATURE_VSHELPER
+       - vc_isSupported(): annotated it
+       - vc_get_insecurecaps(): moved it into an own file; CAP_SYS_BOOT
+         requires a special handling so inlining is not really usefully
+         anymore
+
+2004-03-26 08:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: issupported.c, issupportedstring.c:
+
+       added VSHELPER
+
+2004-03-26 08:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       added getinsecurecaps.c
+
+2004-03-26 08:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/getinsecurecaps.c:
+
+       initial checkin
+
+2004-03-26 08:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       documented the vshelper stuff
+
+2004-03-26 08:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.dtd:
+
+       added a type for 'script'
+
+2004-03-26 08:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/Makefile.am:
+
+       cleanups in the directory creation rules
+
+2004-03-26 08:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst:
+
+       added vshelper
+
+2004-03-26 08:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       use 'install-distribution' instead of 'install-vserverdir'
+       added vshelper stuff
+
+2004-03-26 08:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       cleanups and enhancements in the directory installation rules
+
+2004-03-24 06:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS:
+
+       version 0.29.205
+
+2004-03-24 06:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       fixed LDADD flags for capchroot
+
+2004-03-24 06:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vsched.c:
+
+       enhanced the in-chain operation; make it a noop when called without opts
+       enhanced error messages
+
+2004-03-24 06:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: util-vserver-vars.pathsubst, vserver.functions,
+         vserver.start:
+
+       added scheduler support
+
+2004-03-24 06:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       added basic documentation for bcapabilities, ccapabilities and schedule
+
+2004-03-24 05:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h, src/chcontext.c, src/reducecap.c, src/rpm-fake.c,
+         src/vattribute.c, src/vps.c:
+
+       renamed vc_get_securecaps() to vc_get_insecurecaps()
+
+2004-03-24 05:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.start:
+
+       added missing '\'
+
+2004-03-24 05:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: vattribute.c, vcontext.c, vlimit.c, vnamespace.c,
+         vserver-info.c, vuname.c:
+
+       use vc_xidopt2xid()
+
+2004-03-24 05:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: chcontext.c, vkill.c, vsched.c:
+
+       prefer '--xid' instead of '--ctx'
+       use vc_xidopt2xid()
+
+2004-03-24 05:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.start:
+
+       added support for $VSERVER_EXTRA_CMDS[] which can be set in userscripts
+
+2004-03-24 05:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.debootstrap:
+
+       call 'wget' with '-nv' instead of '-q'
+
+2004-03-24 05:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       vc_xidopt2xid(): added prototype
+
+2004-03-24 05:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       added xidopt2xid.c
+
+2004-03-24 05:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/xidopt2xid.c:
+
+       initial checkin
+
+2004-03-24 05:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/wrappers-vserver.hc:
+
+       Evc_xidopt2xid(): added
+
+2004-03-24 05:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/misc/debootstrap.uri:
+
+       updated to recent version
+
+2004-03-24 05:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       fixed Requires()
+       fixed some %dir's
+
+2004-03-24 02:48  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vlimit.c:
+
+       cleaned up CLI: '--xid' is supported now, removed '-h' and '-v' options
+       minor cleanups
+
+2004-03-24 02:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * sysv/vservers-legacy:
+
+       initial checkin
+
+2004-03-24 02:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * sysv/: rebootmgr, rebootmgr.subst[DEAD]:
+
+       'rebootmgr' is now a src-script
+
+2004-03-24 02:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * sysv/Makefile-files:
+
+       'rebootmgr' is now a src-script
+       added vservers-legacy
+
+2004-03-24 02:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vattribute.c:
+
+       initialize 'bmask' member of struct vc_ctx_caps
+       use negative logic of --bcap (this should be the 'old' behavior of '--cap')
+
+2004-03-24 02:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/rpm-fake.c:
+
+       initialize 'bmask' member of struct vc_ctx_caps
+
+2004-03-24 02:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: capchroot.c, filetime.c, readlink.c:
+
+       rewrote it
+
+2004-03-24 02:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       cleanups; moved some programs into $legacydir
+
+2004-03-24 02:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added more legacy programs
+
+2004-03-24 02:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/legacy/vserver:
+
+       use $_XXXX variables instead of static commandnames
+       use variables for paths
+
+2004-03-24 02:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/legacy/distrib-info:
+
+       moved parserpmdump to legacy
+
+2004-03-24 02:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added $_REBOOTMGR
+
+2004-03-24 02:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_dietlibc.m4:
+
+       fixed copy&paste error
+
+2004-03-24 02:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_vector/.cvsignore, lib_internal/.cvsignore, ChangeLog.sed,
+         cvsusers.map:
+
+       initial checkin
+
+2004-03-24 02:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * .cvsignore, distrib/.cvsignore, ensc_vector/testsuite/.cvsignore,
+         lib/.cvsignore, lib/testsuite/.cvsignore, src/.cvsignore,
+         src/testsuite/.cvsignore, tests/.cvsignore:
+
+       added some standardfiles; I do not want to wait until Savannah fixes
+       its scripts and allows access to CVSROOT/cvsignore again.
+
+2004-03-24 02:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/util-perror.h:
+
+       placed a 'do ... while (0)' block around the macros
+
+2004-03-24 02:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: bcaps_list-v13.c, syscall_getccaps-v13.hc,
+         syscall_setccaps-v13.hc:
+
+       handle the new struct vc_ctx_caps::bmask member
+
+2004-03-24 02:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst:
+
+       moved some files into legacy
+       handle sysv scripts
+
+2004-03-24 02:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       added formerly missing 'v_gated' registration
+       updated -legacy subpackage and moved some initscripts into it
+
+2004-03-24 02:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       do not use PURE before gcc 3.3.3
+       use a more effective way to determine gcc revision
+       struct vc_ctx_caps: added 'bmask' member
+
+2004-03-24 02:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * compat.h:
+
+       do not use PURE before gcc 3.3.3
+       use a more effective way to determine gcc revision
+
+2004-03-23 02:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-wrapper:
+
+       fixed typo (missing 's')
+
+2004-03-23 00:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.functions:
+
+       added basic support for SuSE (patch from Thomas Guettler)
+       give more hints in errormessages (patch from Thomas Guettler)
+
+2004-03-23 00:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vpkg:
+
+       give out errormessage on unknown distribution type
+
+2004-03-23 00:13  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       added basic support for SuSE
+
+2004-03-19 17:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-stat.c:
+
+       fixed race when process disappeared shortly after reading /proc
+
+2004-03-19 17:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       documented apps/init/{mark,depends}
+       mentioned the gentoo initstyle
+
+2004-03-19 17:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration-lsd.css:
+
+       followed Bertl's suggestion and added a subliminal message
+
+2004-03-19 17:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       require at least version 0.24 of dietlibc
+
+2004-03-19 17:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_dietlibc.m4:
+
+       allow to specify a <min-version>
+
+2004-03-18 07:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.29.204
+
+2004-03-18 07:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/util-dotfile.h:
+
+       do not use PURE; it is not applicable for inline declarations
+
+2004-03-18 06:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * compat.h:
+
+       fixed broken condition for PURE
+       define __builtin_expect() when needed
+
+2004-03-18 06:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vunify.c:
+
+       cleanups in the verbosity code
+
+2004-03-18 06:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/legacy/: vps.pathsubst, vserver:
+
+       use 'chcontext-compat' instead of 'chcontext'
+
+2004-03-18 06:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.stop:
+
+       call isVserverRunning to cleanup rundir
+
+2004-03-18 06:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.functions.pkgmgmt:
+
+       ignore candidates for location of pkgmgmt-dir when $ROOTDIR is empty
+
+2004-03-18 06:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build:
+
+       cleanups; use full parenthesis in case ... esac
+
+2004-03-18 06:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver:
+
+       implemenented 'pkgmgmt' command
+
+2004-03-18 06:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vrpm:
+
+       allow both internal and external packagemanagement
+
+2004-03-18 06:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vpkg:
+
+       cleanups; generalized some functions and moved them into the 'functions' file
+
+2004-03-18 06:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vapt-get:
+
+       support both internal and external packagemanagement
+
+2004-03-18 06:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added $_PKGMGMT and $_TAR
+
+2004-03-18 06:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/start-vservers:
+
+       filter out non-matching vservers *before* adding them to the makefile
+
+2004-03-18 06:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       getVserverStatus(): fix problems with leading whitespaces in numerical values
+       pkgmgmt.guessStyle(), pkgmgmt.isInternal(): added
+
+2004-03-18 06:29  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/pkgmgmt:
+
+       initial checkin
+
+2004-03-18 06:29  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/Makefile-files:
+
+       added pkgmgmt
+
+2004-03-18 06:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/matchlist-initmanually.c:
+
+       some cleanups in the verbosity code
+
+2004-03-18 06:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/getvservercfgstyle.c:
+
+       filter out relative and absolute paths; when they are not pointing to
+       an existing directory, the function fails
+
+2004-03-18 06:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/wrappers_handler.hc:
+
+       use __builtin_expect
+
+2004-03-18 06:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/defaults/apt/apt.conf:
+
+       added '@autogenerated@' tag plus small warning
+
+2004-03-18 06:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst:
+
+       added pkgmgmt script
+
+2004-03-18 06:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       look for tar
+
+2004-03-18 06:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       substitute @TAR@
+
+2004-03-16 15:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/chbind.c:
+
+       use vc_get_nb_ipv4root() instead of hardcoded '16' value
+
+2004-03-16 15:29  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * compat.h:
+
+       CONST: added
+
+2004-03-16 15:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       VC_ATTR_CONST: added
+       vc_get_nb_ipv4root(): added
+
+2004-03-16 15:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       added getnbipv4root.c
+
+2004-03-16 15:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/getnbipv4root.c:
+
+       initial checkin
+
+2004-03-16 05:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/Makefile-files:
+
+       added the sysvwrappers to AM_INSTALLCHECK_STD_OPTIONS_EXEMPT
+
+2004-03-16 05:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.29.202
+
+2004-03-16 04:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * sysv/Makefile-files:
+
+       added vservers-default
+       removed vservers
+
+2004-03-16 04:50  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * sysv/vservers.subst[DEAD]:
+
+       obsoleted by new initscript
+
+2004-03-16 04:49  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * sysv/vservers-default:
+
+       initial checkin
+
+2004-03-16 04:49  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-info.c:
+
+       implemented INITPID for the compat API
+
+2004-03-16 04:49  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/rpm-fake.c:
+
+       implemented/fixed the non-legacy part
+       cleanups
+
+2004-03-16 04:48  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/rpm-fake-resolver.c:
+
+       implemented/fixed the non-legacy part
+
+2004-03-16 04:48  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.suexec:
+
+       added internal mode to use 'suexec' for stopped vservers also
+
+2004-03-16 04:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.stop:
+
+       added a more efficient stop method for fakeinit vservers
+
+2004-03-16 04:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.start:
+
+       finxed incomplete quoting
+
+2004-03-16 04:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       handle fakeinit separately
+       cleanups and fixes in the flag-generation
+
+2004-03-16 04:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-wrapper:
+
+       initial checkin
+
+2004-03-16 04:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver:
+
+       added support for an internal command mode
+
+2004-03-16 04:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added $_INITSYNC_MINIT_* variables
+       added $_START_VSERVERS
+
+2004-03-16 04:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/start-vservers:
+
+       added ok/passed/failed logic
+
+2004-03-16 04:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/Makefile-files:
+
+       ship vsyswrapper again
+
+2004-03-16 04:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       vc_is_dynamic_xid(): added
+
+2004-03-16 04:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       added isdynamicxid.c
+
+2004-03-16 04:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/wrappers-vserver.hc:
+
+       Evc_set_ccaps(): added
+
+2004-03-16 04:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/redhat/initpre, lib/isdynamicxid.c:
+
+       initial checkin
+
+2004-03-16 04:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/redhat/initpost:
+
+       use internal 'chkconfig' command
+
+2004-03-16 04:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/Makefile.am:
+
+       added initpre to handle rpm's misclassification of %_netsharedpath
+
+2004-03-16 04:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/: make-manifest, manifest.dat.pathsubst:
+
+       handle some sysv files too
+
+2004-03-16 04:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       updated the -sysv package
+
+2004-03-15 22:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vcontext.c:
+
+       cleanups; remove unused code
+       added '--silentexist'
+       use context-sync.hc
+
+2004-03-15 22:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/chcontext.c:
+
+       use code from context-sync.hc
+
+2004-03-15 22:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/context-sync.hc:
+
+       initial checkin
+
+2004-03-15 22:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       added context-sync.hc
+
+2004-03-15 22:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.apt-rpm:
+
+       cleanups; full parenthesis for case ... esac statements
+
+2004-03-15 22:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver:
+
+       cleanups; full parenthesis for case ... esac statements
+       give more helpful error messages
+
+2004-03-15 22:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/: jail.h, jailintotempdir.c:
+
+       return indication about place of error
+
+2004-03-15 21:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       print correct $prefix when '--prefix' is not specified
+
+2004-03-13 04:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.29.201
+
+2004-03-13 04:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vcontext.c:
+
+       added another #warning
+
+2004-03-13 04:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vcontext.c:
+
+       fixed '--uid' option (it's required_argument but not no_argument)
+       drop privileges after migrate()
+
+2004-03-13 04:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.start:
+
+       call $_SAVE_CTXINFO until we have something better
+
+2004-03-13 03:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vcontext.c:
+
+       updated to new kernel behavior
+
+2004-03-13 03:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vattribute.c:
+
+       renamed set*() to parse*()
+       set the correct secure attributes
+       call set_flags/set_ccaps only, when there is something to do
+
+2004-03-13 03:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: chcontext, vserver.start:
+
+       applied new CLI
+
+2004-03-13 03:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/Makefile-files:
+
+       added jail* files
+
+2004-03-13 03:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/: jail.h, jailintotempdir.c:
+
+       initial checkin
+
+2004-03-13 03:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/wrappers-vserver.hc:
+
+       Evc_get_ccaps(): added declaration
+
+2004-03-12 20:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vuname.c:
+
+       rewrote it; CLI should be more usable now
+
+2004-03-12 20:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: chcontext, vserver.start:
+
+       use new vuname syntax
+
+2004-03-12 07:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vattribute.c:
+
+       set caps before flags so that caps can be changed in the same transaction
+       which deletes 'setup'
+
+2004-03-12 05:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.suexec:
+
+       added some explicit '--'
+
+2004-03-12 05:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       added some doc
+       getVserverStatus(): fixed it
+
+2004-03-12 05:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/save_ctxinfo.c:
+
+       use strncat() instead of strcat() to enforce correct length
+
+2004-03-12 04:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.29.200
+
+2004-03-12 04:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: chcontext, vserver.start:
+
+       remove the setup flag
+
+2004-03-12 04:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/virtual.h:
+
+       cleanups
+
+2004-03-12 04:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/chcontext:
+
+       give '--xid' in migrate case
+
+2004-03-12 04:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/chcontext:
+
+       fixed migrate vs. migrate-self
+
+2004-03-12 04:13  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       added kernel headers
+
+2004-03-12 04:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * kernel/: context.h, inode.h, legacy.h, limit.h, namespace.h,
+         network.h, sched.h, signal.h, switch.h:
+
+       initial checkin
+
+2004-03-12 04:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * sysv/vprocunhide:
+
+       do not use /dev/null as lockfile
+
+2004-03-12 04:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vsched.c:
+
+       updated to new API
+
+2004-03-12 04:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vattribute.c:
+
+       implemented --secure
+
+2004-03-12 04:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver.start, vserver.stop:
+
+       allow '--debug' in the destructors
+
+2004-03-12 04:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       added gentoo startup style
+
+2004-03-12 03:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/chcontext:
+
+       fixed params
+       do not call vuname/vattribute when not needed
+
+2004-03-12 03:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/testsuite/flags.c:
+
+       added testsuite for the flags
+
+2004-03-12 03:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       updated interface
+       added flags
+
+2004-03-12 03:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/virtual.h:
+
+       use kernel headers
+
+2004-03-12 03:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: syscall_getiattr-v13.hc, syscall_setiattr-v13.hc,
+         syscall_setsched-v13.hc:
+
+       updated interface
+
+2004-03-12 03:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/listparser.hc:
+
+       added '^' modifier which marks bit numbers
+
+2004-03-12 03:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/flags-v13.c:
+
+       added the flags
+
+2004-03-11 05:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.29.199
+
+2004-03-11 05:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vuname.c:
+
+       added more documentation
+       fixed '--version' conflicts
+
+2004-03-11 05:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: rpm-fake-resolver.c, rpm-fake.c:
+
+       implemented most parts of the new migrate method
+
+2004-03-11 05:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.start:
+
+       set context-name
+
+2004-03-11 05:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       added getvserverbyctx-* files
+
+2004-03-11 05:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/getvserverbyctx.c:
+
+       implemented new context-naming method
+
+2004-03-11 05:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: getvserverbyctx-compat.hc, getvserverbyctx-v13.hc:
+
+       initial checkin
+
+2004-03-11 05:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/wrappers-vserver.hc:
+
+       Evc_set_vhi_name(): added
+
+2004-03-10 06:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       documented 'fstab.local' and enhanced 'fstab' doc
+
+2004-03-10 06:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       added support for 'fstab.local' files
+
+2004-03-10 06:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * sysv/vprocunhide:
+
+       made it a little bit more portable by providing own implementations of
+       RH's /etc/init.d/functions when this file can not be found (inspired
+       by a patch from Olivier Poitrey)
+
+2004-03-10 05:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       callInNamespace(): call 'shift' to remove the vserver-name from $@
+
+2004-03-10 03:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/.cvsignore:
+
+       added configuration.html
+
+2004-03-10 03:49  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-info.c:
+
+       added an option the 'CONTEXT' query so that it can be choosen between
+       running/non running
+
+2004-03-10 03:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: vlimit.c, vuname.c:
+
+       prefix option string for getopt with '+' to avoid option reordering
+
+2004-03-10 03:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vapt-get, vrpm:
+
+       use callInNamespace
+
+2004-03-10 03:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       isAvoidNamespace(): determine full cfgdir path of vserver before checking for 'namespace' file
+       callInNamespace(): added
+
+2004-03-10 03:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       minor cosmetical cleanups...
+
+2004-03-10 03:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: chcontext, vserver.start, vserver.stop, vserver.suexec:
+
+       use '--' delimiter
+
+2004-03-10 03:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       added/updated some descriptions
+
+2004-03-10 03:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration-lsd.css:
+
+       flowers... where are all the flowers coming from?
+
+2004-03-10 03:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am, contrib/Makefile-files, doc/Makefile-files,
+         ensc_vector/Makefile-files, ensc_vector/testsuite/Makefile-files,
+         ensc_wrappers/Makefile-files, lib/Makefile-files,
+         lib/testsuite/Makefile-files, lib_internal/Makefile-files,
+         man/Makefile-files, scripts/Makefile-files, src/Makefile-files,
+         src/testsuite/Makefile-files, tests/Makefile-files:
+
+       modernized the Makefiles; use '+=' where possible to remove complexity
+       from the toplevel Makefile.am
+
+2004-03-09 18:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vprocunhide:
+
+       remove the correct prefix
+
+2004-03-09 17:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver.stop, vserver.suexec:
+
+       use $_CHONTEXT_COMPAT explicitly
+
+2004-03-09 17:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-setup.functions:
+
+       use/create 'uts' directory
+
+2004-03-09 17:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/chcontext:
+
+       updated copyright date
+
+2004-03-09 17:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       documented the vunify configuration
+
+2004-03-09 15:50  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/chcontext:
+
+       rewrote the non-legacy part
+
+2004-03-09 15:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       aded _KEEP_CTX_ALIVE
+
+2004-03-09 15:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/chcontext:
+
+       added missing ';' in case expression
+       s!_CTX_KEEP_ALIVE!_KEEP_CTX_ALIVE!
+
+2004-03-09 05:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS:
+
+       version 0.29.198
+
+2004-03-09 04:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver.stop, vserver.suexec:
+
+       removed superfluous '--'
+
+2004-03-09 04:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.start:
+
+       added explicit cleanup trap
+       removed superfluous '--'
+
+2004-03-09 04:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       added some parenthesis
+
+2004-03-09 04:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver:
+
+       made 'status' really silent
+
+2004-03-09 04:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/start-vservers:
+
+       initial checkin
+
+2004-03-09 04:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       getVserverStatus(): fixed it for the non-running & non-cleanup case
+
+2004-03-09 04:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/wrappers.h:
+
+       fixed typo
+       fixed overflow
+
+2004-03-09 04:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst, scripts/Makefile-files:
+
+       added start-vservers
+
+2004-03-09 04:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       added Requires: make
+
+2004-03-09 03:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver:
+
+       made 'status' silent when '--silent' is used
+
+2004-03-09 03:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/apidoc/.cvsignore:
+
+       added man
+
+2004-03-09 03:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.html[DEAD]:
+
+       removed since autogenerated
+
+2004-03-09 03:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration-lsd.css:
+
+       use official HTML 4 colornames
+
+2004-03-09 02:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/: beautify.xsl, compatibility-xhtml.xsl,
+         configuration-xhtml.xsl:
+
+       use official XHTML namespace
+
+2004-03-09 02:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/: defaults/rpm/macros, redhat/initpost:
+
+       added hack for https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=117827
+
+2004-03-08 20:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_syscallnr.m4:
+
+       stopped to confuse users with wrong error messages
+
+2004-03-08 20:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/apidoc/Makefile-files:
+
+       handle man directory
+
+2004-03-08 20:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/apidoc/Doxyfile.in:
+
+       updated
+
+2004-03-08 20:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/Makefile-files:
+
+       filled it with content...
+
+2004-03-08 20:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       added documentation
+
+2004-03-08 19:14  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       documented tty symlink
+       use documentation.dtd instead of cfgdirdoc.dtd
+       some small corrections/adjustments
+
+2004-03-08 19:13  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/: beautify.xsl, configuration-lsd.css,
+         configuration-xhtml.xsl, configuration.html:
+
+       initial checkin
+
+2004-03-08 19:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/: compat-xhtml.xsl[DEAD], compatibility-xhtml.xsl:
+
+       renamed compat-xhtml.xsl to compatibility-xhtml.xsl
+
+2004-03-08 19:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/: cfgdirdoc.dtd[DEAD], configuration.dtd:
+
+       renamed cfgdirdoc.dtd to configuration.dtd
+
+2004-03-08 09:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       added more doc
+
+2004-03-08 02:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/testsuite/flags.c:
+
+       fixed uninitialized variable
+
+2004-03-08 01:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/apidoc/: .cvsignore, Doxyfile.in, Makefile-files:
+
+       initial checkin
+
+2004-03-08 01:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.start:
+
+       use '--migrate-self' instead of '--migrate'
+
+2004-03-08 00:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vcontext.c:
+
+       added '--migrate-self' support
+
+2004-03-08 00:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       use different files for 'bcap' and 'ccap' for now
+
+2004-03-08 00:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       added changelog entry
+
+2004-03-07 23:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vunify.h:
+
+       fixed NONNULL annotations
+
+2004-03-07 23:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       added doxygen annnotations
+       added special compiler annotations
+
+2004-03-07 23:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/internal.h:
+
+       added doxygen annnotations
+       fixed NONNULL statements
+
+2004-03-07 23:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/fmt.h:
+
+       added doxygen annnotations
+
+2004-03-07 23:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       added apidoc directory
+
+2004-03-07 23:29  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac, util-vserver.spec.in:
+
+       added doxygen support
+
+2004-03-07 23:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * compat.h:
+
+       fixed typo in __GNUC_MINOR__
+
+2004-03-07 20:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vattribute.c:
+
+       use new interface of the list2... functions
+       implemented --bcaps and --ccaps
+
+2004-03-07 20:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: chcontext.c, reducecap.c:
+
+       use new interface of the list2... functions
+
+2004-03-07 20:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       added .../interfaces/.../nodev option and deprecated 'only_ip'
+
+2004-03-07 20:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/testsuite/flags.c:
+
+       applied new interface
+
+2004-03-07 20:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       added some documentation
+       added some flag/caps support functions
+
+2004-03-07 20:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/virtual.h:
+
+       renamed scaps to bcaps
+
+2004-03-07 20:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/syscall_setflags.c:
+
+       added EFAULT check
+
+2004-03-07 20:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: syscall_getflags-v13.hc, syscall_setflags-v13.hc:
+
+       minor cosmetical cleanups
+
+2004-03-07 20:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/listparser.hc:
+
+       interpret numbers too
+
+2004-03-07 20:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/internal.h:
+
+       added the text2value functions
+
+2004-03-07 20:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: flags-v13.c, flags_list-compat.c, flags_list-v13.c:
+
+       cleanups; use modern methods...
+
+2004-03-07 20:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: bcaps-v13.c, bcaps_list-v13.c, ccaps-v13.c,
+         ccaps_list-v13.c, syscall_getccaps-v13.hc, syscall_getccaps.c,
+         syscall_setccaps-v13.hc, syscall_setccaps.c,
+         val2text-t2v-uint32.c, val2text-t2v-uint64.c,
+         val2text-v2t-uint32.c, val2text-v2t-uint64.c, val2text.hc:
+
+       initial checkin
+
+2004-03-07 20:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       added the caps-files
+       added the val2text-files
+
+2004-03-07 20:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       documented '.../interfaces/.../nodev'
+
+2004-03-06 03:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       s!Require!Requires!
+
+2004-03-06 02:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * sysv/vprocunhide:
+
+       initial checkin
+
+2004-03-06 02:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * sysv/Makefile-files:
+
+       modernized; use '+=' syntax
+       added vprocunhide
+
+2004-03-06 02:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vuname.c:
+
+       made it chainable
+       added '--dir' option
+
+2004-03-06 02:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vlimit.c:
+
+       cleanups
+
+2004-03-06 02:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.start:
+
+       call vuname
+
+2004-03-06 02:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vprocunhide:
+
+       implemented exclude/include syntax
+       fixed exit codes
+
+2004-03-06 02:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added $_VUNAME
+
+2004-03-06 02:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       documents uts/ and rlimit/ subdirs
+
+2004-03-06 02:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/misc/vprocunhide-files:
+
+       added some files
+
+2004-03-06 02:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       added vprocunhide initscript
+
+2004-03-06 02:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       modernized it a little bit; use '+=' syntax for sysv/ now
+
+2004-03-05 23:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver.functions, vserver.start, vserver.stop,
+         vserver.suexec:
+
+       added support for new migrate feature
+
+2004-03-05 23:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added $_VCONTEXT and $_VLIMIT
+
+2004-03-05 23:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       isAvoidNamespace(): use 'vserver-info - FEATURE namespace' inforamtion too
+
+2004-03-05 20:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vlimit.c:
+
+       try to read limits from dir only, when '--dir' was used
+
+2004-03-05 20:50  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/setattr.c:
+
+       allow '--!...' syntax too
+
+2004-03-05 20:50  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.functions.pkgmgmt:
+
+       added a missing '\'
+
+2004-03-05 20:50  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vprocunhide, distrib/misc/vprocunhide-files:
+
+       initial checkin
+
+2004-03-05 20:49  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added setattr and vprocunhide
+
+2004-03-05 20:48  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/Makefile-files:
+
+       added vprocunhide
+
+2004-03-05 20:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       documented vprocunhide documentation
+
+2004-03-05 20:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/Makefile.am:
+
+       added vprocunhide-files
+
+2004-03-05 20:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst:
+
+       added vprocunhide files
+
+2004-03-05 18:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vtop, chcontext, functions, rootshell, vapt-get,
+         vapt-get-worker, vpkg, vpstree, vrpm, vrpm-preload, vrpm-worker,
+         vserver, vserver-build, vserver-build.apt-rpm,
+         vserver-build.debootstrap, vserver-build.functions,
+         vserver-build.functions.pkgmgmt, vserver-build.skeleton,
+         vserver-copy, vserver.functions, vserver.start, vserver.stop,
+         vservers.grabinfo.sh, vsysvwrapper:
+
+       added some '>&2'
+
+2004-03-05 18:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * .cvsignore:
+
+       added FEATURES.txt
+
+2004-03-05 18:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vlimit.c:
+
+       added '--dir' parameter
+       allow command-chaining
+       support limits with suffixes
+       make '-c' optionally and assume current ctx by default
+
+2004-03-05 18:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/testsuite/: Makefile-files, .cvsignore:
+
+       added parselimit
+
+2004-03-05 18:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       vc_parseLimit(): added prototype
+
+2004-03-05 18:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       added parselimit.c
+
+2004-03-05 18:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: parselimit.c, testsuite/parselimit.c:
+
+       initial checkin
+
+2004-03-05 05:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/.cvsignore:
+
+       updated; added vattribute and keep-ctx-alive
+
+2004-03-05 05:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vcontext.c:
+
+       implement the vc_set_flags() part
+
+2004-03-05 05:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vattribute.c:
+
+       setFlags(): implemented it
+
+2004-03-05 05:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/Makefile-files:
+
+       added util-unixsock.hc
+
+2004-03-05 05:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/wrappers-vserver.hc:
+
+       fixed error-checking
+
+2004-03-05 05:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: getprocentry-legacy.c, syscall-compat.hc,
+         syscall_getflags-v13.hc, syscall_getiattr.c,
+         syscall_getvxinfo-oldproc.hc, syscall_getvxinfo.c,
+         syscall_setflags-v13.hc:
+
+       return better errorcodes
+
+2004-03-05 05:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/wrappers-vserver.hc:
+
+       fixed copy&paste error
+
+2004-03-05 05:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/Makefile-files:
+
+       added wrappers-socket.hc
+
+2004-03-05 05:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst:
+
+       added vattribute and keep-ctx-alive
+
+2004-03-05 04:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-info.c:
+
+       added 'FEATURE' tag
+
+2004-03-05 04:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vcontext.c:
+
+       added support for external synchronization
+
+2004-03-05 04:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/reducecap.c:
+
+       use vc_list2flag_compat() instead of vc_textlist2flag
+
+2004-03-05 04:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: keep-ctx-alive.c, vattribute.c:
+
+       initial checkin
+
+2004-03-05 04:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: fstool.c, fstool.h, setattr.c, showattr.c:
+
+       added support for VC_IATTR_IMMUTABLE flag
+
+2004-03-05 04:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: enter-namespace.c[DEAD], new-namespace.c[DEAD]:
+
+       obsoleted by vnamespace
+
+2004-03-05 04:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/chcontext.c:
+
+       use vc_list2flag_compat() instead of vc_textlist2flag()
+
+2004-03-05 04:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       removed new-namespace and enter-namespace
+       added keep-ctx-alive and vattribute
+       added src_legacy_* variables
+
+2004-03-05 04:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vapt-get, vrpm, vserver:
+
+       use $_VNAMESPACE instead of $_NEW_NAMESPACE
+
+2004-03-05 04:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added $_VATTRIBUTE and $_VNAMESPACE
+       removed $_NEW_NAMESPACE
+
+2004-03-05 04:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/chcontext:
+
+       began to implement the new vcontext part...
+
+2004-03-05 04:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_syscallnr.m4:
+
+       use $ensc_cv_path_kernelheaders instead of $kernelincludedir
+
+2004-03-05 04:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/util.h:
+
+       include "util-unixsock.h"
+
+2004-03-05 04:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/unify-unify.c:
+
+       use VC_IATTR_IMMUTABLE flag too
+
+2004-03-05 04:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/util-unixsock.h:
+
+       initial checkin
+
+2004-03-05 04:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/testsuite/flags.c:
+
+       updated to new flag functions
+
+2004-03-05 04:16  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       use uint_leastX_t instead of uintX_t
+       added -compat versions for the flag-parsers
+       vc_isSupportedString(): added
+
+2004-03-05 04:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/internal.h:
+
+       added utilvserver_listparser_uint* declarations
+
+2004-03-05 04:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: fmt-32.c, fmt-64.c, fmt.h, fmt.hc, fmtx-32.c, fmtx-64.c,
+         fmtx.hc:
+
+       fixed aliased functions; they are now in the *.c files and will not be
+       used anymore by every file including 'fmt.h'
+
+2004-03-05 04:13  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: flags.c[DEAD], flags_list.c[DEAD]:
+
+       renamed to -compat.c
+
+2004-03-05 04:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       updated to new flags* files
+       added listparser* files
+       removed unused statements
+
+2004-03-05 04:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/wrappers.h:
+
+       added wrappers-socket.hc
+
+2004-03-05 04:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/wrappers-socket.hc, lib/flags-compat.c,
+         lib/flags-v13.c, lib/flags_list-compat.c, lib/flags_list-v13.c,
+         lib/issupportedstring.c, lib/listparser.hc,
+         lib/listparser_uint32.c, lib/listparser_uint64.c:
+
+       initial checkin
+
+2004-03-05 04:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/wrappers-iosock.hc:
+
+       modernized declarations (use WRAPPER_DECL)
+       WsendAll(),WrecvAll(): added 'int *err' parameter and do not use perror() anymore
+
+2004-03-05 04:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst:
+
+       removed new-namespace and enter-namespace; they are obsoleted by vnamespace
+
+2004-03-05 04:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       added $(src_legacy_*)
+
+2004-03-04 05:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_syscallnr.m4:
+
+       requires AC_PROG_CPP
+
+2004-03-04 05:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       added VC_IATTR_IMMUTABLE
+
+2004-03-04 05:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/virtual.h:
+
+       added IATTR_IMMUTABLE
+
+2004-03-04 05:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       do not use -I $kernelincludedir anymore
+
+2004-03-04 04:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_syscallnr.m4:
+
+       rewrote it...
+
+2004-03-04 04:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/: ensc_cflags.m4, ensc_dietlibc.m4, ensc_dietlibc_compat.m4,
+         ensc_fpicsyscall.m4, ensc_syscall.m4:
+
+       use unique identifiers
+
+2004-02-27 20:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.29.197
+
+2004-02-27 20:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/redhat/initpost:
+
+       fixed kernel-pkg installation
+       fixed initscript update
+
+2004-02-27 20:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/.cvsignore:
+
+       added vsched
+
+2004-02-27 20:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/testsuite/fmt.c:
+
+       include <string.h>
+
+2004-02-27 19:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst:
+
+       added vsched
+
+2004-02-27 19:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/chbind.c:
+
+       removed unused variable
+
+2004-02-27 19:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/testsuite/rpm-fake-test.c:
+
+       include <string.h>
+
+2004-02-27 19:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: Makefile-files, vsched.c, vschedule.c[DEAD]:
+
+       renamed vschedule to vsched
+
+2004-02-27 19:48  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/.cvsignore:
+
+       added chcontext-compat and vschedule
+
+2004-02-27 19:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       added vschedule
+
+2004-02-27 19:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       added vc_set_sched declarations
+
+2004-02-27 19:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/virtual.h:
+
+       removed 'otpions' field from vcmd_set_sched_v1
+
+2004-02-27 19:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/syscall_setsched-v13.hc, lib/syscall_setsched.c,
+         src/vschedule.c:
+
+       initial checkin
+
+2004-02-27 19:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       added *setsched* files
+
+2004-02-27 19:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/chcontext.c:
+
+       cleanups; applied name-change from 'chcontext' to 'chcontext-compat'
+
+2004-02-27 19:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       renamed 'chcontext' to 'chcontext-compat'
+
+2004-02-27 19:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added $_CHCONTEXT_COMPAT
+       updated $_CHCONTEXT
+
+2004-02-27 19:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       isKernelAPI(): added
+
+2004-02-27 19:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/Makefile-files:
+
+       added chcontext wrapper
+
+2004-02-27 18:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       added vc_isSupported()
+       cleanups
+
+2004-02-27 18:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/virtual.h:
+
+       updated scheduler definitions
+
+2004-02-27 18:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/issupported.c, scripts/chcontext:
+
+       initial checkin
+
+2004-02-27 18:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       added issupported.c
+
+2004-02-27 18:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst:
+
+       added chcontext-compat
+
+2004-02-27 05:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vcontext.c:
+
+       cleanups; restructured code
+
+2004-02-27 05:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/new-namespace.c:
+
+       cleanups; do not include "stack-start.h" anymore
+
+2004-02-27 05:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vnamespace.c:
+
+       initial checkin
+
+2004-02-27 05:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: fakerunlevel.c, rpm-fake-resolver.c, save_ctxinfo.c,
+         vrsetup.c, vserver-stat.c:
+
+       use wrappers with detailed error-messages
+
+2004-02-27 05:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: Makefile-files, .cvsignore:
+
+       added vnamespace
+
+2004-02-27 05:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/testsuite/fmt.c:
+
+       made non-C99 compilers happy
+
+2004-02-27 05:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       vc_set_namespace(), vc_cleanup_namespace(): added prototypes
+
+2004-02-27 05:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/virtual.h:
+
+       added VCMD_set_namespace and VCMD_cleanup_namespace declarations
+
+2004-02-27 05:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       added *setnamespace* and *cleanupnamespace* files
+
+2004-02-27 05:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: syscall_cleanupnamespace-v13.hc,
+         syscall_cleanupnamespace.c, syscall_setnamespace-v13.hc,
+         syscall_setnamespace.c:
+
+       initial checkin
+
+2004-02-27 05:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/: wrappers-fcntl.hc, wrappers-unistd.hc:
+
+       added some wrappers with detailed error-messages
+
+2004-02-27 05:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/wrappers.h:
+
+       added ENSC_DETAIL macros
+
+2004-02-27 05:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/defaults/rpm/macros:
+
+       added /etc/rc.d/init.d/halt and /sbin/new-kernel-pkg to %_netsharedpath
+
+2004-02-27 05:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst:
+
+       added vcontext and vnamespace
+
+2004-02-26 14:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/util-exitlikeprocess.c[DEAD]:
+
+       moved to lib_internal/
+
+2004-02-26 14:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/util.h:
+
+       removed everything an include <lib_internal/util.h> only
+
+2004-02-26 14:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/.cvsignore:
+
+       added vcontext
+
+2004-02-26 14:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: chcontext.c, rpm-fake-resolver.c, rpm-fake.c:
+
+       use VC_DYNAMIC_XID instead of VC_RANDCTX
+
+2004-02-26 14:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vcontext.c:
+
+       initial checkin
+
+2004-02-26 14:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/testsuite/Makefile-files:
+
+       removed 'util-exitlikeprocess.c'; link against libinternal.a now
+
+2004-02-26 14:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       added vcontext
+       removed 'util-exitlikeprocess.c'; link against libinternal.a now
+
+2004-02-26 14:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       s!/vservers!$DEFAULT_VSERVERDIR! (reported in IRC by broo)
+
+2004-02-26 14:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/util-mem.h:
+
+       include <stdlib.h>
+
+2004-02-26 14:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/Makefile-files:
+
+       added lots of util-* headers
+       added util-exitlikeprocess
+
+2004-02-26 14:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       * vc_create_context(), vc_migrate_context(), vc_[sg]et_flags(): added
+         prototypes plus structures
+       * use VC_DYNAMIC_XID instead of VC_RANDCTX
+
+2004-02-26 14:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver-internal.h:
+
+       added CALL_VC_V13A macro (for API >= 0x00010012)
+       use VC_DYNAMIC_XID instead of VC_RANDCTX
+
+2004-02-26 14:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/virtual.h:
+
+       added create+migrate+flags+caps declarations
+
+2004-02-26 14:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/syscall_createcontext-v13.hc, lib/syscall_createcontext.c,
+         lib/syscall_getflags-v13.hc, lib/syscall_getflags.c,
+         lib/syscall_migratecontext-v13.hc, lib/syscall_migratecontext.c,
+         lib/syscall_setflags-v13.hc, lib/syscall_setflags.c,
+         lib_internal/util-cast.h, lib_internal/util-commonstrings.h,
+         lib_internal/util-declarecmd.h, lib_internal/util-dimof.h,
+         lib_internal/util-exitlikeprocess.c,
+         lib_internal/util-exitlikeprocess.h, lib_internal/util.h:
+
+       initial checkin
+
+2004-02-26 14:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       added createcontext + migratecontext + [sg]etflags files
+
+2004-02-26 13:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/wrappers-vserver.hc:
+
+       Evc_create_context(), Evc_migrate_context(): added
+       use WRAPPER_DECL instead of UNUSED
+
+2004-02-25 12:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vlimit.c:
+
+       enhanced output
+       added -nd options
+       allow literal limits
+       assume '-H' by default
+
+2004-02-25 12:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/testsuite/.cvsignore:
+
+       added 'fmt'
+
+2004-02-25 12:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/util.h:
+
+       include util-perror.h
+
+2004-02-25 12:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: chcontext.c, secure-mount.c:
+
+       use more verbose perror()
+
+2004-02-25 12:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       added better namespace supportc
+
+2004-02-25 12:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/testsuite/fmt.c, lib_internal/util-perror.h:
+
+       initial checkin
+
+2004-02-25 12:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/testsuite/Makefile-files:
+
+       added fmt.c
+
+2004-02-25 12:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/fmt.h:
+
+       fmt_[u]int{32,64}(): added
+
+2004-02-21 00:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/flags.c:
+
+       cosmetical cleanups
+
+2004-02-21 00:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: flags.c, vserver.h:
+
+       added NAMESPACE flag
+
+2004-02-20 22:14  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       install enter-namespace into $(sbindir) instead of $(pkglibdir)
+
+2004-02-20 22:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/new-namespace.c:
+
+       added missing '#include <errno.h>'
+
+2004-02-20 21:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.29.196
+
+2004-02-20 21:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/.cvsignore:
+
+       added enter-namespace
+
+2004-02-20 21:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/enter-namespace.c:
+
+       initial checkin
+
+2004-02-20 21:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files, contrib/manifest.dat.pathsubst:
+
+       added enter-namespace
+
+2004-02-20 21:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vlimit.c:
+
+       merged with 0.29.2
+
+2004-02-20 20:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vlimit.c:
+
+       changed logic to skip entries without chance for success
+
+2004-02-20 20:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       cleanups
+
+2004-02-20 20:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/syscall_rlimit-v11.hc:
+
+       vc_get_rlimit_mask_v11(): use correct datastructure
+
+2004-02-20 18:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: Makefile-files, virtual.h, vserver.h:
+
+       added the enter-namespace stuff
+
+2004-02-20 18:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: syscall_enternamespace-v13.hc, syscall_enternamespace.c:
+
+       initial checkin
+
+2004-02-20 18:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/wrappers_handler.hc:
+
+       added support for more extensive output
+
+2004-02-20 18:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst:
+
+       moved vserver-info into core
+
+2004-02-20 18:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver-internal.h:
+
+       VC_ENABLE_API_V13(): incremented needed API-version
+
+2004-02-20 18:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/syscall_getvxinfo-v13.hc:
+
+       vc_get_vx_info_v13(): handle xid==0 and xid==1 case manually
+
+2004-02-20 18:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vlimit.c:
+
+       cleanup output in error-case
+
+2004-02-20 18:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/stack-start.h:
+
+       fixed begin of STACK_START for non-growing stacks
+
+2004-02-20 18:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/fakerunlevel.c:
+
+       use more extensive errormessages
+       use <wrappers.h>
+
+2004-02-20 18:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: fscompat_getiattr-v13.hc[DEAD], fscompat_getiattr.c[DEAD],
+         fscompat_setiattr-v13.hc[DEAD], fscompat_setiattr.c[DEAD]:
+
+       obsoleted
+
+2004-02-20 17:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: chcontext.c, clearenv.c, exec-cd.c, exec-ulimit.c,
+         ifspec.c, listdevip.c, new-namespace.c, reducecap.c,
+         rpm-fake-resolver.c, rpm-fake.c, save_ctxinfo.c, secure-mount.c,
+         vkill.c:
+
+       do not do the lo-check anymore
+
+2004-02-20 17:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/chbind.c:
+
+       use more extensive errormessages
+       do not do the lo-check anymore
+
+2004-02-20 03:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-info.c:
+
+       fix copy&paste error when giving out initpid
+
+2004-02-19 23:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS:
+
+       version 0.29.195
+
+2004-02-19 23:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-info.c:
+
+       added SYSINFO command
+       internal cleanups
+
+2004-02-19 23:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_e2fscheck.m4:
+
+       tell correct packagename for Debian's e2fsprogs-devel
+       tell packagename for Mandrake
+
+2004-02-19 23:29  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: chxid.c, fstool.c, fstool.h, lsxid.c, setattr.c,
+         showattr.c:
+
+       applied new iattr interface and changed some internal functions
+
+2004-02-19 23:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/: unify-unify.c, util-safechdir.c:
+
+       applied new iattr interface
+
+2004-02-19 23:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       * changed iattr interface
+       * removed *iattr_compat() functions; functionality is covered by new
+         iattr interface already
+
+2004-02-19 23:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/virtual.h:
+
+       added new iattr definitions
+
+2004-02-19 23:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: syscall_getiattr-v13.hc, syscall_getiattr.c,
+         syscall_setiattr-v13.hc, syscall_setiattr.c:
+
+       implemented new iattr interface
+
+2004-02-19 23:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/syscall-compat.hc:
+
+       vc_set_ipv4root_compat(): fixed off-by-one error while checking number
+       of allowed IPs
+
+2004-02-19 23:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: fscompat_getiattr-fscompat.hc[DEAD],
+         fscompat_setiattr-fscompat.hc[DEAD],
+         syscall_getiattr-fscompat.hc, syscall_setiattr-fscompat.hc:
+
+       moved fscompat* files to *iattr-fscompat* and applied the changed iattr interface
+
+2004-02-19 23:14  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/createskeleton-full.hc:
+
+       use new iattr interface
+
+2004-02-19 23:14  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       removed the fscompat* files
+       added *iattr-fscompat files
+
+2004-02-19 23:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst:
+
+       added FEATURES.txt and vcopy
+
+2004-02-19 23:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       create FEATURES.txt and rearranged code a little bit
+
+2004-02-19 23:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       added FEATURES.txt
+
+2004-02-18 05:50  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       added vc_createSkeleton() plus defines
+
+2004-02-18 05:50  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/fscompat_setiattr-fscompat.hc:
+
+       vc_set_iattr_compat_fscompat(): fixed usage of the mode argument
+
+2004-02-18 05:49  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/: unify-unify.c, unify.h:
+
+       Unify_deUnify(): fixed parameters
+       Unify_copy(), Unify_setTime(): added prototype
+
+2004-02-18 05:48  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/unify-deunify.c:
+
+       fixed parameters
+
+2004-02-18 05:48  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/matchlist.h:
+
+       MatchList_printId(): added prototype
+
+2004-02-18 05:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/Makefile-files:
+
+       added unify* and util-* files
+
+2004-02-18 05:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: vunify.c, vunify.h:
+
+       cleanups; outsourced a lot to libinternal.a
+
+2004-02-18 05:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/util.h:
+
+       cleanups; outsourced some macros/inlines to libinternal.a
+
+2004-02-18 05:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       added vcopy
+       link the fstool programs against libinternal.a
+       removed vserver-visitdir
+
+2004-02-18 05:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/.cvsignore:
+
+       added vcopy
+
+2004-02-18 05:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/util-safechdir.c[DEAD]:
+
+       moved into libinternal.a
+
+2004-02-18 05:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/createskeleton-full.hc, lib/createskeleton-short.hc,
+         lib/createskeleton.c, lib_internal/matchlist-printid.c,
+         lib_internal/unify-copy.c, lib_internal/unify-settime.c,
+         lib_internal/util-dotfile.h, lib_internal/util-safechdir.c,
+         lib_internal/util-safechdir.h, src/vcopy-init.hc, src/vcopy.c,
+         src/vserver-visitdir.hc:
+
+       initial checkin
+
+2004-02-18 05:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/wrappers-io.hc:
+
+       rewrote the W*all() function to accept an additional argument holding
+       the error, instead of giving out the error
+
+2004-02-18 05:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       added createskeleton* files
+
+2004-02-18 05:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * pathconfig.h.pathsubst:
+
+       added DEFAULT_PKGSTATEDIR
+
+2004-02-18 05:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * compat.h:
+
+       added PURE
+
+2004-02-18 05:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac, Makefile.am:
+
+       do not redefine 'LIBTOOL'; the '--tag' causes problems on install
+
+2004-02-17 20:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       call ENSC_DIETLIBC_NEED_COMPAT to determine if '-lcompat' is needed for dietlibc
+
+2004-02-17 20:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       define $(VSERVER_LDADDS)
+       generalized some LIBTOOL stuff
+       do not install libinternal.a anymore
+
+2004-02-17 20:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * tests/Makefile-files:
+
+       use $(VSERVER_LDADDS) instead of lib/libvserver.la to use '-lcompat' on purpose
+
+2004-02-17 20:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       _pkgMountRPM(): do not mount /proc when it is already mounted
+
+2004-02-17 20:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/rpm-fake.c:
+
+       rearranged inclusion of <sys/socket.h> to fix compilation problems
+       with fc1.90
+
+2004-02-17 20:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/rebootmgr.c:
+
+       include <limits.h>
+
+2004-02-17 20:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       use $(VSERVER_LDADDS) instead of lib/libvserver.la to use '-lcompat' on purpose
+       fixed capchroot compilation
+
+2004-02-17 20:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_dietlibc_compat.m4:
+
+       initial checkin
+
+2004-02-17 20:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_vector/testsuite/test1.c, src/testsuite/vunify-functest.c:
+
+       make non-C99 compilers happy
+
+2004-02-17 03:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS:
+
+       version 0.29.192
+
+2004-02-17 03:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       added missing backslash
+
+2004-02-17 03:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: vunify.h, testsuite/Makefile-files,
+         testsuite/vunify-functest.c:
+
+       use new lib_internal/
+
+2004-02-17 03:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vunify-init.hc:
+
+       moved most function into lib_internal/
+
+2004-02-17 03:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vunify.c:
+
+       use new lib_internal
+
+2004-02-17 03:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/util.h:
+
+       moved some functions/macros into lib_internal/util-*
+
+2004-02-17 03:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       removed vunify-* files which went into lib_internal
+
+2004-02-17 03:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       added lib_internal/ files
+
+2004-02-17 03:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: vunify-compare.hc[DEAD], vunify-debug.c[DEAD],
+         vunify-doit.hc[DEAD], vunify-matchlist.c[DEAD],
+         vunify-matchlist.h[DEAD]:
+
+       moved functionality into lib_internal library
+
+2004-02-17 03:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib_internal/: Makefile-files, matchlist-appendfiles.c,
+         matchlist-compare.c, matchlist-destroy.c, matchlist-init.c,
+         matchlist-initbyvserver.c, matchlist-initmanually.c,
+         matchlist-initrefserverlist.c, matchlist.h, pathinfo-append.c,
+         pathinfo-test.c, pathinfo.h, string-destroy.c, string.h,
+         string.hc, unify-deunify.c, unify-unify.c, unify.h, util-io.h,
+         util-mem.h:
+
+       initial checkin
+
+2004-02-17 03:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/: wrappers-unistd.hc, wrappers_handler.hc:
+
+       fixed some 'noreturn' warnings for the execv() functions
+
+2004-02-16 20:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/make-manifest:
+
+       ignore lines beginning with '#'
+
+2004-02-16 20:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst:
+
+       set @ENSC_HAVE_*_COMPILER_TRUE@ tags
+
+2004-02-16 20:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_vector/testsuite/test1.c:
+
+       #undef NDEBUG
+
+2004-02-16 20:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       use $_READLINK
+       mount /proc when doing pkg-management
+
+2004-02-16 20:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added readlink
+
+2004-02-16 20:16  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vrpm-preload:
+
+       made rpm-flavor configurable (e.g. 'i' for install (default), 'q' for
+       query, 'd' for database)
+
+2004-02-16 20:16  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.functions:
+
+       register generated files so that they
+       can be cleaned up when needed
+
+2004-02-16 20:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.apt-rpm:
+
+       call rpm.initDB()
+
+2004-02-16 20:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.functions.rpm:
+
+       rpm.initDB(): added
+
+2004-02-16 20:14  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-setup.functions:
+
+       added --initstyle support (-> /etc/vservers/.../apps/init/style)
+
+2004-02-16 20:14  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/chbind.c:
+
+       refined test-routine to work in vservers without 'lo' interface
+
+2004-02-16 20:14  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/secure-mount.c:
+
+       define MS_REC when needed
+
+2004-02-16 20:13  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac, src/rpm-fake-resolver.c:
+
+       added big, fat warning when not using dietlibc
+
+2004-02-16 19:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       added ENSC_HAVE_*_COMPILER_* to pathsubst-rules
+
+2004-02-14 02:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver:
+
+       use isAvoidNamespace() from main-functions file
+
+2004-02-14 02:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: functions, vserver.functions:
+
+       moved isAvoidNamespace() into main-functions file
+
+2004-02-14 02:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_syscallnr.m4:
+
+       fixed auto-case
+       improved message
+
+2004-02-14 02:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_kerneldir.m4:
+
+       ENSC_KERNEL_HEADERS: made argument optionally
+
+2004-02-14 02:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst:
+
+       added clearenv
+
+2004-02-14 02:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       use ENSC_SYSCALLNR()
+
+2004-02-14 00:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver-internal.h:
+
+       use results from ENSC_SYSCALLNR
+
+2004-02-14 00:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_syscallnr.m4:
+
+       initial checkin
+
+2004-02-12 00:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/clearenv.c:
+
+       use VSERVER_DECLARE_CMD
+
+2004-02-12 00:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/.cvsignore:
+
+       added clearenv
+
+2004-02-12 00:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.start:
+
+       use clearenv
+
+2004-02-12 00:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       made namespace stuff configurable at a global place
+
+2004-02-12 00:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vrpm-preload:
+
+       give more rights... (same like at --secure)
+
+2004-02-12 00:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files, scripts/util-vserver-vars.pathsubst:
+
+       added clearenv
+
+2004-02-12 00:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/clearenv.c:
+
+       initial checkin
+
+2004-02-10 18:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: chxid.c, setattr.c:
+
+       handle dot-files by default; it does not make sense to use a special
+       '-a' flag for the set-operations
+
+2004-02-10 18:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       version 0.28.200
+
+2004-02-10 18:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/secure-mount.c:
+
+       recognize 'rbind' in fstab
+       use internal mount(2) on MOVE too
+
+2004-02-10 15:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver, vserver.functions, vserver.start:
+
+       implemented CLONE_NS and --rbind mounting
+
+2004-02-10 15:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/secure-mount.c:
+
+       implemented '--rbind'
+
+2004-02-10 13:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_vector/testsuite/.cvsignore, lib/testsuite/.cvsignore:
+
+       initial checkin
+
+2004-02-10 13:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/testsuite/flags.c:
+
+       s!init!fakeinit!
+
+2004-02-10 13:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       version 0.28.199
+
+2004-02-10 13:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       moved the 'chattr' into the right %post scriptlet
+
+2004-02-10 13:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/flags.c:
+
+       s!init!fakeinit!
+
+2004-02-10 03:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       version 0.28.198
+
+2004-02-10 00:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/: make-manifest, manifest.dat.pathsubst:
+
+       moved *.so.* files from -core to -lib
+
+2004-02-10 00:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       added -lib subpackage
+       moved *.so.* files from -core to -lib
+       removed the '%exclude ...vrpm.8'
+       added a 'make check'
+
+2004-02-10 00:48  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/testsuite/.cvsignore:
+
+       initial checkin
+
+2004-02-10 00:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_wrappers/wrappers-unistd.hc:
+
+       Eexecvp(): added
+       added some 'NORETURN' specifiers
+
+2004-02-10 00:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       added lib/testsuite
+
+2004-02-10 00:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/testsuite/vunify-test.sh:
+
+       redirect output to /dev/null
+
+2004-02-10 00:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/testsuite/rpm-fake-test.c:
+
+       fixed compilation warnings
+
+2004-02-10 00:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/testsuite/chcontext-test.c:
+
+       added explicite 'return' for non-C99 compilers
+
+2004-02-10 00:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/testsuite/Makefile-files:
+
+       added chbind-test
+
+2004-02-10 00:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * man/Makefile-files:
+
+       renoved vrpm.8 for now
+
+2004-02-10 00:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       vc_text2cap(): take 'unsigned int' instead of 'int' argument
+       vc_textlist2flag(), vc_text2flag(), vc_hiflag2text(): added prototypes
+
+2004-02-10 00:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/capabilities.c:
+
+       vc_text2cap(): take 'unsigned int' instead of 'int' argument
+
+2004-02-10 00:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       added flags* files
+       added testsuite + -programs
+
+2004-02-10 00:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/chcontext.c:
+
+       setFlags(): use vc_textlist2flag() function
+       rearranged code to avoid unremovable zombie processes
+
+2004-02-10 00:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: chbind.c, reducecap.c:
+
+       rewrote it
+
+2004-02-10 00:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       made reducecap & chbind native dietlibc programs
+
+2004-02-10 00:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/flags.c, lib/flags_list.c, lib/testsuite/Makefile-files,
+         lib/testsuite/flags.c, src/testsuite/chbind-test.c:
+
+       initial checkin
+
+2004-02-06 23:50  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       added sys_clone.h
+
+2004-02-06 23:50  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       added 'chattr -t /vservers' + needed Requires:
+
+2004-02-06 23:49  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.functions:
+
+       call 'chattr -t' on newly create vserverdirs
+       cleanups; parenthesize case-expressions
+
+2004-02-06 22:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/util.h:
+
+       exitLikeProcess(): added NORETURN attribute to prototype
+
+2004-02-06 22:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/rpm-fake.c:
+
+       cleanups; use sys_clone()
+
+2004-02-06 22:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/new-namespace.c:
+
+       cleanups; modernized it
+
+2004-02-06 22:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       link new-namespace against util-exitlikeprocess
+       cleanups
+
+2004-02-06 22:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/sys_clone.h:
+
+       initial checkin
+
+2004-02-06 19:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/testsuite/Makefile-files:
+
+       do not call vunify-test when no C99 compiler is available
+
+2004-02-06 18:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_vector/testsuite/: Makefile-files, test1.c:
+
+       initial checkin
+
+2004-02-06 18:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/testsuite/vunify-test.sh:
+
+       use '-n' flag
+
+2004-02-06 18:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vutil.cc:
+
+       minor cosmetical changes
+
+2004-02-06 18:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vunify-init.hc:
+
+       initModeManually(): added missing strdup()
+
+2004-02-06 18:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am, ensc_vector/Makefile-files:
+
+       added ensc_vector testsuite
+
+2004-02-06 17:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_vector/vector-insert.c:
+
+       fixed it
+
+2004-02-06 17:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-stat.c:
+
+       use ensc_vector
+       cleanups
+
+2004-02-06 17:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/lsxid.c:
+
+       use ensc_vector to cache xid->name mappings
+
+2004-02-06 17:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       link vserver-stat against libensc_vector.a
+
+2004-02-06 16:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       enumerated possible resources
+
+2004-02-06 16:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/chxid.c:
+
+       fixed do-display-dir behavior
+
+2004-02-06 15:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       _generateFlagOptions(): fixed a case expression; formerly x"foo" ==
+       foo checks which would never succeed
+
+2004-02-06 15:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: chcontext.c, chroot-cat.c, chroot-rm.c, exec-cd.c,
+         exec-ulimit.c, fstool.c, new-namespace.c, pipe-sync.c,
+         rpm-fake-resolver.c, save_ctxinfo.c, vps.c, vrsetup.c,
+         vserver-info.c, vserver-stat.c, vunify-doit.hc, vunify-init.hc,
+         vunify-matchlist.c, vunify.c, testsuite/rpm-fake-test.c:
+
+       use new ensc_wrappers/ headers
+
+2004-02-06 15:49  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       removed wrappers-*
+       link lsxid against libensc_vector.a
+
+2004-02-06 15:48  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: wrappers-dirent.h[DEAD], wrappers-io.h[DEAD],
+         wrappers-vserver.h[DEAD], wrappers.h[DEAD]:
+
+       moved and generalized into an own /ensc_wrappers subdir
+
+2004-02-06 15:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * ensc_vector/Makefile-files, ensc_vector/vector-clear.c,
+         ensc_vector/vector-free.c, ensc_vector/vector-init.c,
+         ensc_vector/vector-insert.c, ensc_vector/vector-internal.h,
+         ensc_vector/vector-popback.c, ensc_vector/vector-pushback.c,
+         ensc_vector/vector-resize.c,
+         ensc_vector/vector-resizeinternal.hc,
+         ensc_vector/vector-search.c, ensc_vector/vector-sort.c,
+         ensc_vector/vector-unique.c, ensc_vector/vector.h,
+         ensc_vector/vector.hc, ensc_wrappers/Makefile-files,
+         ensc_wrappers/wrappers-clone.hc,
+         ensc_wrappers/wrappers-dirent.hc,
+         ensc_wrappers/wrappers-fcntl.hc, ensc_wrappers/wrappers-io.hc,
+         ensc_wrappers/wrappers-ioctl.hc,
+         ensc_wrappers/wrappers-iosock.hc,
+         ensc_wrappers/wrappers-mount.hc, ensc_wrappers/wrappers-pivot.hc,
+         ensc_wrappers/wrappers-resource.hc,
+         ensc_wrappers/wrappers-stdlib.hc,
+         ensc_wrappers/wrappers-unistd.hc,
+         ensc_wrappers/wrappers-vserver.hc,
+         ensc_wrappers/wrappers-wait.hc, ensc_wrappers/wrappers.h,
+         ensc_wrappers/wrappers_handler.hc:
+
+       initial checkin
+
+2004-02-06 15:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       added ensc_vector/ & ensc_wrappers/ subdirs and files
+
+2004-02-05 23:16  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/setattr.c:
+
+       documented --barrier
+       fixed do-display-dir behavior
+
+2004-02-05 05:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       added another path for the template mtab file
+
+2004-02-05 05:14  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.28.195
+
+2004-02-05 05:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/defaults/apt.conf:
+
+       initial checkin
+
+2004-02-05 04:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/Makefile.am:
+
+       added default apt.conf
+
+2004-02-05 04:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       documented default apt.conf
+
+2004-02-05 04:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/syscall-legacy.hc:
+
+       minor code cleanups
+       added a missing '#ifdef ENSC_SYSCALL_TRADITIONAL'
+
+2004-02-05 04:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_syscall.m4:
+
+       enhanced check by using kernel headers
+
+2004-02-05 04:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.functions.apt:
+
+       added default apt.conf/vendors.conf files
+
+2004-02-05 04:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/chcontext.c:
+
+       use sethostname(2)/setdomainname(2) again...
+
+2004-02-05 00:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       use ENSC_SYSCALL
+       enhanced diagnostic output
+
+2004-02-05 00:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: syscall-legacy.hc, vserver-internal.h:
+
+       use ENSC_SYSCALL_TRADITIONAL
+
+2004-02-05 00:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/syscall.c:
+
+       cleanups; do not include "compat.h" anymore explicitly
+
+2004-02-05 00:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       added @WGET@ substitution
+
+2004-02-04 22:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_syscall.m4:
+
+       initial checkin
+
+2004-02-04 22:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vpkg:
+
+       implemented Debian support
+
+2004-02-04 22:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver:
+
+       cleanups
+       added '--silent' option
+
+2004-02-04 22:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: vunify-init.hc, vunify.c:
+
+       minor cleanups
+
+2004-02-04 04:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/fscompat_getiattr-v13.hc:
+
+       fixed 'xid' parameter transmission
+
+2004-02-04 04:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS:
+
+       version 0.28.193
+
+2004-02-04 04:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       added check for wget
+       version 0.28.193
+
+2004-02-04 04:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       added some (Build)Requires:
+
+2004-02-04 04:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/manifest.dat.pathsubst:
+
+       added debootstrap files
+
+2004-02-04 04:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       documented debootstrap configuration
+
+2004-02-04 04:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.debootstrap:
+
+       fixed path of default-uri file
+
+2004-02-04 03:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/misc/debootstrap.uri:
+
+       initial checkin
+
+2004-02-04 03:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/Makefile.am:
+
+       added debootstrap.uri
+
+2004-02-04 03:48  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-setup.functions:
+
+       use $PKGLIBDEFAULTDIRc
+
+2004-02-04 03:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver-build.apt-rpm, vserver-build.functions,
+         vserver-build.skeleton:
+
+       cleanups; use 'base.' namespace
+
+2004-02-04 03:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build:
+
+       added debootstrap
+
+2004-02-04 03:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vpkg:
+
+       added basic support for Debian
+
+2004-02-04 03:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added $_WGET
+
+2004-02-04 03:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/Makefile-files:
+
+       added debootstrap and pkgmgmt files
+
+2004-02-04 03:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.debootstrap:
+
+       initial checkin
+
+2004-02-03 23:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.28.192
+
+2004-02-03 23:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/.cvsignore:
+
+       added 'vuname'
+
+2004-02-03 23:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * contrib/: Makefile-files, make-manifest, manifest.dat.pathsubst,
+         .cvsignore:
+
+       initial checkin
+
+2004-02-03 22:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       added more details to the final summary
+
+2004-02-03 22:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/Makefile.am:
+
+       added misc/fstab
+
+2004-02-03 22:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver-build.apt-rpm, vserver-build.functions:
+
+       splitted some functions into a separate vserver-build.functions.pkgmgmt file
+       use XXX.yyy namespace-style notation
+
+2004-02-03 22:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.functions.pkgmgmt,
+         scripts/vserver-build.skeleton, distrib/misc/fstab:
+
+       initial checkin
+
+2004-02-03 22:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-setup.functions:
+
+       allow to configure fstab-file
+
+2004-02-03 22:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver-build.functions.apt,
+         vserver-build.functions.rpm:
+
+       splitted some functions into a separate vserver-build.functions.pkgmgmt file
+       use XXX.yyy namespace-style notation
+
+2004-02-03 22:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build:
+
+       added skeleton support
+       fixed help message
+
+2004-02-03 22:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver:
+
+       added '--debug' option
+
+2004-02-03 22:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added $_LIB_VSERVER_BUILD_FUNCTIONS_PKGMGMT
+
+2004-02-03 22:48  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/Makefile-files:
+
+       added vserver-build.skeleton
+
+2004-02-03 22:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vkill.c:
+
+       cleanups; use modern interfaces
+
+2004-02-03 22:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/util.h:
+
+       VSERVER_DECLARE_CMD macro: added
+
+2004-02-03 22:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       added vuname
+
+2004-02-03 22:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/testsuite/Makefile-files:
+
+       added workaround for automake bug
+
+2004-02-03 22:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vuname.c:
+
+       initial checkin
+
+2004-02-03 13:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       use ENSC_C99COMPILER
+       give out summary at end of ./configure
+
+2004-02-03 13:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       * added support for ENSC_HAVE_C99_COMPILER and conditionalized build
+         of 'vunify'
+       * renamed *_CXX_X_* variables to *_CXX_*
+
+2004-02-03 13:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vunify.cc[DEAD]:
+
+       removed since rewritten in C
+
+2004-02-03 13:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_dietlibc.m4:
+
+       use 'yes' instead of '1'
+
+2004-02-03 13:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_cxxcompiler.m4:
+
+       added ENSC_C99COMPILER
+       added warning-messages
+
+2004-02-03 13:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: syscall_getvhiname-v13.hc, syscall_setvhiname-v13.hc:
+
+       #include <string.h>
+
+2004-02-02 20:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/compatibility.xml:
+
+       added note about chcontext rewrite
+
+2004-02-02 20:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       added support for olduts API
+
+2004-02-02 20:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       substitute @PACKAGE@ too
+
+2004-02-02 20:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/testsuite/Makefile-files:
+
+       added chcontext-test.c
+
+2004-02-02 20:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/testsuite/chcontext-test.c:
+
+       initial checkin
+
+2004-02-02 20:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/wrappers.h:
+
+       added Esetsid()
+
+2004-02-02 20:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/wrappers-vserver.h:
+
+       return xid_t instead of void
+
+2004-02-02 20:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-stat.c:
+
+       cleanups
+       added missing '\n' in error-msg
+
+2004-02-02 20:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-info.c:
+
+       added UTS tag
+
+2004-02-02 20:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/reducecap.c:
+
+       cleanups in the vc_new_s_context() call
+
+2004-02-02 20:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/chcontext.c:
+
+       rewrote and enhanced it
+
+2004-02-02 20:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       made chcontext a dietlibc program and updated its SOURCES
+
+2004-02-02 20:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       return xid_t on vc_new_s_context()
+       added VHOST/vhi functions and types
+
+2004-02-02 19:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver-internal.h:
+
+       cleanups
+       added CALL_VC_OLDUTS()
+       added VHI_USER2KERNEL/VHI_KERNEL2USER() wrappers
+
+2004-02-02 19:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/virtual.h:
+
+       added VHOST support
+
+2004-02-02 19:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: syscall_gettaskxid-oldproc.hc,
+         syscall_getvxinfo-oldproc.hc:
+
+       renamed *_X to *_oldproc
+
+2004-02-02 19:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: syscall-compat.hc, syscall-legacy.hc, syscall.c:
+
+       fixed vc_new_s_context() to return the context instead of 0/1
+
+2004-02-02 19:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: fscompat_getiattr-v13.hc, fscompat_setiattr-v13.hc,
+         syscall_getiattr-v13.hc, syscall_getvxinfo-v13.hc,
+         syscall_kill-v11.hc, syscall_setiattr-v13.hc:
+
+       use CTX_USER2KERNEL to wrap xid
+
+2004-02-02 19:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/capabilities.c:
+
+       allow both 'CAP_xxx' and 'xxx'
+
+2004-02-02 19:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       added *vhiname* files
+
+2004-02-02 19:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: syscall_getvhiname-olduts.hc, syscall_getvhiname-v13.hc,
+         syscall_getvhiname.c, syscall_setvhiname-olduts.hc,
+         syscall_setvhiname-v13.hc, syscall_setvhiname.c:
+
+       initial checkin
+
+2004-01-29 12:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/.cvsignore:
+
+       initial checkin
+
+2004-01-29 12:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS:
+
+       version 0.28.190
+
+2004-01-29 12:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       cleanups; use $(SED) instead of sed
+       fix $pkglibdir in install-data-hook
+       put some hooks into own targets
+
+2004-01-29 12:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       added tests for sed and cmp
+       outsourced ext2fs test (merged from 0.28)
+
+2004-01-29 12:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-stat.c:
+
+       fixed insert-into-list function
+       give out warning when vc_get_task_xid() fails
+
+2004-01-29 12:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-info.c:
+
+       use DIM_OF() macro
+       added APIVER tag
+       fixed help message
+
+2004-01-29 12:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/util.h:
+
+       added DIM_OF() macro
+
+2004-01-29 12:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/.cvsignore:
+
+       added vrsetup
+
+2004-01-29 12:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: rootshell, vapt-get, vapt-get-worker, vpkg, vpstree,
+         vrpm, vrpm-preload, vrpm-worker, vserver, vserver-build,
+         vserver-copy, vservers.grabinfo.sh, vsysvwrapper, vtop,
+         legacy/distrib-info, legacy/vserver, legacy/vserverkillall:
+
+       fixed/changed path-detection for $UTIL_VSERVER_VARS
+
+2004-01-29 12:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/Makefile-files:
+
+       cleanups
+       do not install util-vserver-vars in SBINDIR anymore
+
+2004-01-29 12:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_e2fscheck.m4:
+
+       initial checkin
+
+2004-01-29 12:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: ext2fs.h, getversion.c, vserver.h:
+
+       merged with 0.28
+
+2004-01-23 22:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/Makefile-files:
+
+       added some files to doc_DAT
+
+2004-01-23 21:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       version 0.27.199
+       added check for xsltproc
+
+2004-01-23 21:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS:
+
+       version 0.27.199
+
+2004-01-23 21:50  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * compat.h:
+
+       added ENSC_FIX_IOCTL()
+
+2004-01-23 21:49  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       added $(doc_DAT)
+
+2004-01-23 21:48  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/Makefile-files:
+
+       added compat-doc
+
+2004-01-23 21:48  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/: compat-xhtml.xsl, compatibility.dtd, compatibility.xml:
+
+       initial checkin
+
+2004-01-23 21:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: ioctl-getext2flags.hc, ioctl-getfilecontext.hc,
+         ioctl-setext2flags.hc, ioctl-setfilecontext.hc, ioctl-setxflg.hc:
+
+       use ENSC_FIX_IOCTL() to fix dietlibc's ioctl() return values
+
+2004-01-22 22:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: getversion-internal.hc, syscall-compat.hc,
+         syscall_getiattr-v13.hc, syscall_gettaskxid-v13.hc,
+         syscall_getvxinfo-v13.hc, syscall_kill-v11.hc,
+         syscall_rlimit-v11.hc, syscall_setiattr-v13.hc:
+
+       use the VCMD_* macros instead of the VC_CMD(...) macros
+
+2004-01-22 16:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.27.198
+
+2004-01-22 16:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vrsetup.c:
+
+       fixed copyright date
+
+2004-01-22 15:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/wrappers.h:
+
+       added Eioctl() wrapper
+
+2004-01-22 15:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       added vrsetup
+
+2004-01-22 15:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vrsetup.c:
+
+       initial checkin
+
+2004-01-22 14:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vunify-doit.hc:
+
+       * provide st_mode at vc_set_iattr_compat() call
+
+2004-01-22 14:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: lsxid.c, showattr.c:
+
+       * provide st_mode at vc_set_iattr_compat() call
+       * do not stop on non-regular files; vc_set_iattr_compat() handles this
+         already
+
+2004-01-22 14:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/setattr.c:
+
+       * removed the race-check; this is done by vc_set_iattr_compat() already
+       * provide st_mode at vc_set_iattr_compat() call
+       * do not stop on non-regular files; vc_set_iattr_compat() handles this
+         already
+       * moved setFlags() code into handleFile()
+       * added 'iunlink' option
+
+2004-01-22 14:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/chxid.c:
+
+       * removed the race-check; this is done by vc_set_iattr_compat() already
+       * provide st_mode at vc_set_iattr_compat() call
+       * do not stop on non-regular files; vc_set_iattr_compat() handles this
+         already
+       * moved setFile() code into handleFile()
+
+2004-01-22 14:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       removed 'vunify' from list of C++ files
+
+2004-01-22 14:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/syscall_gettaskxid-v13.hc:
+
+       fixed call
+
+2004-01-22 14:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: ioctl-getext2flags.hc, ioctl-getfilecontext.hc,
+         ioctl-getxflg.hc, ioctl-setext2flags.hc, ioctl-setfilecontext.hc,
+         ioctl-setxflg.hc:
+
+       when ioctl() returns a value <-1, assign errno manually and return -1
+
+2004-01-22 14:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: syscall_getiattr-v13.hc, syscall_setiattr-v13.hc:
+
+       updated to changed API; removed 'dev' field from 'struct vcmd_ctx_iattr_v0'
+
+2004-01-22 14:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/virtual.h:
+
+       updated; removed 'dev' field from 'struct  vcmd_ctx_iattr_v0'
+
+2004-01-22 14:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver-internal.h:
+
+       CALL_VC(): return ENOSYS in errorcase
+
+2004-01-22 14:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       * vc_[sg]et_iattr_compat(): added additional 'mode' parameter to avoid
+         an additional 'lstat'
+
+2004-01-22 14:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: fscompat_getiattr.c, fscompat_setiattr.c:
+
+       * added additional 'mode' parameter to avoid an additional 'lstat'
+
+2004-01-22 14:29  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: fscompat_getiattr-fscompat.hc,
+         fscompat_setiattr-fscompat.hc:
+
+       * added additional 'mode' parameter to avoid an additional 'lstat'
+       * operate on regular files and directories only
+
+2004-01-21 22:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/syscall_gettaskxid-v13.hc:
+
+       return VC_NOCTX instead of -1
+
+2004-01-21 20:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * tests/getinitpid.c:
+
+       updated to new API
+
+2004-01-21 20:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-info.c:
+
+       added INITPID* and XID tags
+
+2004-01-21 20:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/save_ctxinfo.c, src/vps.c, src/vserver-stat.c,
+         src/wrappers-vserver.h, tests/getctx.c:
+
+       use vc_get_task_xid() instead of vc_X_getctx()
+
+2004-01-21 19:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       * vc_get_vx_info(), vc_get_task_xid(): added prototypes plus required
+         typedefinitions
+       * vc_X_getctx(), vc_X_getinitpid(): removed since obsoleted by functions
+         above
+
+2004-01-21 19:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver-internal.h:
+
+       * added fscompat & oldproc API
+       * added support for VC_MULTIVERSION_SYSCALL which chooses the optimal
+         CALL_VC variant
+       * changed CALL_VC() so that it looks for version greater than requested
+         one now
+
+2004-01-21 19:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/virtual.h:
+
+       updated; added VINFO commands
+
+2004-01-21 19:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: syscall_kill.c, syscall_rlimit.c:
+
+       cleanups; optimize CALL_VC() usage
+
+2004-01-21 19:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: fscompat_getiattr.c, fscompat_setiattr.c:
+
+       cleanups; use CALL_VC() macro
+
+2004-01-21 19:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: checkversion.c, getversion-internal.hc, getversion.c,
+         ioctl-getext2flags.hc, ioctl-getfilecontext.hc, ioctl-getxflg.hc,
+         ioctl-setext2flags.hc, ioctl-setfilecontext.hc, ioctl-setxflg.hc,
+         syscall-compat.hc, syscall.c, syscall_getiattr-v13.hc,
+         syscall_setiattr-v13.hc:
+
+       cleanups; fixed/changed "vserver-internal.h" including
+
+2004-01-21 19:50  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       added get_task_xid & get_vc_info files
+       removed obsoleted getctx/getinitpid files
+       renamed some -v11 files to -fscompat
+
+2004-01-21 19:48  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: getctx-compat.hc[DEAD], getctx-legacy.hc[DEAD],
+         getctx.c[DEAD], getinitpid-compat.hc[DEAD],
+         getinitpid-legacy.hc[DEAD], getinitpid.c[DEAD]:
+
+       obsoleted by v13/oldproc functions
+
+2004-01-21 19:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: fscompat_getiattr-v13.hc, fscompat_setiattr-v13.hc,
+         syscall_gettaskxid-oldproc.hc, syscall_gettaskxid-v13.hc,
+         syscall_gettaskxid.c, syscall_getvxinfo-oldproc.hc,
+         syscall_getvxinfo-v13.hc, syscall_getvxinfo.c:
+
+       initial checkin
+
+2004-01-21 19:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: fscompat_getiattr-fscompat.hc,
+         fscompat_getiattr-v11.hc[DEAD], fscompat_setiattr-fscompat.hc,
+         fscompat_setiattr-v11.hc[DEAD]:
+
+       renamed *-v11 to *-fscompat
+
+2004-01-21 19:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * .cvsignore:
+
+       added 'Build-*'
+
+2004-01-21 19:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       added 'oldproc' API
+
+2004-01-21 02:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: Makefile-files, vunify-compare.hc, vunify-compare.ic[DEAD],
+         vunify-doit.hc, vunify-doit.ic[DEAD], vunify-init.hc,
+         vunify-init.ic[DEAD], vunify.c:
+
+       renamed *.ic to *.hc
+
+2004-01-21 02:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vunify.h:
+
+       added changes for new API
+       added rsSPECIAL reason
+
+2004-01-21 02:29  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vunify.c:
+
+       added changes for new API
+
+2004-01-21 02:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vunify-doit.ic:
+
+       updated to new API
+
+2004-01-21 02:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vlimit.c:
+
+       fixed help message
+
+2004-01-21 02:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: chxid.c, fstool.c, fstool.h, lsxid.c, setattr.c,
+         showattr.c:
+
+       updated/enhanced for new API
+
+2004-01-21 02:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/virtual.h:
+
+       updated
+
+2004-01-21 02:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver-internal.h:
+
+       added v13 API
+
+2004-01-21 02:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       added fscompat and v13 functions
+       removed ioctl functions
+
+2004-01-21 02:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       added fscompat and v13 functions
+
+2004-01-21 02:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: ioctl-getext2flags.c[DEAD], ioctl-getfilecontext.c[DEAD],
+         ioctl-setext2flags.c[DEAD], ioctl-setfilecontext.c[DEAD],
+         ioctl-getext2flags.hc, ioctl-getfilecontext.hc,
+         ioctl-setext2flags.hc, ioctl-setfilecontext.hc:
+
+       do not provide the ioctl-functions anymore; use them only internally
+       and include them directly. Therefore, renamed them from *.c to *.hc
+
+2004-01-21 02:14  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: fscompat_getiattr-v11.hc, fscompat_getiattr.c,
+         fscompat_setiattr-v11.hc, fscompat_setiattr.c, ioctl-getxflg.hc,
+         ioctl-setxflg.hc, syscall_getiattr-v13.hc, syscall_getiattr.c,
+         syscall_setiattr-v13.hc, syscall_setiattr.c:
+
+       initial checkin
+
+2004-01-21 02:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       added v13 & fscompat APIs
+
+2004-01-19 19:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/misc/vunify-exclude:
+
+       added .rpmdb
+
+2004-01-19 19:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: chxid.c, lsxid.c, setattr.c, showattr.c:
+
+       s/S_ISLNK/!S_ISREG/ -> ignore any non-regular files
+
+2004-01-19 19:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       removed vunify-operations
+
+2004-01-19 19:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vunify.h:
+
+       cleanups; moved structure declarations from vunify.c into this headerfile
+
+2004-01-19 19:16  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vunify.c:
+
+       cleanups
+       added 'skip_reason' support
+       added debug output
+
+2004-01-19 19:14  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vunify-init.ic:
+
+       added debug output
+       fixed descriptor leak
+
+2004-01-19 19:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: vunify-compare.ic, vunify-doit.ic:
+
+       initial checkin
+
+2004-01-19 19:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: vunify-operations.c[DEAD], vunify-operations.h[DEAD]:
+
+       obsoleted by more straight-forward code
+
+2004-01-19 19:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vlimit.c:
+
+       fixed copy&paste error
+
+2004-01-17 06:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.27.196
+
+2004-01-17 06:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * tests/vserver-info.c:
+
+       updated to new vc_getVserverVdir() API
+
+2004-01-17 06:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vunify.c:
+
+       moved init*() functions to vunify-init.c
+
+2004-01-17 06:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vunify-operations.c:
+
+       compareUnify(): check mtime too
+
+2004-01-17 06:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vunify-matchlist.h:
+
+       made 'buf' constant
+
+2004-01-17 06:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vunify-matchlist.c:
+
+       allow cmp-pointer to be NULL
+
+2004-01-17 06:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vunify-init.ic:
+
+       use VPKG_PROG instead of PKGMGMT_INFO_PROG
+       register 'vdir'
+       use default exclude-lists
+
+2004-01-17 06:16  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vunify-debug.c:
+
+       added a const_cast
+
+2004-01-17 06:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-info.c:
+
+       updated VDIR tag to new interface
+
+2004-01-17 06:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver:
+
+       added 'unify' and 'pkg' commands
+
+2004-01-17 06:14  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vpkg:
+
+       initial checkin
+
+2004-01-17 06:14  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added $_VUNIFY and $_VPKG
+
+2004-01-17 06:13  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: distrib-info[DEAD], legacy/distrib-info:
+
+       moved distrib-info to legacy/
+
+2004-01-17 06:13  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/Makefile-files:
+
+       moved distrib-info to legacy/
+       added vpkg
+
+2004-01-17 06:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: getvservervdir.c, vserver.h:
+
+       added 'physical' parameter to vc_getVserverVdir() which resolves the
+       complete physical path of the vdir
+
+2004-01-17 06:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/misc/vunify-exclude:
+
+       initial checkin
+
+2004-01-17 06:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/Makefile.am:
+
+       added vunify-exclude
+
+2004-01-17 06:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       use manifest-data for -legacy
+
+2004-01-17 06:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * pathconfig.h.pathsubst:
+
+       added VPKG_PROG
+       minor cleanups
+
+2004-01-16 19:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/testsuite/vunify-test.sh:
+
+       applied new calling scheme
+
+2004-01-16 19:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/testsuite/vunify-functest.c:
+
+       added wrapper_exit_code
+
+2004-01-16 19:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/wrappers.h:
+
+       Elseek(), Emkstemp(): added
+       Emalloc(), Erealloc(): fixed declarations
+
+2004-01-16 19:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: vunify-matchlist.c, vunify-matchlist.h,
+         vunify-operations.c, vunify.c:
+
+       added exclude-list support
+
+2004-01-16 19:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-info.c:
+
+       added APPDIR tag
+       made it possible to supply additional paramaters
+
+2004-01-16 19:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: new-namespace.c, rpm-fake.c:
+
+       do not use CLONE_VFORK in debug mode; lockups with 'strace' are too annoying
+
+2004-01-16 19:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       updated vunify setup
+       added files for vunify
+
+2004-01-16 18:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/legacy/.cvsignore, src/vunify-debug.c,
+         src/vunify-init.ic, src/vunify.h, src/wrappers-io.h:
+
+       initial checkin
+
+2004-01-16 18:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       accept vservers beginning with './'
+
+2004-01-16 18:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       added new management functions + doc
+
+2004-01-16 18:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/internal.h:
+
+       added utilvserver_isDirectory() prototype
+
+2004-01-16 18:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/getvservervdir.c:
+
+       use utilvserver_isDirectory()
+
+2004-01-16 18:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       added new management sources
+
+2004-01-16 18:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: getvserverappdir.c, getvservercfgdir.c, isdirectory.c:
+
+       initial checkin
+
+2004-01-16 18:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       use filelists from contrib/make-manifest
+
+2004-01-16 18:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       fixed CVS tag
+
+2004-01-16 18:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       added contrib/ dir
+       substitute MANDIR too
+
+2004-01-14 03:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/util-exitlikeprocess.c:
+
+       added missing <signal.h>
+
+2004-01-14 03:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/fstool.h:
+
+       added 'local_fs' struct-member
+
+2004-01-14 03:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/fstool.c:
+
+       added support for '-x' (do not cross filesystems)
+       fixed invocation with directory-name
+       implemented '-a' (show dot)
+
+2004-01-14 03:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vps.c:
+
+       minor documentation fix
+
+2004-01-14 03:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: chxid.c, lsxid.c, setattr.c, showattr.c:
+
+       added and documented '-x' switch
+
+2004-01-14 01:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vps.c:
+
+       makde it compilable with gcc296
+
+2004-01-14 01:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       added -legacy subpackage
+
+2004-01-14 01:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       removed timestamps in legacy-dir also
+       substitute LEGACYDIR and PS
+
+2004-01-14 01:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vps.c:
+
+       added native '--version' and '--help'
+
+2004-01-14 01:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/Makefile-files:
+
+       added legacy-scripts to $(scripts_OPTIONS_EXEMPT)
+       added scripts_legacy_gen_SCRPTS to $(scripts_CLEANFILES)
+
+2004-01-14 01:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/validate.am:
+
+       fixed parallel build
+
+2004-01-14 00:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       added check for PS
+
+2004-01-14 00:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * pathconfig.h.pathsubst:
+
+       added PS_PROG
+
+2004-01-14 00:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/.cvsignore:
+
+       added vps
+
+2004-01-14 00:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       made vps a dietprog
+
+2004-01-14 00:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/getctx.c:
+
+       minor code cleanups
+
+2004-01-14 00:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/getctx.c:
+
+       added VC_BE_VALGRIND_FRIENDLY support
+
+2004-01-14 00:29  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       vc_get_securecaps(): added prototype
+
+2004-01-14 00:29  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver-internal.h:
+
+       made CALL_VC-macro a block
+
+2004-01-14 00:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/util-exitlikeprocess.c:
+
+       include <unistd.h>
+
+2004-01-14 00:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/Makefile-files:
+
+       moved legacy scripts into legacy/ and updated variables
+
+2004-01-14 00:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       updated legacy paths
+
+2004-01-14 00:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       added vps
+
+2004-01-14 00:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/util.h:
+
+       exitLikeProcess(): added prototype
+
+2004-01-14 00:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/wrappers.h:
+
+       Emalloc(), Erealloc(): added
+
+2004-01-14 00:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: util-exitlikeprocess.c, vps.c:
+
+       initial checkin
+
+2004-01-14 00:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: save_s_context[DEAD], vps.pathsubst[DEAD],
+         vserver-legacy[DEAD], vserverkillall[DEAD]:
+
+       moved into legacy
+
+2004-01-14 00:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/legacy/: save_s_context, vps.pathsubst, vserver,
+         vserverkillall:
+
+       initial checkin (moved from ../)
+
+2004-01-13 21:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-legacy:
+
+       use 'exec' to call commands on 'suexec' (patch by Alec Thomas)
+
+2004-01-13 15:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       added missing fstool.h header
+
+2004-01-13 15:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/virtual.h:
+
+       updated (added scheduler stuff)
+
+2004-01-13 15:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vkill.c:
+
+       removed warnings about unused parameters
+
+2004-01-13 15:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/getvserverbyctx.c, lib/getvserverctx.c, src/exec-cd.c,
+         tests/escaperoot.c, tests/testipc.c, tests/testlimit.c,
+         tests/testopenf.c:
+
+       made it compilable with gcc296
+
+2004-01-13 15:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       use $(src_sbin_SCRPTS)
+
+2004-01-13 15:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       added declarations for the ext2fs functions
+
+2004-01-13 15:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver-internal.h:
+
+       added EXT2FS macros
+
+2004-01-13 15:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/fmt.h:
+
+       fixed xulong/xlong declarations
+
+2004-01-13 15:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       added the ioctl-* files
+       added ext2fs.h
+
+2004-01-13 15:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/.cvsignore:
+
+       updated
+
+2004-01-13 15:16  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       removed ext2fs.h
+       added the fstools (lsxid,chxid,showattr,setattr) plus deps
+
+2004-01-13 15:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: chxid.c, fstool.c, fstool.h, lsxid.c, setattr.c,
+         showattr.c:
+
+       minor/medium cleanups
+
+2004-01-13 15:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/fstool-resolvectx.c:
+
+       initial checkin
+
+2004-01-13 14:49  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/showattr.c:
+
+       rewrote completely
+
+2004-01-13 14:48  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/ext2fs.h, src/ext2fs.h[DEAD]:
+
+       moved ext2fs.h from src/ into lib/ directory; we are providing the
+       needed functionality through libvserver now
+
+2004-01-13 14:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/chxid.c, src/fstool.c, src/fstool.h, src/lsxid.c,
+         src/setattr.c, lib/ioctl-getext2flags.c,
+         lib/ioctl-getfilecontext.c, lib/ioctl-setext2flags.c,
+         lib/ioctl-setfilecontext.c:
+
+       initial checkin
+
+2004-01-07 16:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       added URL which describes context-creation
+
+2004-01-07 16:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/chcontext.c:
+
+       * removed obsolete and unused 'fakeinit' variable
+       * fixed ctx-creation with fakeinit and static ctx-id's; fakeinit
+         requires a second call for ctx -2 to take effect
+
+2004-01-05 23:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       added vserver-info
+
+2004-01-05 23:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/.cvsignore:
+
+       updated
+
+2004-01-05 23:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/wrappers.h:
+
+       Edup2(): added
+
+2004-01-05 23:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-stat.c:
+
+       use existing syscall-wrappers instead of checking return-codes manually
+
+2004-01-05 23:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-info.c:
+
+       initial checkin
+
+2004-01-05 23:16  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/rpm-fake.c:
+
+       use fd3 for synchronization with resolver
+       adding some missing '\n' in messages
+       ignore empty environment variables too
+       exitRPMFake(): conditionalized debug-message
+
+2004-01-05 23:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/rpm-fake-resolver.c:
+
+       daemonize(): child waits for parent to finish now
+       use fd3 for synchronisation
+       enable fork on default
+
+2004-01-05 23:13  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       added vserver-info
+       minor cosmetical fixes
+
+2004-01-05 23:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.stop:
+
+       fixed error-handling
+
+2004-01-05 23:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-setup.functions:
+
+       added '--context' option
+       minor cosmetical cleanups
+
+2004-01-05 23:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.functions.apt:
+
+       initVariablesApt(): fixed empty function body
+
+2004-01-05 22:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vrpm-preload:
+
+       major cleanups; use 'vserver-info' to retrieve information about vserver
+
+2004-01-05 22:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vapt-get-worker:
+
+       removed old, unused debug code
+
+2004-01-05 22:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vapt-get, vrpm:
+
+       use modern '--help' & '--version' output
+
+2004-01-05 22:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added $_VSERVER_INFO
+
+2004-01-05 22:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       getVserverStatus(): fixed usage of 2nd parameter
+
+2004-01-05 22:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: fmtx.hc, getvserverbyctx.c, getvserverctx.c,
+         vserver-internal.h, vserver.h:
+
+       small cosmetical fix
+
+2003-12-30 21:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       version 0.27.190
+
+2003-12-30 20:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       - since dynamic libraries will be installed now, call /sbin/ldconfig
+       - other updates...
+
+2003-12-30 20:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/compat-pivot_root.h:
+
+       use <asm/unistd.h> instead of <linux/unistd.h> to fix problems with
+       RH's headers
+
+2003-12-30 19:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/testsuite/vunify-test.sh:
+
+       fixed paths
+
+2003-12-30 19:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.stop:
+
+       use sendKillSequence instead of ctx-kill
+
+2003-12-30 19:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       sendKillSequence(): added
+
+2003-12-30 19:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       removed _CTX_KILL
+       added _VKILL
+
+2003-12-30 19:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       getVserverStatus(): fixed usage if ctx
+       isCtxRunning(): added
+
+2003-12-30 18:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       added missing compat-c99.h header-file
+
+2003-12-30 18:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/chroot-rm.c:
+
+       fixed order of chroot() and parameter evaluation so that '--version'
+       and '--help' are working as non-root also
+
+2003-12-30 18:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       added missing headers
+       removed 'ctx-kill'; it is obsoleted through 'vkill'
+
+2003-12-30 18:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/ctx-kill.c[DEAD]:
+
+       replaced by 'vkill'
+
+2003-12-30 18:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * compat.h:
+
+       use results from dietlib's C99 compatibility-check
+
+2003-12-30 18:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_dietlibc.m4:
+
+       added check for C99 compatibility
+
+2003-12-30 18:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_fpicsyscall.m4:
+
+       fixed AC_LANG_PUSH/POP mismatch
+
+2003-12-30 17:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * .cvsignore, lib/.cvsignore, scripts/.cvsignore, src/.cvsignore:
+
+       updated
+
+2003-12-30 17:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/syscall_kill-v11.hc, lib/syscall_kill.c, src/vkill.c:
+
+       merged with 0.26.90
+
+2003-12-30 17:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/testsuite/rpm-fake-test.sh:
+
+       fixed LD_PRELOAD path
+
+2003-12-30 17:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver:
+
+       updated start/stop help-messages
+
+2003-12-30 17:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       getAllVservers(): ignore backup vservers
+
+2003-12-30 17:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/Makefile.am:
+
+       fixed multiple 'make install' by using '-f' on 'ln'
+
+2003-12-30 17:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       - merged with 0.26.90 (fixed --enable-apis, renamed ctx_t to xid_t,
+         renamed syscall, use C++ for ext2fs.h test)
+       - libtool'ized it
+
+2003-12-30 17:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       * added vkill (merged from 0.26.90)
+       * libtool'ized it
+
+2003-12-30 17:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       * added vc_kill() syscall (merged from 0.26.90)
+       * libtool'ized it
+
+2003-12-30 16:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       * added legacy-dir (merged from 0.26.90)
+       * libtool'ized it
+
+2003-12-30 16:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: .cvsignore, ctx-kill.c, rpm-fake-resolver.c, rpm-fake.c,
+         save_ctxinfo.c, vlimit.c, vserver-stat.c, wrappers-vserver.h:
+
+       merged with 0.26.90
+
+2003-12-30 16:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * tests/getctx.c, compat.h, lib/getctx-compat.hc,
+         lib/getctx-legacy.hc, lib/getctx.c, lib/getversion-internal.hc,
+         lib/getversion.c, lib/getvserverbyctx.c, lib/getvserverctx.c,
+         lib/syscall-compat.hc, lib/syscall-legacy.hc, lib/syscall.c,
+         lib/syscall_rlimit-v11.hc, lib/syscall_rlimit.c, lib/virtual.h,
+         lib/vserver-internal.h, lib/vserver.h, scripts/Makefile-files,
+         scripts/vps.pathsubst, scripts/vserver-legacy:
+
+       merged with 0.26.90
+
+2003-12-29 20:02  uid68581
+
+       * src/capchroot.c:
+
+       do not use vc_chrootsafe() anymore
+
+2003-12-29 20:01  uid68581
+
+       * tests/Makefile-files:
+
+       removed chrootsafe
+       libtool'ized
+
+2003-12-26 01:49  uid68581
+
+       * compat-c99.h, src/testsuite/Makefile-files,
+         src/testsuite/rpm-fake-test.c, src/testsuite/rpm-fake-test.sh,
+         src/testsuite/vunify-functest.c, src/testsuite/vunify-test.sh,
+         src/testsuite/data/rpm-fake-test.inp,
+         src/testsuite/data/rpm-fake-test.out:
+
+       initial checkin
+
+2003-12-26 01:49  uid68581
+
+       * pathconfig.h.pathsubst:
+
+       added RESOLVER_PROG
+
+2003-12-26 01:48  uid68581
+
+       * scripts/vprofile[DEAD]:
+
+       removed since obsoleted
+
+2003-12-26 01:48  uid68581
+
+       * tests/: escaperoot.c, forkbomb.c, testlimit.c, testopenf.c:
+
+       used workarounds to make it compilable with non-C99 compilers
+
+2003-12-26 01:47  uid68581
+
+       * src/wrappers.h:
+
+       added setgid/setuid/setgroups wrappers
+
+2003-12-26 01:47  uid68581
+
+       * src/util.h:
+
+       added Xmemcpy()
+       added safeChdir() prototype
+
+2003-12-26 01:46  uid68581
+
+       * src/rpm-fake.c:
+
+       rewrote large parts
+       added NSS functions (getpwnam(), getgrnam(), ...)
+
+2003-12-26 01:45  uid68581
+
+       * src/fakerunlevel.c:
+
+       use setgroups() also
+
+2003-12-26 01:45  uid68581
+
+       * src/chroot-rm.c:
+
+       added '--help' and '--version'
+
+2003-12-26 01:44  uid68581
+
+       * src/.cvsignore:
+
+       added exec-cd and rpm-fake-resolver
+       removed secure-umount
+
+2003-12-26 01:41  uid68581
+
+       * src/: exec-cd.c, rpm-fake-resolver.c, vunify-matchlist.c,
+         vunify-matchlist.h, vunify-operations.c, vunify-operations.h,
+         vunify.c, wrappers-dirent.h, util-safechdir.c:
+
+       initial checkin
+
+2003-12-26 01:38  uid68581
+
+       * src/Makefile-files:
+
+       removed secure-umount
+       added exec-cd
+       vunify will be a dietlibc program soonly
+
+2003-12-26 01:34  uid68581
+
+       * scripts/: vsysvwrapper, vtop:
+
+       fixed quoting
+
+2003-12-26 01:34  uid68581
+
+       * scripts/vserver.functions:
+
+       use 'exec-cd' instead of 'secure-umount'
+
+2003-12-26 01:33  uid68581
+
+       * scripts/vserver-build.functions.apt:
+
+       fixed initVariablesApt()
+       added support for default apt.conf
+
+2003-12-26 01:33  uid68581
+
+       * scripts/vserver-build.functions:
+
+       rename package-cfg directory on '--force' also
+
+2003-12-26 01:32  uid68581
+
+       * scripts/vserver-build.apt-rpm:
+
+       added '--debug' option
+
+2003-12-26 01:32  uid68581
+
+       * scripts/vserver:
+
+       added package-management options (atleast their documention)
+
+2003-12-26 01:30  uid68581
+
+       * scripts/vapt-get-worker:
+
+       set RPM::PM to 'external'
+
+2003-12-26 01:29  uid68581
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added _EXEC_CD
+       removed _SECURE_UMOUNT
+
+2003-12-26 01:29  uid68581
+
+       * scripts/: rootshell, vpstree:
+
+       fixed quoting
+
+2003-12-26 01:29  uid68581
+
+       * scripts/functions:
+
+       added support for default apt.conf
+
+2003-12-26 01:23  uid68581
+
+       * scripts/Makefile-files:
+
+       removed vprofile
+
+2003-12-26 01:22  uid68581
+
+       * m4/: ensc_cflags.m4, ensc_dietlibc.m4, ensc_kerneldir.m4,
+         ensc_release.m4, ensc_uv_vrootdir.m4:
+
+       fixed broken quoting which is complained by recent automake
+
+2003-12-26 01:22  uid68581
+
+       * lib/: getvserverbyctx.c, getvserverctx.c:
+
+       added workarounds for non-C99 compilers
+
+2003-12-26 01:21  uid68581
+
+       * distrib/defaults/apt/apt.conf:
+
+       initial checkin
+
+2003-12-26 01:20  uid68581
+
+       * distrib/Makefile.am:
+
+       added default apt.conf
+
+2003-12-26 01:20  uid68581
+
+       * compat.h:
+
+       differ between >=3.3 and below at certain options
+       added 'restrict' workarounds
+
+2003-12-26 01:19  uid68581
+
+       * Makefile.am:
+
+       - removed m4_FILES; it is handled by automake >=2.8 automatically
+       - added basic test support
+
+2003-12-02 03:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       evaluate CHBIND_OPTS lazily
+
+2003-12-02 03:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/getvservername.c:
+
+       getRecentName(): return basename of directory but not this of the link anymore
+
+2003-11-22 03:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.26.193
+
+2003-11-22 03:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/ifspec.c, configure.ac, Makefile.am, .cvsignore:
+
+       merged with 0.26
+
+2003-11-22 03:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       generate some .defaults symlinks
+
+2003-11-22 03:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       generate %ghost symlinks in %post
+       added vlimit
+       added some .default directories
+
+2003-11-22 03:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/getvserverctx.c:
+
+       added missing includes
+
+2003-11-22 03:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-setup.functions:
+
+       use '$CONFDIR/.defaults/run.rev' instead of '$PKGSTATEREVDIR'
+
+2003-11-20 19:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       use 'vservers.rev' directory instead of 'vservers/rev'
+
+2003-11-20 19:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-setup.functions:
+
+       use PKGSTATEREVDIR
+
+2003-11-20 19:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/.cvsignore:
+
+       added vps
+
+2003-11-20 19:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       added separate 'pkgstaterevdir' variable
+
+2003-11-20 19:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * pathconfig.h.pathsubst:
+
+       added DEFAULT_PKGSTATEREVDIR
+
+2003-11-20 19:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       added getvserverctx & getvserverbyctx files
+       added fmtx* files
+
+2003-11-20 19:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/syscall-legacy.hc:
+
+       has_chrootsafe(), call_set_ctxlimit(): removed
+
+2003-11-20 19:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       vc_getVserverByCtx(), vc_getVserverCtx(): added
+
+2003-11-20 19:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: fmt.h, fmt.hc:
+
+       added/use specialized hex-formating functions
+
+2003-11-20 19:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: fmt-internal.h, fmtx-32.c, fmtx-64.c, fmtx.hc,
+         getvserverbyctx.c, getvserverctx.c:
+
+       initial checkin
+
+2003-11-20 19:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added PKGSTATEREVDIR
+
+2003-11-20 19:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vserver-stat.c:
+
+       rewrote it to
+       * use the new management function
+       * remove all traces of printf()
+       * remove stacked functions
+
+2003-11-20 19:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vlimit.c:
+
+       use the specialized utilvserver_fmt_xuint64() function
+
+2003-11-20 19:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       made 'vserver-stat' a dietlibc-compiled program
+
+2003-11-20 16:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * compat.h:
+
+       define FMT_PREFIX
+
+2003-11-20 16:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * tests/getinitpid.c, tests/getctx.c, src/save_ctxinfo.c,
+         src/vlimit.c, lib/getprocentry-legacy.c, lib/Makefile-files,
+         lib/fmt-32.c, lib/fmt-64.c, lib/fmt.h, lib/fmt.hc,
+         lib/int2str.c[DEAD], lib/internal.h, lib/uint2str.c[DEAD]:
+
+       use fmt_*() functions instead of *int2str()
+
+2003-11-20 03:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vps[DEAD]:
+
+       removed since autogenerated from vps.pathsubst
+
+2003-11-19 00:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/fc1/: apt/rpmpriorities, apt/sources.list, pkgs/01,
+         pkgs/02:
+
+       initial checkin (based on fdr0.95)
+
+2003-11-19 00:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/Makefile.am:
+
+       added Fedora Core 1
+       removed Fedora Beta
+
+2003-11-19 00:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vapt-get:
+
+       do not set $_APT_GET
+
+2003-11-19 00:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * compat.h:
+
+       merged/added from 0.25
+       added workaround for broken 'long long' handling of dietlibc
+
+2003-11-19 00:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files, lib/syscall-compat.hc,
+         lib/syscall_rlimit-v11.hc, lib/syscall_rlimit.c, lib/virtual.h,
+         lib/vserver-internal.h, lib/vserver.h, Makefile.am, THANKS,
+         configure.ac, util-vserver.spec.in:
+
+       merged/added from 0.25
+
+2003-11-19 00:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/.cvsignore, src/Makefile-files, src/showattr.c, src/vutil.cc,
+         src/ext2fs.h, src/setctxlimit.c[DEAD], src/vlimit.c,
+         scripts/vserver-legacy:
+
+       merged/added from 0.25
+
+2003-11-19 00:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * sysv/: rebootmgr.subst, vservers.subst:
+
+       merged in changes from 0.25
+
+2003-11-05 00:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.24.191
+
+2003-11-05 00:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       added '--without dietlibc' option
+
+2003-11-05 00:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_dietlibc.m4:
+
+       fixed typos ('withval' instead of 'enableval')
+
+2003-11-05 00:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: getvservername.c, getvservervdir.c:
+
+       added '#include <unistd.h>' to fix compilation problems with glibc
+
+2003-11-04 14:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.24.190
+
+2003-11-04 14:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * .cvsignore:
+
+       added linuxcaps.h (merged from stable)
+
+2003-11-04 14:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       - separated and completed m4_FILES
+       - added '--show-dead' to cvs2cl params
+       - fix linuxcaps.h (merged from stable)
+
+2003-11-04 14:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/getvservercfgstyle.c:
+
+       added some additional logic
+
+2003-11-04 14:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/virtual.h:
+
+       do not include the <linux/types.h> kernel-header anymore
+
+2003-11-04 14:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       - getAllVservers: use _tmp instead of tmp to avoid clashes when caller
+         wants to have results in 'tmp', fixed array assignment
+
+2003-11-04 14:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/rebootmgr.c:
+
+       fixed typo
+
+2003-11-04 14:50  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * tests/vserver-info.c:
+
+       added '--help' and '--version'
+
+2003-11-04 02:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       merged from SYSCALL_SWITCH
+
+2003-11-04 02:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_changelog.m4:
+
+       merged from SYSCALL_SWITCH
+
+2003-11-04 02:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/distrib-info, scripts/vserver-copy,
+         scripts/vserver-legacy, scripts/vservers.grabinfo.sh,
+         src/rebootmgr.c, sysv/Makefile-files, sysv/rebootmgr.subst:
+
+       merged in changes from 0.23.96 (/vservers -> $DEFAULT_VSERVERDIR)
+
+2003-11-04 01:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/validate.am:
+
+       updated from vserver-djinni
+
+2003-11-04 01:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver-internal.h:
+
+       ignore lower 8bit on version
+
+2003-11-03 20:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       removed 'vkill' for now
+       call 'install-vserverdir'
+
+2003-11-03 20:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/redhat/initpost:
+
+       create /etc/sysconfig/network
+
+2003-11-03 20:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       - fixed some statements which would fail with 'set -e'
+       - made 'disableInterface' smart so that it calculates parameters
+         automatically
+
+2003-11-03 20:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-setup.functions:
+
+       added support for '--netbcast'
+
+2003-11-03 20:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/getvservername.c:
+
+       terminate name with '\0'
+
+2003-10-30 18:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-legacy:
+
+       merged from 0.23.95:
+       - reenabled the copy-all mode; can be disabled by setting the
+         $UTIL_VSERVER_AVOID_COPY environment variable
+       - use '-HS' ulimit switch for newly created vservers
+
+2003-10-30 18:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       - large cleanup; use changed variables from scripts/Makefile
+       - try to keep modes of pathsubstituted files
+       - create own install-rule for vserver-dir; 'make distcheck' does not
+         like /vservers...
+
+2003-10-30 18:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/reducecap.c:
+
+       use QUOTACTL (merged from 0.23.94)
+
+2003-10-30 18:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/rebootmgr.c:
+
+       use configured SBINDIR instead of hardcoded /usr/sbin
+
+2003-10-30 18:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/chcontext.c:
+
+       added QUOTACTL to 'secure' caps (merged from 0.23.94)
+
+2003-10-30 18:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       create 'setattr' program
+
+2003-10-30 18:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: distrib-info, rootshell, vpstree, vserver-copy,
+         vsysvwrapper, vtop:
+
+       merged in changes from 0.24.94 (s!/usr/sbin!$SBINDIR!)
+
+2003-10-30 18:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver.start, vserver.stop:
+
+       use 'set -e' instead of 'set +e'
+
+2003-10-30 18:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       added 'checkComponents()' function
+
+2003-10-30 18:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vps.pathsubst:
+
+       initial check (was: vps)
+
+2003-10-30 18:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vkill[DEAD]:
+
+       removed; is obsoleted by ctx-kill
+
+2003-10-30 18:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added INITRDDIR, LIBDIR and INCLUDEDIR
+
+2003-10-30 18:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/Makefile-files:
+
+       large cleanup
+       removed 'vkill' (obsoleted by ctx-kill)
+       vps is now vps.subst
+
+2003-10-30 18:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/capabilities.c, lib/vserver.h, man/reducecap.8:
+
+       use CAP_QUOTACTL instead of CAP_OPENDEV
+
+2003-10-30 15:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       use ENSC_UV_VROOTDIR to set 'vserverdir'
+       added missing path-substitutions
+
+2003-10-30 15:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       use ENSC_UV_VROOTDIR to set 'vserverdir'
+
+2003-10-30 15:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_uv_vrootdir.m4:
+
+       initial checkin
+
+2003-10-23 22:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * tests/vserver-info.c:
+
+       initial checkin
+
+2003-10-23 22:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * tests/: Makefile-files, .cvsignore:
+
+       added vserver-info
+
+2003-10-23 22:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * compat.h:
+
+       define TEMP_FAILURE_RETRY for dietlibc-compilation
+
+2003-10-23 22:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * pathconfig.h.pathsubst:
+
+       define DEFAULT_VSERVERDIR and DEFAULT_VSERVERPKGDIR
+
+2003-10-23 22:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       added files for higher-level management
+
+2003-10-23 22:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       added functions for vserver-management
+
+2003-10-23 22:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: getvservercfgstyle.c, getvservername.c, getvservervdir.c:
+
+       initial checkin
+
+2003-10-23 01:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver.start, vserver.stop, vserver.suexec:
+
+       cleanups; go into vserver-dir before *and* after executing scriptlets
+
+2003-10-23 01:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver-build, vserver-build.functions:
+
+       used $DEFAULT_VSERVERDIR and $DEFAULT_VSERVERPKGDIR instead of the
+       hardcoded '/vservers' values
+
+2003-10-23 00:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       rewrote it
+       added -build subpackage
+
+2003-10-23 00:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       moved ENSC_INITRDDIR, ENSC_RELEASE, ENSC_ENABLE_DIETLIBC and
+       ENSC_KERNEL_HEADERS checks into own m4/* files
+
+2003-10-23 00:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       renamed sysvdir to initrddir
+       use $(RELEASE_CPPFLAGS) (-DNDEBUG)
+       substitute $(vserverdir) and $(vserverpkgdir)
+       create the $(vserverdir) and $(vserverpkgdir) directories
+
+2003-10-23 00:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/Makefile.am:
+
+       added sample 'mtab' file
+       create the config-dirs
+
+2003-10-23 00:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/redhat/initpost:
+
+       $2 is no longer $_VSERVER but the 'util-vserver-vars' file
+
+2003-10-23 00:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/rh9/apt/sources.list:
+
+       added some mirrors
+
+2003-10-23 00:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_dietlibc.m4, m4/ensc_initrddir.m4, m4/ensc_kerneldir.m4,
+         m4/ensc_release.m4, distrib/misc/mtab:
+
+       initial checkin
+
+2003-10-23 00:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added DEFAULT_VSERVERDIR and DEFAULT_VSERVERPKGDIR
+
+2003-10-23 00:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.apt-rpm:
+
+       call pre/post scriplets with "$UTIL_VSERVER_VARS" as second param
+       instead of "$_VSERVER"
+
+2003-10-23 00:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.functions:
+
+       fixed broken quotes
+
+2003-10-22 20:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver.functions, vserver.start:
+
+       - reorganized CHCONTEXT_INIT_OPTS/CHCONTEXT_DISCONNECT: dropped the
+         separate CHCONTEXT_DISCONNECT variable completetly and put '--flag
+         fakeinit --disconnect' into CHCONTEXT_INIT_OPTS, which is used by
+         'vserver ... start' command only
+
+2003-10-22 20:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/secure-umount.c:
+
+       use real 'umount' program to unmount directories
+
+2003-10-22 20:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/exec-ulimit.c:
+
+       added [mMkK] modifies for limits
+
+2003-10-22 20:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.functions:
+
+       added support for copying some default files (resolv.conf, localtime,
+       krb-conf,...)
+
+2003-10-22 20:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver-build, vserver-setup.functions:
+
+       fixed getopt long-option string
+
+2003-10-22 20:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       implemented findAndCopy
+
+2003-10-21 16:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * NEWS, configure.ac:
+
+       version 0.23.194
+
+2003-10-21 16:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/Makefile.am:
+
+       added scripts to AM_INSTALLCHECK_STD_OPTIONS_EXEMPT
+
+2003-10-21 16:14  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/exec-ulimit.c:
+
+       implemented '--help' and '--version'
+
+2003-10-21 15:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vbuild.cc:
+
+       removed warning about unused parameters
+
+2003-10-21 15:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * tests/Makefile-files:
+
+       renamed to .cc files to .c
+
+2003-10-21 15:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * tests/: chrootsafe.c, chrootsafe.cc[DEAD], escaperoot.c,
+         escaperoot.cc[DEAD], forkbomb.c, forkbomb.cc[DEAD], testipc.c,
+         testipc.cc[DEAD], testlimit.c, testlimit.cc[DEAD], testopenf.c,
+         testopenf.cc[DEAD]:
+
+       renamed to .cc files to .c and made some little changes to make them
+       compilable with C compilers
+
+2003-10-21 15:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       added new m4/*.m4 macros
+       added conditional build of CXX files
+       added support for libtool
+
+2003-10-21 15:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/redhat/initpost:
+
+       initial checkin
+
+2003-10-21 15:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/Makefile.am:
+
+       added Fedora Core 0.95
+       removed Red Hat 9.0.93
+       use common redhat/initpost script
+
+2003-10-21 15:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       - use dietlibc compilation only for library-built, but not e.g. when
+         building object for rpm-fake.so. This is very dark magic...
+
+2003-10-21 15:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/Makefile-files:
+
+       removed vunify.old.sh
+
+2003-10-21 15:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       - conditionalized built of C++ programs
+       - added very dark magic to build everything of rpm-fake.so with '-fPIC'
+         flag (when possible); on ia32 this will not work/is not necessarily
+         but x86_64 seems to have problems with current method
+
+2003-10-21 15:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       added check for C++ compiler
+       added some CXX flags
+       use ENSC_FPIC_SYSCALL
+
+2003-10-21 15:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/checkversion.c:
+
+       fixed stupid thinko (EAGAIN vs. EINVAL)
+
+2003-10-21 15:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/ensc_cxxcompiler.m4, m4/ensc_fpicsyscall.m4, src/vserver.cc,
+         src/vserver.hh:
+
+       initial checkin
+
+2003-10-21 15:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/rpm-fake.c:
+
+       made it compilabe with non-C99 compilers and older kernels
+
+2003-10-21 15:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/secure-mount.c:
+
+       made it compilabe with non-C99 compilers
+
+2003-10-21 15:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vbuild.cc:
+
+       use 'Vserver' class instead of 'string'
+       !!BROKE LOTS OF THINGS!! this version does not work yet
+
+2003-10-21 15:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vunify.cc:
+
+       use 'Vserver' class instead of 'string'
+       use getopt()
+       reindented large parts
+
+2003-10-21 15:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/vutil.cc:
+
+       use 'Vserver' class instead of 'string'
+       fixed format-string error
+
+2003-10-21 15:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: vutil.p, vutil.h:
+
+       use 'Vserver' class instead of 'string'
+
+2003-10-21 15:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/wrappers.h:
+
+       make it compilable with non-C99 compilers
+
+2003-10-21 01:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/configuration.xml:
+
+       documented 'ulimits' directory
+
+2003-10-21 00:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vunify.old.sh[DEAD]:
+
+       as the name ('*old*') is saying already: it is old and obsoleted...
+
+2003-10-21 00:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vserver.start, vserver.stop, vserver.suexec:
+
+       added ulimits support
+
+2003-10-21 00:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added _EXEC_ULIMIT
+
+2003-10-21 00:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/exec-ulimit.c:
+
+       work also, when ulimit-directory does not exist
+
+2003-10-21 00:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/.cvsignore:
+
+       added exec-ulimit
+
+2003-10-21 00:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/exec-ulimit.c:
+
+       initial checkin
+
+2003-10-21 00:29  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       added exec-ulimit.c
+
+2003-10-21 00:29  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/wrappers.h:
+
+       Egetrlimit(),Esetrlimit(): added
+
+2003-10-20 23:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/reducecap.c:
+
+       use capability support from the library as far as possible
+
+2003-10-20 23:29  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: capchroot.c, chcontext.c:
+
+       use capability support from the library instead of including
+       kernel-headers
+
+2003-10-20 23:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/capabilities.c:
+
+       initial checkin
+
+2003-10-20 23:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       added capability support
+
+2003-10-20 23:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       added support for '-DNDEBUG' in the library
+       added capability.c
+
+2003-10-20 23:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       added support for '-DNDEBUG' in the library
+
+2003-10-20 20:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       added PKGSTATEDIR substitution
+
+2003-10-20 20:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build.apt-rpm, scripts/vserver-build.functions,
+         scripts/vserver-build.functions.apt,
+         scripts/vserver-build.functions.rpm,
+         scripts/vserver-setup.functions, doc/cfgdirdoc.dtd,
+         doc/configuration.xml:
+
+       initial checkin
+
+2003-10-20 20:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/Makefile-files:
+
+       - removed vserver-init file
+       - added vserver-build* files
+
+2003-10-20 20:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       - added PKGSTATEDIR, RUNDIR, LIB_VSERVER_SETUP_FUNCTIONS,
+         LIB_VSERVER_BUILD_FUNCTIONS* and _VSERVER variables
+       - added WORKAROUND_APT_DBPATH variable
+
+2003-10-20 20:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-build:
+
+       implemented it...
+
+2003-10-20 20:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver:
+
+       added '--sync' and '--verbose' options
+       sync the 'stop' stage on restart
+       fixed invocation of 'vserver-build'
+
+2003-10-20 20:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vapt-get, vrpm:
+
+       made it more mature by using arrays for the vserver-list
+
+2003-10-20 20:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.functions:
+
+       - moved getFileValue/getFileArray from 'vserver.functions' into 'functions'
+
+2003-10-20 20:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       - moved getFileValue/getFileArray from 'vserver.functions' into 'functions'
+       - implemented '/<path>' style vserver specification
+       - made getAllVservers more mature by using arrays
 
-2003-12-26 01:16  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-20 19:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * lib/: getversion-internal.hc, syscall-compat.hc,
-         syscall_kill-v11.hc, syscall_rlimit-v11.hc, vserver-internal.h:
-         s!sys_vserver!vserver!
+       * scripts/vserver-init[DEAD]:
+
+       moved 'vserver-init' functionality into the more general vserver-build*
+       files
+
+2003-10-18 04:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       gnit'ified
+
+2003-10-18 04:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/.cvsignore:
+
+       added pipe-sync
+
+2003-10-18 04:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       gnit'ified
+       added pipe-sync
+
+2003-10-18 04:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/chroot-cat.c:
+
+       minor cosmetical changes
+
+2003-10-18 04:29  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/chroot-rm.c:
+
+       use "wrapper.h"
+
+2003-10-18 04:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/wrappers.h:
+
+       Eunlink(): added
+
+2003-10-18 04:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added $_VSERVER_BUILD
+
+2003-10-18 04:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver:
+
+       added help/version
+       added 'build' option
+       made 'running' silently
+
+2003-10-18 04:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/pipe-sync.c, scripts/vserver-build:
+
+       initial checkin
+
+2003-10-18 04:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       - gnit'ified it
 
-2003-12-23 17:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-18 04:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * configure.ac: fixed '--enable-apis' by
-         s!supported_apis!enable_apis!
+       * scripts/Makefile-files:
 
-2003-12-23 17:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       - gnit'ified it
+       - added vserver-build
 
-       * scripts/vserver: mount /dev/pts with correct options
+2003-10-18 04:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-12-23 17:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * sysv/Makefile-files:
 
-       * lib/syscall-legacy.hc: use syscall(...) on __hppa__ too
+       gnit'ified it
 
-2003-12-03 01:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-18 03:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * src/.cvsignore: added vkill
+       * lib/checkversion.c:
 
-2003-12-03 01:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       restored compatibility for case when old syscall interface uses the
+       new syscall-number (merged from SYSCALL_SWITCH branch)
 
-       * Makefile.am: added 'legacydir'
+2003-10-17 23:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-12-03 01:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * configure.ac:
 
-       * lib/getversion.c: vc_get_version(): fixed typo to avoid recursive
-         call
+       add '#include "compat.h'" at bottom of config.h
+       version 0.23.191
 
-2003-12-03 01:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-17 23:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * src/Makefile-files: added vkill
+       * Makefile.am:
 
-2003-12-03 01:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       cleaned up pathsubst rule
 
-       * src/vkill.c: initial checkin
+2003-10-17 23:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-12-03 01:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * scripts/util-vserver-vars.pathsubst:
 
-       * scripts/Makefile-files: install vkill and vunify.sh into
-         LEGACYDIR
+       added _CHROOT_CAT
 
-2003-12-03 01:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-17 23:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * scripts/: vunify.old.sh[DEAD], vunify.sh: renamved vunify.old.sh
-         to vunify.sh
+       * scripts/vserver-init:
 
-2003-11-29 00:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       create link to reverse ctx->vserver mapping
 
-       * scripts/vps.subst: fixed behavior with multiple args (from Debian
-         patch)
+2003-10-17 23:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-11-29 00:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * scripts/vserver.functions:
 
-       * lib/: Makefile-files, syscall_kill-v11.hc, syscall_kill.c: added
-         syscall_kill*
+       - removed '#! /bin/bash' header
+       - added separate CHCONTEXT_DISCONNECT option
+       - use default runlevels only when sysv init-style is used
+       - create/empty mtab file before mounting the vserver
 
-2003-11-29 00:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-17 23:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * lib/virtual.h: updated
+       * scripts/vserver.start:
 
-2003-11-29 00:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       - removed '#! /bin/bash' header
+       - added separate CHCONTEXT_DISCONNECT option
 
-       * lib/syscall.c: removed chrootsafe() code
+2003-10-17 23:03  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-11-29 00:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * scripts/vserver.stop:
 
-       * lib/syscall-legacy.hc: removed old, unused code removed
-         chrootsafe() code made it compilable with '-fPIC'
+       - removed '#! /bin/bash' header
+       - disable interfaces when vserver is not running
 
-2003-11-29 00:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-17 23:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * lib/: syscall-compat.hc, getversion-internal.hc:
-         s!sys_virtual_context!sys_vserver!
+       * scripts/vserver.suexec:
 
-2003-11-29 00:14  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       removed '#! /bin/bash' header
 
-       * lib/syscall_rlimit-v11.hc: s!sys_virtual_context!sys_vserver!
+2003-10-17 23:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-11-29 00:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * src/.cvsignore:
 
-       * lib/vserver-internal.h: s!sys_virtual_context!sys_vserver! made
-         it compilable with '-fPIC'
+       added chroot-cat
 
-2003-11-29 00:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-17 23:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * lib/vserver.h: removed vc_chrootsafe(); such an implementation
-         seems to be impossible...  updated vc_new_s_context documentation
-         added vc_ctx_kill() prototype + doc
+       * sysv/vservers.subst:
 
-2003-11-29 00:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       stop vservers only, when they do not have the ONSTOP flag
 
-       * tests/: Makefile-files, chrootsafe.cc[DEAD]: removed
-         chrootsafe.cc; such an implementation seems to be impossible...
+2003-10-17 23:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-11-29 00:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * sysv/Makefile-files:
 
-       * src/capchroot.c: use chroot() instead of vc_chrootsafe()
+       removed some noise from the substrule
 
-2003-11-22 03:14  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-17 22:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * NEWS, README, configure.ac: version 0.26
+       * src/Makefile-files:
 
-2003-11-22 03:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       added chroot-cat
 
-       * .cvsignore: updated
+2003-10-17 22:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-11-21 17:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * src/chroot-cat.c:
 
-       * src/ifspec.c: fixed uninitialized variables when ioctl() on the
-         given interfaces fails (thanks to Herbert Poetzl)
+       initial checkin
 
-2003-11-21 04:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-17 22:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * configure.ac: version 0.25.90
+       * src/wrappers.h:
 
-2003-11-21 04:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       Ereadlink(), Esymlink(): added
 
-       * .cvsignore: updated
+2003-10-17 22:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-11-20 01:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * src/wrappers-vserver.h:
 
-       * Makefile.am: - use internal lib/virtual.h on default (controlled
-         by   '--disable-internal-headers' option)
+       - added Evc_X_getctx() wrapper
 
-2003-11-20 01:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-17 22:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * configure.ac: - added '--disable-internal-headers' option
+       * src/secure-mount.c:
 
-2003-11-19 01:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       - removed '#include <compat.h>'; it's now in global <config.h>
+       - fixed problems with dietlibc's strtok_r() implementation
+       - do not set '-o <...>' mount-flag when 'defaults' is the only flag
 
-       * lib/syscall_rlimit-v11.hc: vc_get_rlimit_mask_v11: fill
-         calculated values into *lim
+2003-10-17 22:29  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-11-18 23:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * src/save_ctxinfo.c:
 
-       * NEWS, configure.ac: version 0.25
+       - removed '#include <compat.h>'; it's now in global <config.h>
+       - use "wrappers.h" functions
+       - implemented reverse-symlink file
 
-2003-11-18 23:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-17 22:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * util-vserver.spec.in: added 'BuildRequires: e2fsprogs-devel'
+       * lib/: getctx.c, getinitpid.c, getprocentry-legacy.c:
 
-2003-11-18 23:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       - moved pid==0 handling into getprocentry-legacy.c and access /proc/self
+         instead of /proc/<self-pid> there; this solves problems when 'fakeinit'
+         flag is used
+       - removed '#include <compat.h>'; it's now in global <config.h>
 
-       * configure.ac: added checks for <ext2fs/ext2fs.h> and
-         <linux/ext2_fs.h>
+2003-10-17 02:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-11-18 23:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * scripts/Makefile-files:
 
-       * Makefile.am: remove '__user' which was added in 2.6 headers
+       added vserver-legacy and vserver.suexec
 
-2003-11-18 23:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-17 02:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * src/: vutil.cc, showattr.c, ext2fs.h, Makefile-files: use/added
-         "ext2fs.h" header to bypass problems of 2.6 kernel headers (no
-         __u64 with '--std=c99')
+       * src/ctx-kill.c:
 
-2003-11-18 23:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       kill init-pid
+       more sanity checks
 
-       * sysv/vservers.subst: small cosmetical change
+2003-10-17 02:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-11-18 21:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * scripts/vserver.stop:
 
-       * lib/vserver-internal.h: - use VC_RANDCTX instead of VC_NOCTX -
-         use the conditionalized CTX_USER2KERNEL/CTX_KERNEL2USER
-         transformations
+       added support for kill-signal sequence
 
-2003-11-18 21:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-17 02:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * lib/vserver.h: - removed C99 comments from copyright header; this
-         might be used by   plain C89 programs also...  - added VC_RANDCTX
-         constant - documented VC_* constants
+       * scripts/vserver.functions:
 
-2003-11-18 21:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       added getEnterShell() function
+       added support for kill-signal sequence
 
-       * scripts/vserver: added basic gentoo support (thanks to Allen D.
-         Parker II)
+2003-10-17 02:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-11-18 00:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * scripts/vserver:
 
-       * src/: .cvsignore, Makefile-files, ctxlimit.c[DEAD], vlimit.c:
-         renamed ctxlimit.* to vlimit.*
+       - added legacy support
+       - added support for suexec,restart,condrestart,exec,chkconfig,enter,running
+         and status
 
-2003-11-18 00:49  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-17 02:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * THANKS: added Sam Vilain
+       * scripts/util-vserver-vars.pathsubst:
 
-2003-11-18 00:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       added _CTX_KILL, _FILETIME and _VSERVER_LEGACY
 
-       * configure.ac: version 0.24.90
+2003-10-17 02:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-11-18 00:13  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * scripts/: vserver-legacy, vserver.suexec:
 
-       * compat.h: made ctx_t and 'uint32_t' to fix kernel<->user
-         conflicts (-1 in user becomes 0x0000ffff in kernel which would
-         expect 0xffffffff)
+       initial checkin
 
-2003-11-18 00:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-16 17:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * lib/vserver.h: added VC_SAMECTX identifier
+       * tests/.cvsignore:
 
-2003-11-18 00:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       added getinitpid
 
-       * lib/vserver-internal.h: added CTX_USER2KERNEL() and
-         CTX_KERNEL2USER() macros to transform ctx from user into kernel
-         type and vice versa
+2003-10-16 17:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-11-18 00:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * lib/Makefile-files:
 
-       * lib/: syscall-compat.hc, syscall_rlimit-v11.hc: use
-         CTX_USER2KERNEL() macro to transform ctx from user into kernel
-         type
+       added int2str.c
 
-2003-11-17 23:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-16 17:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * sysv/: rebootmgr.subst, vservers.subst: check existence of
-         cfg-file before starting the server
+       * lib/internal.h:
 
-2003-11-17 22:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       added utilvserver_int2str()
 
-       * scripts/vserver: set correct mode/permissions of /var/run/utmp
+2003-10-16 17:08  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-11-08 00:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * lib/int2str.c, tests/getinitpid.c:
 
-       * lib/: Makefile-files, syscall_rlimit-v11.hc, syscall_rlimit.c:
-         added rlimit syscalls
+       initial checkin
 
-2003-11-07 23:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-16 17:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * src/: .cvsignore, Makefile-files, ctxlimit.c: added ctxlimit
+       * tests/getctx.c:
 
-2003-11-07 23:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       removed all traces of <stdio.h>
 
-       * src/setctxlimit.c[DEAD]: removed; obsoleted by ctxlimit tool
+2003-10-16 17:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-11-07 23:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * tests/Makefile-files:
 
-       * lib/vserver.h: added limit stuff
+       generalized building with dietlibc
+       added getinitpid
 
-2003-11-07 22:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-16 16:49  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * lib/vserver-internal.h, configure.ac: added V11 API
+       * Makefile.am, src/Makefile-files:
 
-2003-11-07 22:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       generalized building with dietlibc
 
-       * lib/virtual.h: updated; has now the limit-stuff
+2003-10-16 16:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-11-07 20:16  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * lib/Makefile-files:
 
-       * man/: vkill.8, setctxlimit.8, vdu.8: initial checkin (provided by
-         Sam Vilain)
+       added getinitpid* files
+       added getprocentry* files
+       added utils-legacy.h
 
-2003-11-04 01:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-16 16:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * NEWS, configure.ac: version 0.24
+       * lib/: getinitpid-compat.hc, getinitpid-legacy.hc, getinitpid.c,
+         getprocentry-legacy.c, utils-legacy.h:
 
-2003-11-04 00:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       initial checkin
 
-       * .cvsignore: added linuxcaps.h
+2003-10-16 16:02  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-11-04 00:13  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * src/save_ctxinfo.c, tests/getctx.c:
 
-       * Makefile.am: * enumerated all used m4-files * use/set CVS2CL*
-         flags * edit <linux/linuxcaps.h> and remove statements (#include,
-         __u32)   which may cause errors
+       s!vc_X_getcctx()!vc_X_getctx(0)!
 
-2003-11-04 00:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-16 16:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * configure.ac: use ENSC_CHANGELOG
+       * lib/vserver.h:
 
-2003-11-04 00:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       added vc_X_getinitpid() pseudo-syscall
+       removed vc_X_getcctx() since it is obsoleted by vc_X_getctx(0) now
 
-       * m4/: changelog.am, ensc_changelog.m4: merged from HEAD
+2003-10-16 16:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-11-04 00:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * lib/syscall-legacy.hc:
 
-       * m4/validate.am: updated from vserver-djinni
+       removed all traces of <stdio.h> usage
 
-2003-11-04 00:10  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-16 15:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * src/vutil.cc: fixed format-string error
+       * lib/getctx.c:
 
-2003-11-03 21:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       cleanups
+       recognize pid==0 as current pid
 
-       * util-vserver.spec.in: use '--enable-linuxconf' conflict with
-         future vserver-* versions
+2003-10-16 15:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-11-03 21:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * lib/getctx-legacy.hc:
 
-       * NEWS, configure.ac: conditionalized built of linuxconf-module
-         version 0.23.97
+       use new utilvserver_getProcEntry() function
+       recall vc_X_getctx_legacy() automatically when buffersize was too small
 
-2003-11-03 21:50  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-16 04:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * lib/vserver-internal.h: ignore lower 8 bits of API-version
+       * Makefile.am:
 
-2003-11-03 21:49  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       added substitution for UMOUNT
 
-       * Makefile.am, linuxconf/Makefile-files: conditionalized built of
-         linuxconf-module
+2003-10-16 04:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-10-30 16:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * src/.cvsignore:
 
-       * NEWS: version 0.23.96
+       updated
 
-2003-10-30 16:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-16 04:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * configure.ac: set '-Wno-unused-parameter' use ENSC_UV_VROOTDIR
+       * src/secure-mount.c:
 
-2003-10-30 16:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       small signed/unsigned fixes for pedantic warning setups
+       give '--help' message out on fd 1 instead of 2
 
-       * m4/ensc_uv_vrootdir.m4: backported from HEAD
+2003-10-16 04:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-10-30 16:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * src/save_ctxinfo.c:
 
-       * util-vserver.spec.in: create and own /vservers
+       small signed/unsigned fixes for pedantic warning setups
 
-2003-10-30 16:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-16 04:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * distrib/: install-mdk8.2, install-post.sh, install-pre.sh,
-         install-rh7.2, install-rh7.3, install-rh8.0, install-rh9.0: use
-         customizable value for vserver-rootdir instead of hardcoded
-         '/vservers' import the global configuration file
-         (util-vserver-vars)
+       * src/new-namespace.c:
 
-2003-10-30 16:16  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       use "wrappers.h"
+       use STACK_START macro
 
-       * scripts/Makefile-files, scripts/distrib-info,
-         scripts/util-vserver-vars.subst, scripts/vrpm, scripts/vserver,
-         scripts/vserver-copy, scripts/vservers.grabinfo.sh,
-         scripts/vunify.old.sh, src/Makefile-files, src/rebootmgr.c,
-         src/vunify.cc, sysv/Makefile-files, sysv/rebootmgr.subst: use
-         customizable value for vserver-rootdir instead of hardcoded
-         '/vservers'
+2003-10-16 04:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-10-30 16:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * src/listdevip.c:
 
-       * tests/: chrootsafe.cc, escaperoot.cc: do not declare unused
-         parameters anymore
+       small fixes for pedantic warning-setups
 
-2003-10-30 15:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-16 04:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * util-vserver.spec.in: provide/conflict with vserver-admin
+       * src/: ctx-kill.c, compat-pivot_root.h, secure-umount.c,
+         stack-start.h, wrappers-vserver.h, wrappers.h:
 
-2003-10-30 15:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       initial checkin
 
-       * Makefile.am, m4/ensc_kerneldir.m4: backported ENSC_KERNEL_HEADERS
-         macro
+2003-10-16 04:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-10-30 15:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * src/Makefile-files:
 
-       * configure.ac: backported CFLAGS/CXXFLAGS settings backported
-         ENSC_KERNEL_HEADERS macro
+       added secure-umount + ctx-kill programs
+       added lots of headers
+       generalized dietlibc handling
 
-2003-10-30 02:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-16 04:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * NEWS, configure.ac: version 0.23.95
+       * scripts/: vserver, vserver.functions, vserver.start,
+         vserver.stop, functions:
 
-2003-10-30 02:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       basic 'vserver ... start|stop' function should work now...
 
-       * .cvsignore: added util-vserver.spec
+2003-10-16 04:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-10-30 02:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * scripts/util-vserver-vars.pathsubst:
 
-       * util-vserver.spec.in, vserver.spec.in[DEAD], Makefile.am,
-         configure.ac: renamed vserver.spec.in to util-vserver.spec.in
+       added _SECURE_UMOUNT and _UMOUNT
 
-2003-10-30 02:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-16 04:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * scripts/vserver: - reenabled the copy-all mode; can be disabled
-         by setting the   $UTIL_VSERVER_AVOID_COPY environment variable -
-         use '-HS' ulimit switch for newly created vservers
+       * scripts/Makefile-files:
 
-2003-10-30 02:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       added vservers.{functions,stop}
 
-       * newvserver.defaults[DEAD], linuxconf/.cvsignore,
-         linuxconf/Makefile-files, linuxconf/newvserver.8,
-         linuxconf/newvserver.defaults, linuxconf/newvserver.subst,
-         man/newvserver.8[DEAD], man/Makefile-files, Makefile.am,
-         vserver.spec.in: revived linuxconf-files, but moved them into an
-         own directory
+2003-10-16 04:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-10-30 01:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * lib/vserver.h:
 
-       * scripts/.cvsignore: added auto-generated perl-scripts
+       added lots of S_CTX_INFO_* macros
 
-2003-10-30 01:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-16 04:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * scripts/Makefile-files, Makefile.am: reorganized make-file to
-         cope with substituted perl-scripts
+       * lib/Makefile-files:
 
-2003-10-30 01:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       added missing 'lib/internal.h'
 
-       * scripts/: vkill[DEAD], vkill.subst, vps[DEAD], vps.subst: made
-         '/usr/sbin' path customizable; perl-scripts will be substituted
-         now
+2003-10-16 04:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-10-30 01:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * pathconfig.h.pathsubst:
 
-       * src/Makefile-files: define SBINDIR on rebootmgr.c compilation
-         install 'setattr' program
+       added UMOUNT_PROG macro
 
-2003-10-30 01:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-16 04:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * src/: chcontext.c, reducecap.c: remove CAP_OPENDEV added
-         CAP_QUOTACTL
+       * configure.ac:
 
-2003-10-30 01:33  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       added check for UMOUNT
+       added pedantic warn-flags
+       added template for HAVE_GROWING_STACK check
 
-       * scripts/vpstree, scripts/vrpm, scripts/vserver-copy,
-         scripts/vsysvwrapper, scripts/vtop, src/rebootmgr.c: use
-         customizable paths for '/usr/sbin'
+2003-10-16 04:29  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-10-30 01:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * compat.h:
 
-       * scripts/rootshell: use customizable paths for '/usr/sbin' do not
-         log commands into /tmp/log anymore
+       do '#undef inline' for '--std=c99' dietlibc compilations
 
-2003-10-30 01:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-14 20:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * scripts/distrib-info: made it 'bash' use customizable paths for
-         '/usr/sbin'
+       * src/rpm-fake.c:
 
-2003-10-30 01:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       use vc_init_internal_legacy() to initialize legacy-lib without parsing
+       /proc
 
-       * man/reducecap.8: removed CAP_OPENDEV; added CAP_QUOTACTL
+2003-10-14 20:48  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-10-21 19:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * lib/syscall-legacy.hc:
 
-       * configure.ac: version 0.23.93
+       added inofficial vc_init_internal_legacy() function
 
-2003-10-21 18:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-14 20:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * lib/checkversion.c: fixed stupid thinko (EAGAIN vs. EINVAL)
+       * lib/: getctx-legacy.hc, syscall.c:
 
-2003-10-18 03:48  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       include "internal.h"
 
-       * lib/: getctx-legacy.hc, vserver.h: backported vc_X_getcctx()
-         changes from HEAD
+2003-10-14 20:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-10-18 03:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * lib/: internal.h, vserver-internal.h:
 
-       * configure.ac: version 0.23.92
+       moved declarations of general functions from vserver-internal.h into
+       internal.h
 
-2003-10-18 03:34  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-10-14 18:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * lib/checkversion.c: restored compatibility for case when old
-         syscall interface uses the new syscall-number
+       * lib/: getversion-internal.hc, int2str.c[DEAD], internal.h[DEAD],
+         syscall.c:
+
+       Merged with SYSCALL_SWITCH branch (sswitch_merge tag)
 
 2003-10-14 18:09  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * lib/vserver.h: fixed vc_X_getcctx()
+       * lib/vserver.h:
+
+       fixed vc_X_getcctx()
+
+2003-10-14 17:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files, src/rpm-fake.c, src/save_ctxinfo.c,
+         tests/getctx.c:
+
+       Merged with SYSCALL_SWITCH branch (sswitch_merge tag)
+
+2003-10-14 17:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * .cvsignore, Makefile.am, NEWS, compat.h, configure.ac,
+         util-vserver.spec.in, lib/Makefile-files, lib/checkversion.c,
+         lib/getctx-compat.hc, lib/getctx-legacy.hc, lib/getctx.c,
+         lib/getversion-internal.hc, lib/getversion.c,
+         lib/safechroot-internal.hc, lib/syscall-compat.hc,
+         lib/syscall-legacy.hc, lib/syscall.c, lib/uint2str.c,
+         lib/virtual.h, lib/vserver-internal.h, lib/vserver.h,
+         scripts/.cvsignore, src/Makefile-files, src/capchroot.c,
+         src/chbind.c, src/chcontext.c, src/rebootmgr.c, src/reducecap.c,
+         src/vserver-stat.c, sysv/Makefile-files, tests/chrootsafe.cc:
+
+       Merged with SYSCALL_SWITCH branch (sswitch_merge tag)
+
+2003-10-13 22:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       added rcs2log support
+       added checks for MS_MOVE and ctx_t
+       define UTMP_GID as 22 for now
+
+2003-10-13 22:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       added $(lib_XHDRS) and compat.h
+       create /var/run/vservers on 'make install'
+       use m4/pkgconfig.am
+
+2003-10-13 21:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/fakerunlevel.c:
+
+       made it secure (go into chroot before accessing file)
+       dietlibc'ized
+       other cleanups
+
+2003-10-13 21:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       - added chroot-rm
+       - compile fakerunlevel with dietlibc
+
+2003-10-13 21:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.start:
+
+       made it working...
+
+2003-10-13 21:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-init:
+
+       - removed unused variables
+       - added lockfile-creation
+       - create symlink from /var/lib/rpm to $rpmdb_path (until all apt-versions
+         are having the %_dbpath patch)
+
+2003-10-13 21:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added variables for _CHROOT_RM and _FAKE_RUNLEVEL
+
+2003-10-13 21:51  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       use new secure-mount syntax
+
+2003-10-13 21:50  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/Makefile-files:
+
+       added statements to install vserver.start
+
+2003-10-13 21:50  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/pkgconfig.am:
+
+       initial checkin
+
+2003-10-13 21:50  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/changelog.am:
+
+       conditionalize RCS2LOG variant also
+
+2003-10-13 21:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       removed ctx_t typedef; this must be now done by each package
+       inidividually. For util-vserver, the declaration is in compat.h
+       and detection in configure.ac
+
+2003-10-13 21:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/.cvsignore, src/.cvsignore:
+
+       updated
+
+2003-10-13 21:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/util-vserver.pc.subst, src/chroot-rm.c:
+
+       initial checkin
+
+2003-10-13 21:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * compat.h, src/compat.h[DEAD]:
+
+       moved compat.h from src/ to toplevel-dir
+
+2003-10-13 21:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/getctx.c, lib/syscall.c, src/capchroot.c, src/chbind.c,
+         src/chcontext.c, src/reducecap.c, src/save_ctxinfo.c,
+         src/secure-mount.c, src/setctxlimit.c, tests/chrootsafe.cc,
+         tests/getctx.c:
+
+       include "compat.h"
+
+2003-10-13 21:39  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       added PGKCONFIG_FILES
+
+2003-10-10 01:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/compat.h:
+
+       initial checkin
+
+2003-10-10 01:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       use absolute default-path for /bin/mount since it is required by
+       execv() in secure-mount
+
+2003-10-10 01:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * pathconfig.h.pathsubst:
+
+       added MOUNT_PROG
+
+2003-10-10 01:06  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * tests/getctx.c:
+
+       added '#include <stdlib.h>'
+
+2003-10-10 01:05  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/util.h:
+
+       - added *_cast macros
+       - mark writeStr() as __attribute__((__unused__)) to prevent compiler
+         warnings
+       - fixed off-by-one error in WRITE_MSG
+
+2003-10-10 01:04  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/secure-mount.c:
+
+       rewrote it completely; it emulates now nearly the usual mount(8)
+       functionality but provides the enhanced '--secure', '--chdir ...',
+       ... options which are needed for vservers
+
+2003-10-09 03:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/cfg.txt:
+
+       added documentation about <interfaces> and basic vserver-variables
+
+2003-10-09 03:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver.start:
+
+       initial checkin
+
+2003-10-09 03:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver:
+
+       complete rewrite
+
+2003-10-09 03:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       added some standard-tools to the %.pathsubst rules
+
+2003-10-09 03:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       added checks for some standard-tools
+
+2003-10-09 03:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * tests/Makefile-files:
+
+       added getctx
+
+2003-10-09 03:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/Makefile-files:
+
+       added save_ctxinfo and mask2prefix
+
+2003-10-09 03:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * tests/.cvsignore:
+
+       added getctx
+
+2003-10-09 03:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/.cvsignore:
+
+       added mask2prefix and save_ctxinfo
+
+2003-10-09 03:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added CVS tags
+
+2003-10-09 03:41  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/mask2prefix.c, src/save_ctxinfo.c, tests/getctx.c:
+
+       initial checkin
+
+2003-10-09 03:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added _CAPCHROOT, _CHBIND, _CHCONTEXT, _MASK2PREFIX, _SAVE_S_CONTEXT,
+       _SAVE_CTXINFO, _VPS and standard-tool macros
+
+2003-10-09 03:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/functions:
+
+       added isVserverRunning function
+
+2003-10-09 03:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/vserver.h:
+
+       added CTX_NOCTX macro
+       added getctx()/getcctx() functions
+       added ctx_t datatype
+
+2003-10-09 03:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/Makefile-files:
+
+       added getctx and int2str + helper headers
+
+2003-10-09 03:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * lib/: getctx.c, int2str.c, internal.h:
+
+       initial checkin
+
+2003-10-07 00:38  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/Makefile.am:
+
+       added install-rules for the distributions
+
+2003-10-07 00:37  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/rh9/apt/: rpmpriorities, sources.list:
+
+       initial checkin
+
+2003-10-06 21:49  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in:
+
+       - fixed Source0 URL
+       - added -sysv and -devel subpackages
+       - moved /etc/init.d to %_initrddir
+
+2003-10-06 21:48  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       - added more pathsubst variables
+       - added $(scripts_DTA)
+
+2003-10-06 21:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * distrib/defaults/rpm/macros:
+
+       added notes regarding %_install_langs and added some other "main"-languages
+
+2003-10-06 21:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * doc/cfg.txt:
+
+       added apps/vunify documentation
+
+2003-10-06 21:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-init:
+
+       - added metadata to track if root-/pkgcfgbase-links shall be made
+         relative
+       - added gpg-key import
+       - create dev/pts directory
+
+2003-10-06 21:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vapt-get:
+
+       improved '--help'/'--version' messages
+
+2003-10-06 21:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/util-vserver-vars.pathsubst:
+
+       added PACKAGE_* variables
+       made DISTRIBDIR "$PKGLIBDIR/distributions" (instead of "$PKGLIBDIR")
+       added _VRPM
+       reordered the _* variables alphabetically
+
+2003-10-06 21:40  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/Makefile-files:
+
+       installed missing files (functions, vapt-get*, vrpm*)
+
+2003-10-02 17:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/secure-mount.c:
+
+       rewrote it completely
+
+2003-10-02 17:35  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/rpm-fake.c:
+
+       - set default-signal handler for SIGCHLD
+       - minor cosmetical cleanups
+       - use wait4(2) instead of waitpid(2)
+
+2003-10-02 17:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vserver-init:
+
+       - renamed 'makeInode' to 'makeDevEntry' which is more flexible
+       - added workaround for
+         https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=106057
+       - content of *all* rpm and apt template directories will be copied now
+       - use '-y' flag on 'apt-get' invocation
+
+2003-10-02 17:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vrpm-preload:
+
+       minor cosmetical cleanups
+       added copyright
+
+2003-10-02 17:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/vapt-get-worker:
+
+       minor cosmetical cleanups
+       removed debug code
+
+2003-10-02 17:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: vapt-get, vrpm, vrpm-worker:
+
+       minor cosmetical cleanups
+
+2003-10-02 17:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/: functions, util-vserver-vars.pathsubst:
+
+       added workaround for https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=106057
+
+2003-10-01 12:48  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * .cvsignore:
+
+       updated to reflect changes in CVSROOT/cvsignores
+
+2003-10-01 12:44  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * man/Makefile-files:
+
+       removed last traces of newvserver
+
+2003-10-01 12:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * m4/changelog.am, configure.ac:
+
+       added cvs2cl support
+
+2003-10-01 12:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * scripts/Makefile-files:
+
+       - changed pathsubst rules so that files will not be updated on every
+         'make' anymore
+
+2003-10-01 12:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       - added cvs2cl support
+       - changed pathsubst rules so that files will not be updated on every
+         'make' anymore
+
+2003-10-01 02:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/rpm-fake.c:
+
+       explicitly cast result of dlsym() to prevent compiler warnings
+
+2003-10-01 02:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/new-namespace.c:
+
+       small fix in error-message
+
+2003-10-01 02:47  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/rebootmgr.c:
+
+       fixed small size_t vs. socklen_t type-clash
+
+2003-10-01 02:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am, configure.ac, .cvsignore:
+
+       renamed vserver.spec.in to util-vserver.spec.in
+
+2003-10-01 02:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * newvserver.defaults[DEAD], man/newvserver.8[DEAD]:
+
+       removed since linuxconf support was dropped
+
+2003-10-01 01:52  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * util-vserver.spec.in, vserver.spec.in[DEAD]:
+
+       renamed vserver.spec.in to util-vserver.spec.in and updated it
+
+2003-09-30 22:46  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * src/: new-namespace.c, secure-mount.c:
+
+       modified showVersion() to show current version instead of an hardcoded
+       value
+
+2003-09-30 22:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * .cvsignore:
+
+       updated
+
+2003-09-30 22:27  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * Makefile.am:
+
+       added general rule for %.pathsubst files
+       updated file-lists
+
+2003-09-30 22:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * configure.ac:
+
+       added distrib/Makefile
+
+2003-09-30 22:26  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+       * pathconfig.h.pathsubst:
 
-2003-10-14 17:22  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       initial checkin
 
-       * lib/vserver.h: added some documentation added vc_X_getctx()
-         (pseudo-)syscall
+2003-09-30 22:24  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-10-14 17:21  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * scripts/Makefile-files:
 
-       * lib/vserver-internal.h: added macros from syscall.c added an
-         'extern "C" {...}' block moved safechroot code into own file
+       - renamed util-vserver-vars.subst to util-vserver-vars.pathsubst; this
+         makes it easier to use general makefile-rules
+       - removed the old rules for util-vserver-vars
 
-2003-10-14 17:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-09-30 22:23  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * lib/syscall.c: moved macros into vserver-internal moved version
-         code into own files
+       * scripts/: util-vserver-vars.pathsubst,
+         util-vserver-vars.subst[DEAD]:
 
-2003-10-14 17:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       renamed util-vserver-vars.subst to util-vserver-vars.pathsubst; this
+       makes it easier to use general makefile-rules
 
-       * lib/: syscall-compat.hc, syscall-legacy.hc: include
-         "safechroot-internal.hc"
+2003-09-30 22:16  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-10-14 17:19  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * src/: capchroot.c, chbind.c, chcontext.c, fakerunlevel.c,
+         filetime.c, ifspec.c, rebootmgr.c, reducecap.c, setctxlimit.c,
+         showperm.c, vdu.c, vreboot.c, vserver-stat.c:
 
-       * lib/: checkversion.c, getctx-compat.hc, getctx-legacy.hc,
-         getctx.c, getversion-internal.hc, getversion.c,
-         safechroot-internal.hc, uint2str.c: initial checkin
+       include <config.h>
 
-2003-10-14 17:18  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-09-30 22:13  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * lib/Makefile-files: added lots of new files
+       * src/: vbuild.cc, vcheck.cc, vfiles.cc, vunify.cc, vutil.cc:
 
-2003-10-14 15:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       - renamed 'PACKAGE' class to 'Package' to avoid naming-clashes with
+         the standard autoconf macro
+       - include <config.h>
 
-       * configure.ac: added check for existing sys_virtual_context()
-         function renamed '--enable-supported-api' switch to
-         '--enable-apis'
+2003-09-30 22:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-10-14 15:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * src/: vutil.h, vutil.p:
 
-       * lib/vserver-internal.h: added check for existing
-         sys_virtual_context() function
+       renamed 'PACKAGE' class to 'Package' to avoid naming-clashes with the
+       standard autoconf macro
 
-2003-10-14 15:43  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-09-30 21:25  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * lib/syscall.c: added 'vc_get_version(int)' added lots of
-         macro-magic to generalize the syscall-wrappers
+       * src/rpm-fake.c:
 
-2003-10-14 15:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       - removed debug-output
+       - do not fail on umount() errors; CLONE_NEWNS has unexpected/strange
+         behavior in combination with chroot() so that mountpoints within
+         chroots *can* disappear automatically
 
-       * lib/vserver.h: added 'vc_get_version(int)'
+2003-09-30 21:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-10-14 04:55  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * Makefile.am:
 
-       * configure.ac: version 0.23.91
+       use recursive make for distrib: added it to SUBDIRS and remove old
+       $(distrib_*) variables
 
-2003-10-14 04:54  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-09-30 20:17  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * vserver.spec.in: merged with VERSION_0_23 branch
+       * distrib/.cvsignore:
 
-2003-10-14 03:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       initial checkin
 
-       * lib/syscall-compat.hc: made it compilable with non-C99 compilers
+2003-09-30 20:11  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-10-14 03:31  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * distrib/: Makefile-files[DEAD], Makefile.am,
+         install-mdk8.2[DEAD], install-post.sh[DEAD],
+         install-pre.sh[DEAD], install-rh7.2[DEAD], install-rh7.3[DEAD],
+         install-rh8.0[DEAD], install-rh9.0[DEAD], mdk8.2-minimum[DEAD],
+         rh7.3-minimum[DEAD], rh8.0-minimum[DEAD], rh9.0-minimum[DEAD],
+         sample.conf[DEAD], sample.sh[DEAD], defaults/devs,
+         defaults/rpm/macros, rh9/pkgs/01, rh9/pkgs/02:
 
-       * sysv/Makefile-files: fixed typo in sed invocation
+       Replaced the install-* and *-minimum files with configuration files
+       for the new vserver-init tool in the scripts directory. To ease the
+       'install:'-make target, it is necessarily to use recursive make for
+       this directory.
 
-2003-10-14 03:15  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-09-30 18:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * lib/virtual-inc.h[DEAD]: removed since solved by more general
-         'linuxvirtual.h'
+       * configure.ac:
 
-2003-10-14 03:14  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       added dietlibc support
+       version 0.23.89.1
 
-       * lib/syscall.c: include "linuxvirtual.h" instead of "linux-inc.h"
+2003-09-30 18:00  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-10-14 03:13  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * .cvsignore:
 
-       * lib/syscall-legacy.hc: added missing chroot() call
+       added Makefile
 
-2003-10-14 03:13  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-09-30 17:59  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * lib/Makefile-files: removed virtual-inc.h
+       * scripts/.cvsignore, scripts/functions, scripts/vapt-get,
+         scripts/vapt-get-worker, scripts/vrpm-preload,
+         scripts/vrpm-worker, scripts/vserver-init, src/.cvsignore,
+         src/new-namespace.c, src/rpm-fake.c, src/secure-mount.c,
+         src/util.h, lib/.cvsignore, sysv/.cvsignore, tests/.cvsignore:
 
-2003-10-14 03:12  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       initial checkin
 
-       * Makefile.am: generalized CLEANFILES variable added
-         'linuxvirtual.h' to BUILT_SOURCES
+2003-09-30 17:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-10-14 02:45  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * Makefile.am:
 
-       * tests/chrootsafe.cc: use new API
+       updated to new -devel branch
+       added dietlibc support
 
-2003-10-14 02:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-09-30 17:58  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * src/: capchroot.c, chbind.c, chcontext.c, rebootmgr.c,
-         reducecap.c, vserver-stat.c: use new API
+       * src/Makefile-files:
 
-2003-10-14 02:36  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       added secure-mount, new-namespace and rpm-fake.so rules
 
-       * compat.h: merged with HEAD
+2003-09-30 17:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-10-14 02:32  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * scripts/vrpm:
 
-       * configure.ac: merged MS_MOVE/ctx_t code with HEAD added
-         --enable-supported-apis switch
+       replaced with new version
 
-2003-10-14 02:30  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-09-30 17:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * Makefile.am: added $(lib_XHDRS) and compat.h
+       * scripts/util-vserver-vars.subst:
 
-2003-10-14 02:28  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       added more variables
 
-       * lib/Makefile-files: added lib_XHDRS with all the new files added
-         -D_GNU_SOURCE flag
+2003-09-30 17:56  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-10-14 02:20  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * scripts/Makefile-files:
 
-       * lib/: syscall-compat.hc, syscall-legacy.hc, virtual-inc.h,
-         virtual.h, vserver-internal.h: initial checkin
+       added more substitutions
 
-2003-10-14 02:07  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+2003-09-30 14:42  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-       * lib/vserver.h: implemented new API
+       * doc/cfg.txt:
 
-2003-10-14 01:57  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       initial checkin
 
-       * lib/syscall.c: implemented new API
+2003-09-30 00:01  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 
-2003-10-14 01:53  Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+       * doc/intro.txt, lib/Makefile-files, lib/syscall.c, lib/vserver.h,
+         m4/changelog.am, m4/ensc_cflags.m4, m4/gpgsig.am, m4/validate.am,
+         man/Makefile-files, man/chbind.8, man/chcontext.8,
+         man/distrib-info.8, man/newvserver.8, man/rebootmgr.8,
+         man/reducecap.8, man/vps.8, man/vpstree.8, man/vrpm.8,
+         man/vserver-copy.8, man/vserver-stat.8, man/vserver.8,
+         man/vtop.8, scripts/Makefile-files, scripts/distrib-info,
+         scripts/rootshell, scripts/save_s_context,
+         scripts/util-vserver-vars.subst, scripts/vkill, scripts/vprofile,
+         scripts/vps, scripts/vpstree, scripts/vrpm, scripts/vserver,
+         scripts/vserver-copy, scripts/vserverkillall,
+         scripts/vservers.grabinfo.sh, scripts/vsysvwrapper, scripts/vtop,
+         scripts/vunify.old.sh, src/Makefile-files, src/capchroot.c,
+         src/chbind.c, src/chcontext.c, src/fakerunlevel.c,
+         src/filetime.c, src/ifspec.c, src/listdevip.c,
+         src/parserpmdump.c, src/readlink.c, src/rebootmgr.c,
+         src/reducecap.c, src/setctxlimit.c, src/showattr.c,
+         src/showperm.c, src/vbuild.cc, src/vcheck.cc, src/vdu.c,
+         src/vfiles.cc, src/vreboot.c, src/vserver-stat.c, src/vunify.cc,
+         src/vutil.cc, src/vutil.h, src/vutil.p, sysv/Makefile-files,
+         sysv/rebootmgr.subst, sysv/v_gated.subst, sysv/v_httpd.subst,
+         sysv/v_named.subst, sysv/v_portmap.subst, sysv/v_sendmail.subst,
+         sysv/v_smb.subst, sysv/v_sshd.subst, sysv/v_xinetd.subst,
+         sysv/vservers.conf, sysv/vservers.subst, tests/Makefile-files,
+         tests/chrootsafe.cc, tests/escaperoot.cc, tests/forkbomb.cc,
+         tests/testipc.cc, tests/testlimit.cc, tests/testopenf.cc,
+         vserver.spec.in, distrib/Makefile-files, distrib/install-mdk8.2,
+         distrib/install-post.sh, distrib/install-pre.sh,
+         distrib/install-rh7.2, distrib/install-rh7.3,
+         distrib/install-rh8.0, distrib/install-rh9.0,
+         distrib/mdk8.2-minimum, distrib/rh7.3-minimum,
+         distrib/rh8.0-minimum, distrib/rh9.0-minimum,
+         distrib/sample.conf, distrib/sample.sh, doc/FAQ.txt,
+         doc/Makefile-files, doc/changelog.txt, .cvsignore, AUTHORS,
+         Makefile.am, NEWS, README, THANKS, configure.ac,
+         newvserver.defaults:
 
-       * src/Makefile-files: removed set_ctx_limit.c
+       initial checkin
 
diff --git a/INSTALL b/INSTALL
index 54caf7c..56b077d 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,13 +1,16 @@
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
-Foundation, Inc.
+Installation Instructions
+*************************
 
-   This file is free documentation; the Free Software Foundation gives
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
+Software Foundation, Inc.
+
+This file is free documentation; the Free Software Foundation gives
 unlimited permission to copy, distribute and modify it.
 
 Basic Installation
 ==================
 
-   These are generic installation instructions.
+These are generic installation instructions.
 
    The `configure' shell script attempts to guess correct values for
 various system-dependent variables used during compilation.  It uses
@@ -67,9 +70,9 @@ The simplest way to compile this package is:
 Compilers and Options
 =====================
 
-   Some systems require unusual options for compilation or linking that
-the `configure' script does not know about.  Run `./configure --help'
-for details on some of the pertinent environment variables.
+Some systems require unusual options for compilation or linking that the
+`configure' script does not know about.  Run `./configure --help' for
+details on some of the pertinent environment variables.
 
    You can give `configure' initial values for configuration parameters
 by setting variables in the command line or in the environment.  Here
@@ -82,7 +85,7 @@ is an example:
 Compiling For Multiple Architectures
 ====================================
 
-   You can compile the package for more than one kind of computer at the
+You can compile the package for more than one kind of computer at the
 same time, by placing the object files for each architecture in their
 own directory.  To do this, you must use a version of `make' that
 supports the `VPATH' variable, such as GNU `make'.  `cd' to the
@@ -99,19 +102,19 @@ for another architecture.
 Installation Names
 ==================
 
-   By default, `make install' will install the package's files in
+By default, `make install' will install the package's files in
 `/usr/local/bin', `/usr/local/man', etc.  You can specify an
 installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PATH'.
+option `--prefix=PREFIX'.
 
    You can specify separate installation prefixes for
 architecture-specific files and architecture-independent files.  If you
-give `configure' the option `--exec-prefix=PATH', the package will use
-PATH as the prefix for installing programs and libraries.
+give `configure' the option `--exec-prefix=PREFIX', the package will
+use PREFIX as the prefix for installing programs and libraries.
 Documentation and other data files will still use the regular prefix.
 
    In addition, if you use an unusual directory layout you can give
-options like `--bindir=PATH' to specify different values for particular
+options like `--bindir=DIR' to specify different values for particular
 kinds of files.  Run `configure --help' for a list of the directories
 you can set and what kinds of files go in them.
 
@@ -122,7 +125,7 @@ option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
 Optional Features
 =================
 
-   Some packages pay attention to `--enable-FEATURE' options to
+Some packages pay attention to `--enable-FEATURE' options to
 `configure', where FEATURE indicates an optional part of the package.
 They may also pay attention to `--with-PACKAGE' options, where PACKAGE
 is something like `gnu-as' or `x' (for the X Window System).  The
@@ -137,11 +140,11 @@ you can use the `configure' options `--x-includes=DIR' and
 Specifying the System Type
 ==========================
 
-   There may be some features `configure' cannot figure out
-automatically, but needs to determine by the type of machine the package
-will run on.  Usually, assuming the package is built to be run on the
-_same_ architectures, `configure' can figure that out, but if it prints
-message saying it cannot guess the machine type, give it the
+There may be some features `configure' cannot figure out automatically,
+but needs to determine by the type of machine the package will run on.
+Usually, assuming the package is built to be run on the _same_
+architectures, `configure' can figure that out, but if it prints a
+message saying it cannot guess the machine type, give it the
 `--build=TYPE' option.  TYPE can either be a short name for the system
 type, such as `sun4', or a canonical name which has the form:
 
@@ -167,9 +170,9 @@ eventually be run) with `--host=TYPE'.
 Sharing Defaults
 ================
 
-   If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
+If you want to set default values for `configure' scripts to share, you
+can create a site shell script called `config.site' that gives default
+values for variables like `CC', `cache_file', and `prefix'.
 `configure' looks for `PREFIX/share/config.site' if it exists, then
 `PREFIX/etc/config.site' if it exists.  Or, you can set the
 `CONFIG_SITE' environment variable to the location of the site script.
@@ -178,7 +181,7 @@ A warning: not all `configure' scripts look for a site script.
 Defining Variables
 ==================
 
-   Variables not defined in a site shell script can be set in the
+Variables not defined in a site shell script can be set in the
 environment passed to `configure'.  However, some packages may run
 configure again during the build, and the customized values of these
 variables may be lost.  In order to avoid this problem, you should set
@@ -186,14 +189,18 @@ them in the `configure' command line, using `VAR=value'.  For example:
 
      ./configure CC=/usr/local2/bin/gcc
 
-will cause the specified gcc to be used as the C compiler (unless it is
-overridden in the site shell script).
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).  Here is a another example:
+
+     /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
+configuration-related scripts to be executed by `/bin/bash'.
 
 `configure' Invocation
 ======================
 
-   `configure' recognizes the following options to control how it
-operates.
+`configure' recognizes the following options to control how it operates.
 
 `--help'
 `-h'
index 437c818..6270023 100644 (file)
@@ -1,6 +1,6 @@
-## $Id: Makefile.am,v 1.1.4.12 2004/02/09 23:18:59 ensc Exp $
+## $Id: Makefile.am,v 1.70 2005/07/03 17:51:00 ensc Exp $
 
-# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+# Copyright (C) 2003,2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 #  
 # 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
 #  
 
 ACLOCAL_AMFLAGS                =  -I m4
+SUBDIRS                        =  . distrib
 
-CVS2CL_AMFLAGS          =  $(CVS2CL_TAG) -U cvsusers.map --show-dead
+CVS2CL_AMFLAGS         =  $(CVS2CL_TAG) -U cvsusers.map --show-dead -S --no-wrap
 CVS2CL_ALLFLAGS        :=  $(CVS2CL_AMFLAGS) $(CVS2CL_FLAGS)
 
-sysvdir                        =  $(sysconfdir)/init.d
-vservercfgdir          =  $(sysconfdir)/vservers
+confdir                        =  $(sysconfdir)/vservers
+confdefaultsdir                =  $(confdir)/.defaults
+sbincfgdir             =  $(sbindir)
 legacydir              =  $(pkglibdir)/legacy
 
-include_HEADERS                =  $(lib_HDRS)
-noinst_HEADERS         =  $(src_HDRS) $(lib_XHDRS) compat.h
+include_HEADERS =
+noinst_HEADERS =       $(ENSC_VECTOR_HDRS) \
+                       compat.h compat-c99.h
 
-lib_LIBRARIES          =  $(lib_lib_LIBS)
+noinst_LIBRARIES =     $(ENSC_VECTOR_LIBS)
+lib_LIBRARIES =
+lib_LTLIBRARIES =
+pkglib_LTLIBRARIES =
 
-pkglib_SCRIPTS         =  $(distrib_SCRPTS) $(scripts_SCRPTS) $(src_pkglib_SCRPTS)
-pkglib_DATA            =  $(distrib_DAT) $(scriptscfg_DATA)
-pkglib_PROGRAMS                =  $(src_pkglib_PRGS)
+pkglib_SCRIPTS =
+pkglib_DATA =          FEATURES.txt
+pkglib_PROGRAMS =
+legacy_SCRIPTS =
+legacy_PROGRAMS =
 
-legacy_SCRIPTS         =  $(scripts_LEGSCRPTS)
+sbin_SCRIPTS =
+sbin_PROGRAMS =
+noinst_PROGRAMS =
+noinst_DATA =
 
-sbin_SCRIPTS           =  $(scripts_PRGS) $(linuxconf_SCRPTS)
-sbin_PROGRAMS          =  $(src_sbin_PRGS)
-noinst_PROGRAMS                =  $(test_PRGS)
+initrd_SCRIPTS =
+sysconf_DATA =
 
-sysv_SCRIPTS           =  $(sysv_SCRPTS)
-sysconf_DATA           =  $(sysv_CFG)
-vservercfg_DATA                =  $(linuxconf_cfg_DTA)
+DIETPROGS =            $(LIBENSCVECTOR_DIET)
 
-BUILT_SOURCES          =  linuxcaps.h linuxvirtual.h
+BUILT_SOURCES =                pathconfig.h linuxvirtual.h \
+                       .fixups
 
-man_MANS               =  $(man_DATMAN) $(linuxconf_DATMAN)
+man_MANS =
 
-m4_FILES               =  m4/ensc_cflags.m4 m4/ensc_kerneldir.m4 \
-                          m4/ensc_changelog.m4 m4/ensc_uv_vrootdir.m4
+kernel_HDRS =          kernel/context.h        \
+                       kernel/context_cmd.h    \
+                       kernel/cvirt.h          \
+                       kernel/cvirt_cmd.h      \
+                       kernel/cvirt_def.h      \
+                       kernel/debug.h          \
+                       kernel/debug_cmd.h      \
+                       kernel/dlimit.h         \
+                       kernel/dlimit_cmd.h     \
+                       kernel/inode.h          \
+                       kernel/inode_cmd.h      \
+                       kernel/legacy.h         \
+                       kernel/limit.h          \
+                       kernel/limit_cmd.h      \
+                       kernel/limit_def.h      \
+                       kernel/namespace.h      \
+                       kernel/namespace_cmd.h  \
+                       kernel/network.h        \
+                       kernel/network_cmd.h    \
+                       kernel/sched.h          \
+                       kernel/sched_cmd.h      \
+                       kernel/sched_def.h      \
+                       kernel/signal_cmd.h     \
+                       kernel/switch.h         \
+                       kernel/xid.h
 
-EXTRA_DIST             =  $(distrib_SCRPTS) $(distrib_DAT) \
-                          $(sysv_XTRAS) $(sysv_CFG) \
-                           $(doc_DAT) $(man_DATMAN) $(linuxconf_XTRAS) \
-                          $(scripts_SCRPTS) $(scripts_XTRAS) \
-                          $(m4_FILES) \
-                          util-vserver.spec THANKS
 
-AM_CPPFLAGS            =  -I $(top_srcdir)/lib -D VERSION=\"$(VERSION)\" -D PKGLIBDIR=\"$(pkglibdir)\" -D _GNU_SOURCE
-AM_CFLAGS              =  -Wall -pedantic
+EXTRA_PROGRAMS =
+EXTRA_DIST =           pathconfig.h.pathsubst \
+                       util-vserver.spec \
+                       THANKS REQUIREMENTS \
+                       $(kernel_HDRS)
 
-CLEANFILES             =  $(sysv_GENSCRPTS) $(scripts_GENSCRPTS) \
-                          $(linuxconf_GENFILES) $(src_GENFILES) \
-                          $(BUILT_SOURCES)
+check_PROGRAMS =
+check_SCRIPTS =
 
+TESTS_DEBUG =          no
+TESTS =
+TESTS_ENVIRONMENT =    ensc_use_expensive_tests="$(ENSC_USE_EXPENSIVE_TESTS)" \
+                       ensc_test_debug="$(TESTS_DEBUG)"
+
+AM_CPPFLAGS =          -I $(top_srcdir)/lib -I $(top_srcdir)/ensc_wrappers \
+                       -D_GNU_SOURCE -D_REENTRANT $(RELEASE_CPPFLAGS)
+
+CLEANFILES =           $(BUILT_SOURCES) \
+                       .*.pathsubst.stamp */.*.pathsubst.stamp */*/.*.pathsubst.stamp \
+                       pathconfig.h .fixups
+
+DISTCLEANFILES =       FEATURES.txt
+
+
+AM_INSTALLCHECK_STD_OPTIONS_EXEMPT =
+
+if USE_DIETLIBC
+DIET_CC                       :=  $(DIET) $(DIETFLAGS) $(CC)
+VSERVER_LDFLGS        :=  -static
+else
+VSERVER_LDFLGS        :=
+endif
+
+if USE_DIETLIBC_COMPAT
+DIET_COMPAT_LDADDS =   -lcompat
+else
+DIET_COMPAT_LDADDS =
+endif
+
+VSERVER_LDADDS =       $(LIBVSERVER) $(DIET_COMPAT_LDADDS)
+
+silent.%:              FORCE
+                       @t=$$(mktemp /tmp/build.XXXXXX) && \
+                       $(MAKE) '$*' -s 2>$$t >/dev/null && \
+                       ( cat $$t | \
+                               grep -v ': In function' | \
+                               grep -v 'your code still has assertions enabled' | \
+                               grep -v ' is obsoleted' | \
+                               grep -v 'warning: #warning'; \
+                               rm -f $$t || : )
 
-linuxcaps.h:   ${kernelincludedir}/linux/capability.h Makefile
-               @rm -f $@
-               echo '#include <stdint.h>' >$@.tmp
-               sed -e 's!^#include .*!!g;s!\<__u32\>!uint32_t!g;s!\<__user\>!!g;' $< >>$@.tmp
-               @-chmod --reference $< $@.tmp &>/dev/null
-               mv -f $@.tmp $@
-               @chmod a-w $@
 
 linuxvirtual.h:
 if ENSC_ENABLE_INTERNAL_HEADERS
-               ln -sf '$(top_srcdir)/lib/virtual.h' '$@'
+                       ln -sf '$(top_srcdir)/lib/virtual.h' '$@'
 else
-               ln -sf '$(kernelincludedir)/linux/virtual.h' '$@' && test -e '$@' || \
-               ln -sf '$(top_srcdir)/lib/virtual.h' '$@'
+                       ln -sf '$(kernelincludedir)/linux/virtual.h' '$@' && test -e '$@' || \
+                       ln -sf '$(top_srcdir)/lib/virtual.h' '$@'
+endif
+
+pathsubst_RULES =      s!@'PKGLIBDIR'@!$(pkglibdir)!g; \
+                       s!@'LEGACYDIR'@!$(legacydir)!g; \
+                       s!@'SBINDIR'@!$(sbindir)!g; \
+                       s!@'CONFDIR'@!$(confdir)!g; \
+                       s!@'SYSCONFDIR'@!$(sysconfdir)!g; \
+                       s!@'PKGSTATEDIR'@!$(pkgstatedir)!g; \
+                       s!@'PKGSTATEREVDIR'@!$(pkgstaterevdir)!g; \
+                       s!@'VSERVERDIR'@!$(vserverdir)!g; \
+                       s!@'VSERVERPKGDIR'@!$(vserverpkgdir)!g; \
+                       s!@'VSERVERPKGDIR'@!$(vserverpkgdir)!g; \
+                       s!@'VSHELPERSTATEDIR'@!$(vshelperstatedir)!g; \
+                       s!@'INITRDDIR'@!$(initrddir)!g; \
+                       s!@'LIBDIR'@!$(libdir)!g; \
+                       s!@'MANDIR'@!$(mandir)!g; \
+                       s!@'INCLUDEDIR'@!$(includedir)!g; \
+                       s!@'PACKAGE'@!$(PACKAGE)!g; \
+                       s!@'PACKAGE_BUGREPORT'@!$(PACKAGE_BUGREPORT)!g; \
+                       s!@'PACKAGE_NAME'@!$(PACKAGE_NAME)!g; \
+                       s!@'PACKAGE_STRING'@!$(PACKAGE_STRING)!g; \
+                       s!@'PACKAGE_TARNAME'@!$(PACKAGE_TARNAME)!g; \
+                       s!@'PACKAGE_VERSION'@!$(PACKAGE_VERSION)!g; \
+                       s!@'ENSC_HAVE_C99_COMPILER_TRUE'@!\@ENSC_HAVE_C99_COMPILER_TRUE@ !g; \
+                       s!@'ENSC_HAVE_C99_COMPILER_FALSE'@!\@ENSC_HAVE_C99_COMPILER_FALSE@ !g; \
+                       s!@'ENSC_HAVE_CXX_COMPILER_TRUE'@!\@ENSC_HAVE_CXX_COMPILER_TRUE@ !g; \
+                       s!@'ENSC_HAVE_CXX_COMPILER_FALSE'@!\@ENSC_HAVE_CXX_COMPILER_FALSE@ !g; \
+                       $(ENSC_PATHPROG_SED)
+
+pathconfig.h:          .pathconfig.h.pathsubst.stamp
+.%.pathsubst.stamp:    %.pathsubst Makefile
+                       @mkdir -p $$(dirname '$@')
+                       @echo "$(SED) -e '...' $*.pathsubst >$*"
+                       @$(SED) -e '$(pathsubst_RULES)' '$<' >'$@.tmp'
+                       @-chmod --reference='$<' '$@.tmp'
+                       @if cmp -s '$@.tmp' '$*'; then \
+                               echo "... no changes, reusing old version"; \
+                               rm -f '$@.tmp'; \
+                       else \
+                               rm -f '$*'; mv '$@.tmp' '$*'; \
+                       fi
+                       @chmod a-w '$*'
+                       @touch '$@'
+
+pkgstatedir =          $(localstatedir)/run/vservers
+pkgstaterevdir =       $(confdefaultsdir)/run.rev
+vserverpkgdir =                $(vserverdir)/.pkg
+vshelperstatedir =     $(localstatedir)/run/vshelper
+
+fix_SCRPTS             =  $(addprefix $(pkglibdir)/, $(notdir $(pkglib_SCRIPTS))) \
+                          $(addprefix $(legacydir)/, $(notdir $(legacy_SCRIPTS))) \
+                          $(addprefix $(sbindir)/,   $(notdir $(sbin_SCRIPTS))) \
+                          $(addprefix $(initrddir)/, $(notdir $(initrd_SCRIPTS)))
+
+update-doc:            doc
+                       $(top_srcdir)/update-doc
+
+install-data-hook:     install-fix-script-paths install-create-dirs
+
+install-create-dirs:
+                       $(mkinstalldirs) -m 755 $(DESTDIR)$(pkgstatedir) $(DESTDIR)$(pkgstatedir).rev $(DESTDIR)$(vshelperstatedir)
+                       $(mkinstalldirs) -m 755 $(DESTDIR)$(confdefaultsdir)
+                       f=$(DESTDIR)$(confdefaultsdir)/vdirbase; test -e "$$f" || ln -sf '$(vserverdir)'      "$$f"
+                       f=$(DESTDIR)$(pkgstaterevdir);           test -e "$$f" || ln -sf '$(pkgstatedir).rev' "$$f"
+
+install-fix-script-paths:
+                       test "/usr/lib/util-vserver" = "$(pkglibdir)" || \
+                       for i in $(fix_SCRPTS); do \
+                               f="$(DESTDIR)$$i"; \
+                               $(SED) -e 's!/usr/lib/util-vserver!$(pkglibdir)!g' "$$f" >"$$f.tmp"; \
+                               $(CMP) -s "$$f.tmp" "$$f" || cat "$$f.tmp" >"$$f"; \
+                               rm -f "$$f.tmp"; \
+                       done
+
+install-distribution:  _install-vserverdir _install-vshelperlink
+
+_install-vshelperlink:
+                       $(mkinstalldirs) $(DESTDIR)/sbin
+                       ln -sf ..$(pkglibdir)/vshelper $(DESTDIR)/sbin/vshelper
+
+_install-vserverdir:
+                       $(mkinstalldirs) $(DESTDIR)$(vserverdir) $(DESTDIR)$(vserverpkgdir)
+
+
+.fixups:               config.status util-vserver.spec
+                       chmod a-w util-vserver.spec
+                       touch $@
+
+if USE_DIETLIBC
+$(addsuffix $(EXEEXT), $(DIETPROGS)) \
+$(addsuffix $(OBJEXT), $(DIETPROGS)) \
+               :               CC=$(DIET_CC)
+else   !USE_DIETLIBC
+nodist_lib_dietlibc_not_enabled_error_a_SOURCES = \
+                       lib-dietlibc-not-enabled-error.c
 endif
 
 include $(top_srcdir)/lib/Makefile-files
 include $(top_srcdir)/src/Makefile-files
-include $(top_srcdir)/distrib/Makefile-files
 include $(top_srcdir)/doc/Makefile-files
 include $(top_srcdir)/man/Makefile-files
 include $(top_srcdir)/scripts/Makefile-files
 include $(top_srcdir)/tests/Makefile-files
 include $(top_srcdir)/sysv/Makefile-files
-include $(top_srcdir)/linuxconf/Makefile-files
+include $(top_srcdir)/contrib/Makefile-files
+include $(top_srcdir)/ensc_vector/Makefile-files
+include $(top_srcdir)/ensc_wrappers/Makefile-files
+include $(top_srcdir)/ensc_fmt/Makefile-files
+include $(top_srcdir)/lib_internal/Makefile-files
+include $(top_srcdir)/vserver-start/Makefile-files
 
 include $(top_srcdir)/m4/gpgsig.am
 include $(top_srcdir)/m4/validate.am
 include $(top_srcdir)/m4/changelog.am
+include $(top_srcdir)/m4/pkgconfig.am
+include $(top_srcdir)/m4/libsel.am
+include $(top_srcdir)/m4/install-notify.am
+
+.PHONY:                FORCE update-doc
index 9500fae..1d58944 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.8.4 from Makefile.am.
+# Makefile.in generated by automake 1.9.5 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004  Free Software Foundation, Inc.
+# 2003, 2004, 2005  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.
@@ -14,7 +14,7 @@
 
 @SET_MAKE@
 
-# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+# Copyright (C) 2003,2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 #  
 # 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
@@ -35,7 +35,8 @@
 
 
 
-SOURCES = $(lib_libvserver_a_SOURCES) $(src_capchroot_SOURCES) $(src_chbind_SOURCES) $(src_chcontext_SOURCES) $(src_fakerunlevel_SOURCES) $(src_filetime_SOURCES) $(src_ifspec_SOURCES) $(src_listdevip_SOURCES) $(src_parserpmdump_SOURCES) $(src_readlink_SOURCES) $(src_rebootmgr_SOURCES) $(src_reducecap_SOURCES) $(src_showattr_SOURCES) $(src_showperm_SOURCES) $(src_vbuild_SOURCES) $(src_vcheck_SOURCES) $(src_vdu_SOURCES) $(src_vfiles_SOURCES) $(src_vkill_SOURCES) $(src_vlimit_SOURCES) $(src_vreboot_SOURCES) $(src_vserver_stat_SOURCES) $(src_vunify_SOURCES) $(tests_escaperoot_SOURCES) $(tests_forkbomb_SOURCES) $(tests_testipc_SOURCES) $(tests_testlimit_SOURCES) $(tests_testopenf_SOURCES)
+
+SOURCES = $(nodist_lib_dietlibc_not_enabled_error_a_SOURCES) $(nodist_lib_glibc_not_enabled_error_a_SOURCES) $(lib_libvserver_a_SOURCES) $(lib_internal_libinternal_diet_a_SOURCES) $(lib_internal_libinternal_glibc_a_SOURCES) $(libensc_vector_diet_a_SOURCES) $(libensc_vector_glibc_a_SOURCES) $(lib_libvserver_la_SOURCES) $(src_rpm_fake_la_SOURCES) $(ensc_vector_testsuite_test1_SOURCES) $(ensc_vector_testsuite_test2_SOURCES) $(lib_testsuite_cflags_SOURCES) $(lib_testsuite_fmt_SOURCES) $(lib_testsuite_parselimit_SOURCES) $(lib_testsuite_personality_SOURCES) $(lib_internal_testsuite_command_SOURCES) $(lib_internal_testsuite_copy_SOURCES) $(lib_internal_testsuite_filecfg_ml_SOURCES) $(lib_internal_testsuite_sigbus_SOURCES) $(src_capchroot_SOURCES) $(src_chain_echo_SOURCES) $(src_chbind_SOURCES) $(src_chcontext_compat_SOURCES) src/check-unixfile.c $(src_chroot_sh_SOURCES) $(src_chxid_SOURCES) $(src_exec_cd_SOURCES) $(src_exec_ulimit_SOURCES) $(src_fakerunlevel_SOURCES) $(src_filetime_SOURCES) $(src_ifspec_SOURCES) $(src_keep_ctx_alive_SOURCES) $(src_listdevip_SOURCES) $(src_lockfile_SOURCES) $(src_lsxid_SOURCES) $(src_mask2prefix_SOURCES) $(src_parserpmdump_SOURCES) $(src_readlink_SOURCES) $(src_rebootmgr_SOURCES) $(src_reducecap_SOURCES) $(src_rpm_fake_resolver_SOURCES) $(src_save_ctxinfo_SOURCES) $(src_secure_mount_SOURCES) $(src_setattr_SOURCES) $(src_showattr_SOURCES) src/showperm.c src/sigexec.c $(src_testsuite_chbind_test_SOURCES) $(src_testsuite_chcontext_test_SOURCES) $(src_testsuite_rpm_fake_test_SOURCES) $(src_testsuite_vunify_functest_SOURCES) $(src_vattribute_SOURCES) $(src_vcontext_SOURCES) $(src_vcopy_SOURCES) $(src_vdlimit_SOURCES) $(src_vdu_SOURCES) $(src_vhashify_SOURCES) $(src_vkill_SOURCES) $(src_vlimit_SOURCES) $(src_vnamespace_SOURCES) $(src_vps_SOURCES) $(src_vreboot_SOURCES) src/vrsetup.c $(src_vsched_SOURCES) $(src_vserver_info_SOURCES) $(src_vserver_stat_SOURCES) $(src_vshelper_sync_SOURCES) $(src_vuname_SOURCES) $(src_vunify_SOURCES) $(src_vwait_SOURCES) $(tests_escaperoot_SOURCES) $(tests_forkbomb_SOURCES) $(tests_getctx_SOURCES) $(tests_getinitpid_SOURCES) $(tests_testipc_SOURCES) $(tests_testlimit_SOURCES) $(tests_testopenf_SOURCES) $(tests_vserver_info_SOURCES) $(vserver_start_vserver_start_bin_SOURCES)
 
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
@@ -57,30 +58,110 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
-pkglib_PROGRAMS = $(am__EXEEXT_2)
-sbin_PROGRAMS = $(am__EXEEXT_3)
-noinst_PROGRAMS = $(am__EXEEXT_1)
+build_triplet = @build@
+host_triplet = @host@
+pkglib_PROGRAMS = src/capchroot$(EXEEXT) src/chain-echo$(EXEEXT) \
+       src/chcontext-compat$(EXEEXT) src/check-unixfile$(EXEEXT) \
+       src/chroot-sh$(EXEEXT) src/fakerunlevel$(EXEEXT) \
+       src/filetime$(EXEEXT) src/keep-ctx-alive$(EXEEXT) \
+       src/lockfile$(EXEEXT) src/readlink$(EXEEXT) \
+       src/save_ctxinfo$(EXEEXT) src/secure-mount$(EXEEXT) \
+       src/mask2prefix$(EXEEXT) src/exec-ulimit$(EXEEXT) \
+       src/rpm-fake-resolver$(EXEEXT) src/vshelper-sync$(EXEEXT) \
+       src/sigexec$(EXEEXT) $(am__EXEEXT_7) $(am__EXEEXT_8) \
+       $(am__EXEEXT_9) $(am__EXEEXT_10)
+legacy_PROGRAMS = src/ifspec$(EXEEXT) src/listdevip$(EXEEXT) \
+       src/parserpmdump$(EXEEXT) src/rebootmgr$(EXEEXT) \
+       src/showperm$(EXEEXT) src/vreboot$(EXEEXT)
+sbin_PROGRAMS = src/chbind$(EXEEXT) src/exec-cd$(EXEEXT) \
+       src/lsxid$(EXEEXT) src/chxid$(EXEEXT) src/vps$(EXEEXT) \
+       src/showattr$(EXEEXT) src/setattr$(EXEEXT) \
+       src/reducecap$(EXEEXT) src/vdu$(EXEEXT) \
+       src/vattribute$(EXEEXT) src/vcontext$(EXEEXT) \
+       src/vlimit$(EXEEXT) src/vkill$(EXEEXT) src/vnamespace$(EXEEXT) \
+       src/vrsetup$(EXEEXT) src/vsched$(EXEEXT) \
+       src/vserver-stat$(EXEEXT) src/vserver-info$(EXEEXT) \
+       src/vuname$(EXEEXT) src/vwait$(EXEEXT) $(am__EXEEXT_8) \
+       $(am__EXEEXT_11)
+noinst_PROGRAMS = tests/escaperoot$(EXEEXT) tests/forkbomb$(EXEEXT) \
+       tests/testipc$(EXEEXT) tests/testlimit$(EXEEXT) \
+       tests/testopenf$(EXEEXT) $(am__EXEEXT_5)
+EXTRA_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_1)
+check_PROGRAMS = lib/testsuite/cflags$(EXEEXT) \
+       lib/testsuite/personality$(EXEEXT) lib/testsuite/fmt$(EXEEXT) \
+       lib/testsuite/parselimit$(EXEEXT) $(am__EXEEXT_2) \
+       $(am__EXEEXT_3) ensc_vector/testsuite/test1$(EXEEXT) \
+       ensc_vector/testsuite/test2$(EXEEXT) \
+       lib_internal/testsuite/command$(EXEEXT) $(am__EXEEXT_4)
 DIST_COMMON = README $(am__configure_deps) $(include_HEADERS) \
        $(noinst_HEADERS) $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-       $(srcdir)/config.h.in $(srcdir)/util-vserver.spec.in \
-       $(top_srcdir)/configure $(top_srcdir)/distrib/Makefile-files \
+       $(srcdir)/config.h.in \
+       $(srcdir)/ensc_vector/testsuite/Makefile-files \
+       $(srcdir)/lib/apidoc/Makefile-files \
+       $(srcdir)/lib/testsuite/Makefile-files \
+       $(srcdir)/util-vserver.spec.in $(top_srcdir)/configure \
+       $(top_srcdir)/contrib/Makefile-files \
        $(top_srcdir)/doc/Makefile-files \
+       $(top_srcdir)/ensc_fmt/Makefile-files \
+       $(top_srcdir)/ensc_vector/Makefile-files \
+       $(top_srcdir)/ensc_wrappers/Makefile-files \
        $(top_srcdir)/lib/Makefile-files \
-       $(top_srcdir)/linuxconf/Makefile-files \
+       $(top_srcdir)/lib/apidoc/Doxyfile.in \
+       $(top_srcdir)/lib_internal/Makefile-files \
+       $(top_srcdir)/lib_internal/testsuite/Makefile-files \
        $(top_srcdir)/m4/changelog.am $(top_srcdir)/m4/gpgsig.am \
-       $(top_srcdir)/m4/validate.am $(top_srcdir)/man/Makefile-files \
+       $(top_srcdir)/m4/install-notify.am $(top_srcdir)/m4/libsel.am \
+       $(top_srcdir)/m4/pkgconfig.am $(top_srcdir)/m4/validate.am \
+       $(top_srcdir)/man/Makefile-files \
        $(top_srcdir)/scripts/Makefile-files \
        $(top_srcdir)/src/Makefile-files \
+       $(top_srcdir)/src/testsuite/Makefile-files \
        $(top_srcdir)/sysv/Makefile-files \
-       $(top_srcdir)/tests/Makefile-files AUTHORS COPYING ChangeLog \
-       INSTALL NEWS THANKS compile depcomp install-sh missing \
-       mkinstalldirs
+       $(top_srcdir)/tests/Makefile-files \
+       $(top_srcdir)/vserver-start/Makefile-files AUTHORS COPYING \
+       ChangeLog INSTALL NEWS THANKS compile config.guess config.sub \
+       depcomp install-sh ltmain.sh missing
+@ENSC_HAVE_C99_COMPILER_TRUE@am__append_1 = lib/syscall_adddlimit-v13.hc \
+@ENSC_HAVE_C99_COMPILER_TRUE@                          lib/syscall_adddlimit.c \
+@ENSC_HAVE_C99_COMPILER_TRUE@                          lib/syscall_getdlimit-v13.hc \
+@ENSC_HAVE_C99_COMPILER_TRUE@                          lib/syscall_getdlimit.c \
+@ENSC_HAVE_C99_COMPILER_TRUE@                          lib/syscall_remdlimit-v13.hc \
+@ENSC_HAVE_C99_COMPILER_TRUE@                          lib/syscall_remdlimit.c \
+@ENSC_HAVE_C99_COMPILER_TRUE@                          lib/syscall_setdlimit-v13.hc \
+@ENSC_HAVE_C99_COMPILER_TRUE@                          lib/syscall_setdlimit.c
+
+@USE_DIETLIBC_TRUE@am__append_2 = $(LIBVSERVER_DIET)
+@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@am__append_3 = src/vhashify
+@ENSC_HAVE_BEECRYPT_TRUE@@ENSC_HAVE_C99_COMPILER_TRUE@am__append_4 = src/vhashify
+@ENSC_HAVE_C99_COMPILER_TRUE@am__append_5 = src/vdlimit
+@HAVE_XSLTP_TRUE@am__append_6 = $(doc_gen_DOCS)
+@HAVE_XSLTPROC_TRUE@@HAVE_XSLTP_FALSE@am__append_7 = $(doc_gen_DOCS)
+@ENSC_USE_GLIBC_TRUE@am__append_8 = $(LIBENSCVECTOR_GLIBC)
+@ENSC_USE_DIETLIBC_TRUE@am__append_9 = $(LIBENSCVECTOR_DIET)
+@USE_DIETLIBC_TRUE@am__append_10 = $(LIBINTERNAL_DIET)
+@ENSC_HAVE_C99_COMPILER_TRUE@am__append_11 = lib_internal/testsuite/filecfg-ml \
+@ENSC_HAVE_C99_COMPILER_TRUE@                          lib_internal/testsuite/copy \
+@ENSC_HAVE_C99_COMPILER_TRUE@                          lib_internal/testsuite/sigbus
+
+@ENSC_HAVE_C99_COMPILER_TRUE@am__append_12 = lib_internal/testsuite/filecfg-ml \
+@ENSC_HAVE_C99_COMPILER_TRUE@                          lib_internal/testsuite/copy-check \
+@ENSC_HAVE_C99_COMPILER_TRUE@                          lib_internal/testsuite/sigbus
+
+@ENSC_HAVE_C99_COMPILER_TRUE@am__append_13 = vserver-start/vserver.start.bin
+@ENSC_HAVE_C99_COMPILER_TRUE@am__append_14 = vserver-start/vserver.start.bin
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ensc_cflags.m4 \
        $(top_srcdir)/m4/ensc_changelog.m4 \
+       $(top_srcdir)/m4/ensc_cxxcompiler.m4 \
+       $(top_srcdir)/m4/ensc_dietlibc.m4 \
+       $(top_srcdir)/m4/ensc_dietlibc_compat.m4 \
        $(top_srcdir)/m4/ensc_e2fscheck.m4 \
+       $(top_srcdir)/m4/ensc_initrddir.m4 \
        $(top_srcdir)/m4/ensc_kerneldir.m4 \
+       $(top_srcdir)/m4/ensc_pathprog.m4 \
+       $(top_srcdir)/m4/ensc_personality.m4 \
+       $(top_srcdir)/m4/ensc_release.m4 \
        $(top_srcdir)/m4/ensc_syscall.m4 \
        $(top_srcdir)/m4/ensc_syscallnr.m4 \
        $(top_srcdir)/m4/ensc_uv_vrootdir.m4 \
@@ -89,115 +170,820 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
  configure.lineno configure.status.lineno
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES = util-vserver.spec
-AR = ar
-ARFLAGS = cru
-am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(legacydir)" "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(sysvdir)" "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(scriptscfgdir)" "$(DESTDIR)$(sysconfdir)" "$(DESTDIR)$(vservercfgdir)" "$(DESTDIR)$(includedir)"
+CONFIG_CLEAN_FILES = util-vserver.spec lib/apidoc/Doxyfile
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libdir)" \
+       "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(legacydir)" \
+       "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(sbindir)" \
+       "$(DESTDIR)$(initrddir)" "$(DESTDIR)$(legacydir)" \
+       "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(sbindir)" \
+       "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(pkgconfdir)" \
+       "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(sysconfdir)" \
+       "$(DESTDIR)$(includedir)"
 libLIBRARIES_INSTALL = $(INSTALL_DATA)
-LIBRARIES = $(lib_LIBRARIES)
+LIBRARIES = $(lib_LIBRARIES) $(noinst_LIBRARIES)
+ARFLAGS = cru
+lib_dietlibc_not_enabled_error_a_AR = $(AR) $(ARFLAGS)
+lib_dietlibc_not_enabled_error_a_LIBADD =
+@ENSC_USE_DIETLIBC_FALSE@nodist_lib_dietlibc_not_enabled_error_a_OBJECTS = lib-dietlibc-not-enabled-error.$(OBJEXT)
+@ENSC_USE_DIETLIBC_TRUE@@USE_DIETLIBC_FALSE@nodist_lib_dietlibc_not_enabled_error_a_OBJECTS = lib-dietlibc-not-enabled-error.$(OBJEXT)
+lib_dietlibc_not_enabled_error_a_OBJECTS =  \
+       $(nodist_lib_dietlibc_not_enabled_error_a_OBJECTS)
+lib_glibc_not_enabled_error_a_AR = $(AR) $(ARFLAGS)
+lib_glibc_not_enabled_error_a_LIBADD =
+@ENSC_USE_GLIBC_FALSE@nodist_lib_glibc_not_enabled_error_a_OBJECTS =  \
+@ENSC_USE_GLIBC_FALSE@ lib-glibc-not-enabled-error.$(OBJEXT)
+lib_glibc_not_enabled_error_a_OBJECTS =  \
+       $(nodist_lib_glibc_not_enabled_error_a_OBJECTS)
 lib_libvserver_a_AR = $(AR) $(ARFLAGS)
 lib_libvserver_a_LIBADD =
+am__lib_libvserver_a_SOURCES_DIST = lib/syscall.c lib/checkversion.c \
+       lib/isdirectory.c lib/isfile.c lib/islink.c \
+       lib/getnbipv4root.c lib/getversion.c lib/capabilities.c \
+       lib/getfilecontext.c lib/getinsecurebcaps.c lib/getxidtype.c \
+       lib/isdynamicxid.c lib/issupported.c lib/issupportedstring.c \
+       lib/listparser_uint32.c lib/listparser_uint64.c \
+       lib/personalityflag.c lib/personalityflag_list.c \
+       lib/personalitytype.c lib/syscall-syscall.c \
+       lib/val2text-t2v-uint32.c lib/val2text-t2v-uint64.c \
+       lib/val2text-v2t-uint32.c lib/val2text-v2t-uint64.c \
+       lib/parselimit.c lib/getprocentry-legacy.c lib/cflags-compat.c \
+       lib/cflags_list-compat.c lib/createskeleton.c \
+       lib/getvserverbyctx.c lib/getvserverbyctx-compat.hc \
+       lib/getvserverbyctx-v13.hc lib/getvservercfgstyle.c \
+       lib/getvserverappdir.c lib/getvservercfgdir.c \
+       lib/getvserverctx.c lib/getvservername.c lib/getvservervdir.c \
+       lib/xidopt2xid.c lib/syscall_rlimit.c \
+       lib/syscall_rlimit-v11.hc lib/syscall_kill.c \
+       lib/syscall_kill-v11.hc lib/syscall_ctxcreate.c \
+       lib/syscall_ctxcreate-v13.hc lib/syscall_ctxmigrate.c \
+       lib/syscall_ctxmigrate-v13.hc \
+       lib/syscall_cleanupnamespace-v13.hc \
+       lib/syscall_cleanupnamespace.c \
+       lib/syscall_enternamespace-v13.hc lib/syscall_enternamespace.c \
+       lib/syscall_getccaps-v13.hc lib/syscall_getccaps.c \
+       lib/syscall_getcflags-v13.hc lib/syscall_getcflags.c \
+       lib/syscall_getiattr-fscompat.hc lib/syscall_getiattr-v13.hc \
+       lib/syscall_getiattr.c lib/syscall_getncaps-net.hc \
+       lib/syscall_getncaps.c lib/syscall_getnflags-net.hc \
+       lib/syscall_getnflags.c lib/syscall_getnxinfo-net.hc \
+       lib/syscall_getnxinfo.c lib/syscall_gettasknid-net.hc \
+       lib/syscall_gettasknid.c lib/syscall_gettaskxid-oldproc.hc \
+       lib/syscall_gettaskxid-v13.hc lib/syscall_gettaskxid.c \
+       lib/syscall_getvhiname-olduts.hc lib/syscall_getvhiname-v13.hc \
+       lib/syscall_getvhiname.c lib/syscall_getvxinfo-oldproc.hc \
+       lib/syscall_getvxinfo-v13.hc lib/syscall_getvxinfo.c \
+       lib/syscall_netadd-net.hc lib/syscall_netadd.c \
+       lib/syscall_netcreate-net.hc lib/syscall_netcreate.c \
+       lib/syscall_netmigrate-net.hc lib/syscall_netmigrate.c \
+       lib/syscall_netremove-net.hc lib/syscall_netremove.c \
+       lib/syscall_setccaps-v13.hc lib/syscall_setccaps.c \
+       lib/syscall_setcflags-v13.hc lib/syscall_setcflags.c \
+       lib/syscall_setiattr-fscompat.hc lib/syscall_setiattr-v13.hc \
+       lib/syscall_setiattr.c lib/syscall_setnamespace-v13.hc \
+       lib/syscall_setnamespace.c lib/syscall_setncaps-net.hc \
+       lib/syscall_setncaps.c lib/syscall_setnflags-net.hc \
+       lib/syscall_setnflags.c lib/syscall_setsched-v13.hc \
+       lib/syscall_setsched.c lib/syscall_setvhiname-olduts.hc \
+       lib/syscall_setvhiname-v13.hc lib/syscall_setvhiname.c \
+       lib/syscall_waitexit.c lib/syscall_waitexit-v13.hc \
+       lib/bcaps-v13.c lib/bcaps_list-v13.c lib/ccaps-v13.c \
+       lib/ccaps_list-v13.c lib/cflags-v13.c lib/cflags_list-v13.c \
+       lib/ncaps-net.c lib/ncaps_list-net.c lib/nflags-net.c \
+       lib/nflags_list-net.c lib/syscall_adddlimit-v13.hc \
+       lib/syscall_adddlimit.c lib/syscall_getdlimit-v13.hc \
+       lib/syscall_getdlimit.c lib/syscall_remdlimit-v13.hc \
+       lib/syscall_remdlimit.c lib/syscall_setdlimit-v13.hc \
+       lib/syscall_setdlimit.c ensc_fmt/fmt-32.c ensc_fmt/fmt-64.c \
+       ensc_fmt/fmtx-32.c ensc_fmt/fmtx-64.c ensc_fmt/fmt-tai64n.c \
+       ensc_fmt/fmt.h ensc_fmt/fmt.hc ensc_fmt/fmtx.hc \
+       ensc_fmt/fmt-internal.h
 am__dirstamp = $(am__leading_dot)dirstamp
-am__objects_1 = lib/lib_libvserver_a-syscall.$(OBJEXT) \
-       lib/lib_libvserver_a-syscall_rlimit.$(OBJEXT) \
-       lib/lib_libvserver_a-syscall_kill.$(OBJEXT) \
+am__objects_1 = lib/lib_libvserver_a-getprocentry-legacy.$(OBJEXT)
+am__objects_2 = lib/lib_libvserver_a-cflags-compat.$(OBJEXT) \
+       lib/lib_libvserver_a-cflags_list-compat.$(OBJEXT)
+am__objects_3 = lib/lib_libvserver_a-createskeleton.$(OBJEXT) \
+       lib/lib_libvserver_a-getvserverbyctx.$(OBJEXT) \
+       lib/lib_libvserver_a-getvservercfgstyle.$(OBJEXT) \
+       lib/lib_libvserver_a-getvserverappdir.$(OBJEXT) \
+       lib/lib_libvserver_a-getvservercfgdir.$(OBJEXT) \
+       lib/lib_libvserver_a-getvserverctx.$(OBJEXT) \
+       lib/lib_libvserver_a-getvservername.$(OBJEXT) \
+       lib/lib_libvserver_a-getvservervdir.$(OBJEXT) \
+       lib/lib_libvserver_a-xidopt2xid.$(OBJEXT)
+am__objects_4 = lib/lib_libvserver_a-syscall_rlimit.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_kill.$(OBJEXT)
+@ENSC_HAVE_C99_COMPILER_TRUE@am__objects_5 = lib/lib_libvserver_a-syscall_adddlimit.$(OBJEXT) \
+@ENSC_HAVE_C99_COMPILER_TRUE@  lib/lib_libvserver_a-syscall_getdlimit.$(OBJEXT) \
+@ENSC_HAVE_C99_COMPILER_TRUE@  lib/lib_libvserver_a-syscall_remdlimit.$(OBJEXT) \
+@ENSC_HAVE_C99_COMPILER_TRUE@  lib/lib_libvserver_a-syscall_setdlimit.$(OBJEXT)
+am__objects_6 = lib/lib_libvserver_a-syscall_ctxcreate.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_ctxmigrate.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_cleanupnamespace.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_enternamespace.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_getccaps.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_getcflags.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_getiattr.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_getncaps.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_getnflags.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_getnxinfo.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_gettasknid.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_gettaskxid.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_getvhiname.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_getvxinfo.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_netadd.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_netcreate.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_netmigrate.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_netremove.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_setccaps.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_setcflags.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_setiattr.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_setnamespace.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_setncaps.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_setnflags.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_setsched.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_setvhiname.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall_waitexit.$(OBJEXT) \
+       lib/lib_libvserver_a-bcaps-v13.$(OBJEXT) \
+       lib/lib_libvserver_a-bcaps_list-v13.$(OBJEXT) \
+       lib/lib_libvserver_a-ccaps-v13.$(OBJEXT) \
+       lib/lib_libvserver_a-ccaps_list-v13.$(OBJEXT) \
+       lib/lib_libvserver_a-cflags-v13.$(OBJEXT) \
+       lib/lib_libvserver_a-cflags_list-v13.$(OBJEXT) \
+       lib/lib_libvserver_a-ncaps-net.$(OBJEXT) \
+       lib/lib_libvserver_a-ncaps_list-net.$(OBJEXT) \
+       lib/lib_libvserver_a-nflags-net.$(OBJEXT) \
+       lib/lib_libvserver_a-nflags_list-net.$(OBJEXT) \
+       $(am__objects_5)
+am__objects_7 = ensc_fmt/lib_libvserver_a-fmt-32.$(OBJEXT) \
+       ensc_fmt/lib_libvserver_a-fmt-64.$(OBJEXT) \
+       ensc_fmt/lib_libvserver_a-fmtx-32.$(OBJEXT) \
+       ensc_fmt/lib_libvserver_a-fmtx-64.$(OBJEXT) \
+       ensc_fmt/lib_libvserver_a-fmt-tai64n.$(OBJEXT)
+am__objects_8 = lib/lib_libvserver_a-syscall.$(OBJEXT) \
        lib/lib_libvserver_a-checkversion.$(OBJEXT) \
-       lib/lib_libvserver_a-getctx.$(OBJEXT) \
+       lib/lib_libvserver_a-isdirectory.$(OBJEXT) \
+       lib/lib_libvserver_a-isfile.$(OBJEXT) \
+       lib/lib_libvserver_a-islink.$(OBJEXT) \
+       lib/lib_libvserver_a-getnbipv4root.$(OBJEXT) \
        lib/lib_libvserver_a-getversion.$(OBJEXT) \
-       lib/lib_libvserver_a-uint2str.$(OBJEXT)
-am_lib_libvserver_a_OBJECTS = $(am__objects_1)
+       lib/lib_libvserver_a-capabilities.$(OBJEXT) \
+       lib/lib_libvserver_a-getfilecontext.$(OBJEXT) \
+       lib/lib_libvserver_a-getinsecurebcaps.$(OBJEXT) \
+       lib/lib_libvserver_a-getxidtype.$(OBJEXT) \
+       lib/lib_libvserver_a-isdynamicxid.$(OBJEXT) \
+       lib/lib_libvserver_a-issupported.$(OBJEXT) \
+       lib/lib_libvserver_a-issupportedstring.$(OBJEXT) \
+       lib/lib_libvserver_a-listparser_uint32.$(OBJEXT) \
+       lib/lib_libvserver_a-listparser_uint64.$(OBJEXT) \
+       lib/lib_libvserver_a-personalityflag.$(OBJEXT) \
+       lib/lib_libvserver_a-personalityflag_list.$(OBJEXT) \
+       lib/lib_libvserver_a-personalitytype.$(OBJEXT) \
+       lib/lib_libvserver_a-syscall-syscall.$(OBJEXT) \
+       lib/lib_libvserver_a-val2text-t2v-uint32.$(OBJEXT) \
+       lib/lib_libvserver_a-val2text-t2v-uint64.$(OBJEXT) \
+       lib/lib_libvserver_a-val2text-v2t-uint32.$(OBJEXT) \
+       lib/lib_libvserver_a-val2text-v2t-uint64.$(OBJEXT) \
+       lib/lib_libvserver_a-parselimit.$(OBJEXT) $(am__objects_1) \
+       $(am__objects_2) $(am__objects_3) $(am__objects_4) \
+       $(am__objects_6) $(am__objects_7)
+am_lib_libvserver_a_OBJECTS = $(am__objects_8)
 lib_libvserver_a_OBJECTS = $(am_lib_libvserver_a_OBJECTS)
-am__EXEEXT_1 = tests/escaperoot$(EXEEXT) tests/forkbomb$(EXEEXT) \
-       tests/testipc$(EXEEXT) tests/testlimit$(EXEEXT) \
-       tests/testopenf$(EXEEXT)
-am__EXEEXT_2 = src/capchroot$(EXEEXT) src/fakerunlevel$(EXEEXT) \
-       src/filetime$(EXEEXT) src/ifspec$(EXEEXT) \
-       src/listdevip$(EXEEXT) src/parserpmdump$(EXEEXT) \
-       src/readlink$(EXEEXT) src/showattr$(EXEEXT) \
-       src/showperm$(EXEEXT) src/vbuild$(EXEEXT) src/vcheck$(EXEEXT) \
-       src/vreboot$(EXEEXT) src/vunify$(EXEEXT)
+lib_internal_libinternal_diet_a_AR = $(AR) $(ARFLAGS)
+lib_internal_libinternal_diet_a_LIBADD =
+am__lib_internal_libinternal_diet_a_SOURCES_DIST =  \
+       lib_internal/errinfo-writeerrno.c \
+       lib_internal/jailintotempdir.c \
+       lib_internal/matchlist-appendfiles.c \
+       lib_internal/matchlist-compare.c \
+       lib_internal/matchlist-destroy.c lib_internal/matchlist-init.c \
+       lib_internal/matchlist-initmanually.c \
+       lib_internal/matchlist-initrefserverlist.c \
+       lib_internal/matchlist-printid.c \
+       lib_internal/matchvserverinfo-free.c \
+       lib_internal/pathinfo-append.c lib_internal/pathinfo-test.c \
+       lib_internal/switchtowatchxid.c lib_internal/unify-deunify.c \
+       lib_internal/unify-settime.c lib_internal/unify-unify.c \
+       lib_internal/unify-isiunlinkable.c \
+       lib_internal/util-canonify.c \
+       lib_internal/util-exitlikeprocess.c \
+       lib_internal/util-isnumber.c lib_internal/util-lockfile.c \
+       lib_internal/util-safechdir.c \
+       lib_internal/command-appendparameter.c \
+       lib_internal/command-setparams.c lib_internal/command-exec.c \
+       lib_internal/command-free.c lib_internal/command-init.c \
+       lib_internal/command-reset.c lib_internal/command-wait.c \
+       lib_internal/command.h lib_internal/filecfg.h \
+       lib_internal/filecfg-iteratemultiline.c \
+       lib_internal/filecfg-readentryflag.c \
+       lib_internal/filecfg-readentrystr.c \
+       lib_internal/matchlist-initbyvserver.c \
+       lib_internal/matchvserverinfo-init.c lib_internal/unify-copy.c
+am__objects_9 = lib_internal/lib_internal_libinternal_diet_a-command-appendparameter.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-command-setparams.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-command-exec.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-command-free.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-command-init.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-command-reset.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-command-wait.$(OBJEXT)
+@ENSC_HAVE_C99_COMPILER_TRUE@am__objects_10 = lib_internal/lib_internal_libinternal_diet_a-filecfg-iteratemultiline.$(OBJEXT) \
+@ENSC_HAVE_C99_COMPILER_TRUE@  lib_internal/lib_internal_libinternal_diet_a-filecfg-readentryflag.$(OBJEXT) \
+@ENSC_HAVE_C99_COMPILER_TRUE@  lib_internal/lib_internal_libinternal_diet_a-filecfg-readentrystr.$(OBJEXT) \
+@ENSC_HAVE_C99_COMPILER_TRUE@  lib_internal/lib_internal_libinternal_diet_a-matchlist-initbyvserver.$(OBJEXT) \
+@ENSC_HAVE_C99_COMPILER_TRUE@  lib_internal/lib_internal_libinternal_diet_a-matchvserverinfo-init.$(OBJEXT) \
+@ENSC_HAVE_C99_COMPILER_TRUE@  lib_internal/lib_internal_libinternal_diet_a-unify-copy.$(OBJEXT)
+am__objects_11 = lib_internal/lib_internal_libinternal_diet_a-errinfo-writeerrno.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-jailintotempdir.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-matchlist-appendfiles.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-matchlist-compare.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-matchlist-destroy.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-matchlist-init.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-matchlist-initmanually.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-matchlist-initrefserverlist.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-matchlist-printid.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-matchvserverinfo-free.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-pathinfo-append.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-pathinfo-test.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-switchtowatchxid.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-unify-deunify.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-unify-settime.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-unify-unify.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-unify-isiunlinkable.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-util-canonify.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-util-exitlikeprocess.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-util-isnumber.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-util-lockfile.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_diet_a-util-safechdir.$(OBJEXT) \
+       $(am__objects_9) $(am__objects_10)
+am_lib_internal_libinternal_diet_a_OBJECTS = $(am__objects_11)
+lib_internal_libinternal_diet_a_OBJECTS =  \
+       $(am_lib_internal_libinternal_diet_a_OBJECTS)
+lib_internal_libinternal_glibc_a_AR = $(AR) $(ARFLAGS)
+lib_internal_libinternal_glibc_a_LIBADD =
+am__lib_internal_libinternal_glibc_a_SOURCES_DIST =  \
+       lib_internal/errinfo-writeerrno.c \
+       lib_internal/jailintotempdir.c \
+       lib_internal/matchlist-appendfiles.c \
+       lib_internal/matchlist-compare.c \
+       lib_internal/matchlist-destroy.c lib_internal/matchlist-init.c \
+       lib_internal/matchlist-initmanually.c \
+       lib_internal/matchlist-initrefserverlist.c \
+       lib_internal/matchlist-printid.c \
+       lib_internal/matchvserverinfo-free.c \
+       lib_internal/pathinfo-append.c lib_internal/pathinfo-test.c \
+       lib_internal/switchtowatchxid.c lib_internal/unify-deunify.c \
+       lib_internal/unify-settime.c lib_internal/unify-unify.c \
+       lib_internal/unify-isiunlinkable.c \
+       lib_internal/util-canonify.c \
+       lib_internal/util-exitlikeprocess.c \
+       lib_internal/util-isnumber.c lib_internal/util-lockfile.c \
+       lib_internal/util-safechdir.c \
+       lib_internal/command-appendparameter.c \
+       lib_internal/command-setparams.c lib_internal/command-exec.c \
+       lib_internal/command-free.c lib_internal/command-init.c \
+       lib_internal/command-reset.c lib_internal/command-wait.c \
+       lib_internal/command.h lib_internal/filecfg.h \
+       lib_internal/filecfg-iteratemultiline.c \
+       lib_internal/filecfg-readentryflag.c \
+       lib_internal/filecfg-readentrystr.c \
+       lib_internal/matchlist-initbyvserver.c \
+       lib_internal/matchvserverinfo-init.c lib_internal/unify-copy.c
+am__objects_12 = lib_internal/lib_internal_libinternal_glibc_a-command-appendparameter.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-command-setparams.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-command-exec.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-command-free.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-command-init.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-command-reset.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-command-wait.$(OBJEXT)
+@ENSC_HAVE_C99_COMPILER_TRUE@am__objects_13 = lib_internal/lib_internal_libinternal_glibc_a-filecfg-iteratemultiline.$(OBJEXT) \
+@ENSC_HAVE_C99_COMPILER_TRUE@  lib_internal/lib_internal_libinternal_glibc_a-filecfg-readentryflag.$(OBJEXT) \
+@ENSC_HAVE_C99_COMPILER_TRUE@  lib_internal/lib_internal_libinternal_glibc_a-filecfg-readentrystr.$(OBJEXT) \
+@ENSC_HAVE_C99_COMPILER_TRUE@  lib_internal/lib_internal_libinternal_glibc_a-matchlist-initbyvserver.$(OBJEXT) \
+@ENSC_HAVE_C99_COMPILER_TRUE@  lib_internal/lib_internal_libinternal_glibc_a-matchvserverinfo-init.$(OBJEXT) \
+@ENSC_HAVE_C99_COMPILER_TRUE@  lib_internal/lib_internal_libinternal_glibc_a-unify-copy.$(OBJEXT)
+am__objects_14 = lib_internal/lib_internal_libinternal_glibc_a-errinfo-writeerrno.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-jailintotempdir.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-matchlist-appendfiles.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-matchlist-compare.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-matchlist-destroy.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-matchlist-init.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-matchlist-initmanually.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-matchlist-initrefserverlist.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-matchlist-printid.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-matchvserverinfo-free.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-pathinfo-append.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-pathinfo-test.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-switchtowatchxid.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-unify-deunify.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-unify-settime.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-unify-unify.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-unify-isiunlinkable.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-util-canonify.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-util-exitlikeprocess.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-util-isnumber.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-util-lockfile.$(OBJEXT) \
+       lib_internal/lib_internal_libinternal_glibc_a-util-safechdir.$(OBJEXT) \
+       $(am__objects_12) $(am__objects_13)
+am_lib_internal_libinternal_glibc_a_OBJECTS = $(am__objects_14)
+lib_internal_libinternal_glibc_a_OBJECTS =  \
+       $(am_lib_internal_libinternal_glibc_a_OBJECTS)
+libensc_vector_diet_a_AR = $(AR) $(ARFLAGS)
+libensc_vector_diet_a_LIBADD =
+am__objects_15 =  \
+       ensc_vector/libensc_vector_diet_a-vector-clear.$(OBJEXT) \
+       ensc_vector/libensc_vector_diet_a-vector-foreach.$(OBJEXT) \
+       ensc_vector/libensc_vector_diet_a-vector-free.$(OBJEXT) \
+       ensc_vector/libensc_vector_diet_a-vector-init.$(OBJEXT) \
+       ensc_vector/libensc_vector_diet_a-vector-insert.$(OBJEXT) \
+       ensc_vector/libensc_vector_diet_a-vector-popback.$(OBJEXT) \
+       ensc_vector/libensc_vector_diet_a-vector-pushback.$(OBJEXT) \
+       ensc_vector/libensc_vector_diet_a-vector-resize.$(OBJEXT) \
+       ensc_vector/libensc_vector_diet_a-vector-search.$(OBJEXT) \
+       ensc_vector/libensc_vector_diet_a-vector-searchselforg.$(OBJEXT) \
+       ensc_vector/libensc_vector_diet_a-vector-sort.$(OBJEXT) \
+       ensc_vector/libensc_vector_diet_a-vector-unique.$(OBJEXT) \
+       ensc_vector/libensc_vector_diet_a-vector-zeroend.$(OBJEXT) \
+       ensc_vector/libensc_vector_diet_a-list-at.$(OBJEXT) \
+       ensc_vector/libensc_vector_diet_a-list-add.$(OBJEXT) \
+       ensc_vector/libensc_vector_diet_a-list-free.$(OBJEXT) \
+       ensc_vector/libensc_vector_diet_a-list-init.$(OBJEXT) \
+       ensc_vector/libensc_vector_diet_a-list-insertinternal.$(OBJEXT) \
+       ensc_vector/libensc_vector_diet_a-list-search.$(OBJEXT) \
+       ensc_vector/libensc_vector_diet_a-list-searchselforg.$(OBJEXT)
+am_libensc_vector_diet_a_OBJECTS = $(am__objects_15)
+libensc_vector_diet_a_OBJECTS = $(am_libensc_vector_diet_a_OBJECTS)
+libensc_vector_glibc_a_AR = $(AR) $(ARFLAGS)
+libensc_vector_glibc_a_LIBADD =
+am__objects_16 =  \
+       ensc_vector/libensc_vector_glibc_a-vector-clear.$(OBJEXT) \
+       ensc_vector/libensc_vector_glibc_a-vector-foreach.$(OBJEXT) \
+       ensc_vector/libensc_vector_glibc_a-vector-free.$(OBJEXT) \
+       ensc_vector/libensc_vector_glibc_a-vector-init.$(OBJEXT) \
+       ensc_vector/libensc_vector_glibc_a-vector-insert.$(OBJEXT) \
+       ensc_vector/libensc_vector_glibc_a-vector-popback.$(OBJEXT) \
+       ensc_vector/libensc_vector_glibc_a-vector-pushback.$(OBJEXT) \
+       ensc_vector/libensc_vector_glibc_a-vector-resize.$(OBJEXT) \
+       ensc_vector/libensc_vector_glibc_a-vector-search.$(OBJEXT) \
+       ensc_vector/libensc_vector_glibc_a-vector-searchselforg.$(OBJEXT) \
+       ensc_vector/libensc_vector_glibc_a-vector-sort.$(OBJEXT) \
+       ensc_vector/libensc_vector_glibc_a-vector-unique.$(OBJEXT) \
+       ensc_vector/libensc_vector_glibc_a-vector-zeroend.$(OBJEXT) \
+       ensc_vector/libensc_vector_glibc_a-list-at.$(OBJEXT) \
+       ensc_vector/libensc_vector_glibc_a-list-add.$(OBJEXT) \
+       ensc_vector/libensc_vector_glibc_a-list-free.$(OBJEXT) \
+       ensc_vector/libensc_vector_glibc_a-list-init.$(OBJEXT) \
+       ensc_vector/libensc_vector_glibc_a-list-insertinternal.$(OBJEXT) \
+       ensc_vector/libensc_vector_glibc_a-list-search.$(OBJEXT) \
+       ensc_vector/libensc_vector_glibc_a-list-searchselforg.$(OBJEXT)
+am_libensc_vector_glibc_a_OBJECTS = $(am__objects_16)
+libensc_vector_glibc_a_OBJECTS = $(am_libensc_vector_glibc_a_OBJECTS)
+libLTLIBRARIES_INSTALL = $(INSTALL)
+pkglibLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(lib_LTLIBRARIES) $(pkglib_LTLIBRARIES)
+lib_libvserver_la_LIBADD =
+am__lib_libvserver_la_SOURCES_DIST = lib/syscall.c lib/checkversion.c \
+       lib/isdirectory.c lib/isfile.c lib/islink.c \
+       lib/getnbipv4root.c lib/getversion.c lib/capabilities.c \
+       lib/getfilecontext.c lib/getinsecurebcaps.c lib/getxidtype.c \
+       lib/isdynamicxid.c lib/issupported.c lib/issupportedstring.c \
+       lib/listparser_uint32.c lib/listparser_uint64.c \
+       lib/personalityflag.c lib/personalityflag_list.c \
+       lib/personalitytype.c lib/syscall-syscall.c \
+       lib/val2text-t2v-uint32.c lib/val2text-t2v-uint64.c \
+       lib/val2text-v2t-uint32.c lib/val2text-v2t-uint64.c \
+       lib/parselimit.c lib/getprocentry-legacy.c lib/cflags-compat.c \
+       lib/cflags_list-compat.c lib/createskeleton.c \
+       lib/getvserverbyctx.c lib/getvserverbyctx-compat.hc \
+       lib/getvserverbyctx-v13.hc lib/getvservercfgstyle.c \
+       lib/getvserverappdir.c lib/getvservercfgdir.c \
+       lib/getvserverctx.c lib/getvservername.c lib/getvservervdir.c \
+       lib/xidopt2xid.c lib/syscall_rlimit.c \
+       lib/syscall_rlimit-v11.hc lib/syscall_kill.c \
+       lib/syscall_kill-v11.hc lib/syscall_ctxcreate.c \
+       lib/syscall_ctxcreate-v13.hc lib/syscall_ctxmigrate.c \
+       lib/syscall_ctxmigrate-v13.hc \
+       lib/syscall_cleanupnamespace-v13.hc \
+       lib/syscall_cleanupnamespace.c \
+       lib/syscall_enternamespace-v13.hc lib/syscall_enternamespace.c \
+       lib/syscall_getccaps-v13.hc lib/syscall_getccaps.c \
+       lib/syscall_getcflags-v13.hc lib/syscall_getcflags.c \
+       lib/syscall_getiattr-fscompat.hc lib/syscall_getiattr-v13.hc \
+       lib/syscall_getiattr.c lib/syscall_getncaps-net.hc \
+       lib/syscall_getncaps.c lib/syscall_getnflags-net.hc \
+       lib/syscall_getnflags.c lib/syscall_getnxinfo-net.hc \
+       lib/syscall_getnxinfo.c lib/syscall_gettasknid-net.hc \
+       lib/syscall_gettasknid.c lib/syscall_gettaskxid-oldproc.hc \
+       lib/syscall_gettaskxid-v13.hc lib/syscall_gettaskxid.c \
+       lib/syscall_getvhiname-olduts.hc lib/syscall_getvhiname-v13.hc \
+       lib/syscall_getvhiname.c lib/syscall_getvxinfo-oldproc.hc \
+       lib/syscall_getvxinfo-v13.hc lib/syscall_getvxinfo.c \
+       lib/syscall_netadd-net.hc lib/syscall_netadd.c \
+       lib/syscall_netcreate-net.hc lib/syscall_netcreate.c \
+       lib/syscall_netmigrate-net.hc lib/syscall_netmigrate.c \
+       lib/syscall_netremove-net.hc lib/syscall_netremove.c \
+       lib/syscall_setccaps-v13.hc lib/syscall_setccaps.c \
+       lib/syscall_setcflags-v13.hc lib/syscall_setcflags.c \
+       lib/syscall_setiattr-fscompat.hc lib/syscall_setiattr-v13.hc \
+       lib/syscall_setiattr.c lib/syscall_setnamespace-v13.hc \
+       lib/syscall_setnamespace.c lib/syscall_setncaps-net.hc \
+       lib/syscall_setncaps.c lib/syscall_setnflags-net.hc \
+       lib/syscall_setnflags.c lib/syscall_setsched-v13.hc \
+       lib/syscall_setsched.c lib/syscall_setvhiname-olduts.hc \
+       lib/syscall_setvhiname-v13.hc lib/syscall_setvhiname.c \
+       lib/syscall_waitexit.c lib/syscall_waitexit-v13.hc \
+       lib/bcaps-v13.c lib/bcaps_list-v13.c lib/ccaps-v13.c \
+       lib/ccaps_list-v13.c lib/cflags-v13.c lib/cflags_list-v13.c \
+       lib/ncaps-net.c lib/ncaps_list-net.c lib/nflags-net.c \
+       lib/nflags_list-net.c lib/syscall_adddlimit-v13.hc \
+       lib/syscall_adddlimit.c lib/syscall_getdlimit-v13.hc \
+       lib/syscall_getdlimit.c lib/syscall_remdlimit-v13.hc \
+       lib/syscall_remdlimit.c lib/syscall_setdlimit-v13.hc \
+       lib/syscall_setdlimit.c ensc_fmt/fmt-32.c ensc_fmt/fmt-64.c \
+       ensc_fmt/fmtx-32.c ensc_fmt/fmtx-64.c ensc_fmt/fmt-tai64n.c \
+       ensc_fmt/fmt.h ensc_fmt/fmt.hc ensc_fmt/fmtx.hc \
+       ensc_fmt/fmt-internal.h
+am__objects_17 = lib/lib_libvserver_la-getprocentry-legacy.lo
+am__objects_18 = lib/lib_libvserver_la-cflags-compat.lo \
+       lib/lib_libvserver_la-cflags_list-compat.lo
+am__objects_19 = lib/lib_libvserver_la-createskeleton.lo \
+       lib/lib_libvserver_la-getvserverbyctx.lo \
+       lib/lib_libvserver_la-getvservercfgstyle.lo \
+       lib/lib_libvserver_la-getvserverappdir.lo \
+       lib/lib_libvserver_la-getvservercfgdir.lo \
+       lib/lib_libvserver_la-getvserverctx.lo \
+       lib/lib_libvserver_la-getvservername.lo \
+       lib/lib_libvserver_la-getvservervdir.lo \
+       lib/lib_libvserver_la-xidopt2xid.lo
+am__objects_20 = lib/lib_libvserver_la-syscall_rlimit.lo \
+       lib/lib_libvserver_la-syscall_kill.lo
+@ENSC_HAVE_C99_COMPILER_TRUE@am__objects_21 = lib/lib_libvserver_la-syscall_adddlimit.lo \
+@ENSC_HAVE_C99_COMPILER_TRUE@  lib/lib_libvserver_la-syscall_getdlimit.lo \
+@ENSC_HAVE_C99_COMPILER_TRUE@  lib/lib_libvserver_la-syscall_remdlimit.lo \
+@ENSC_HAVE_C99_COMPILER_TRUE@  lib/lib_libvserver_la-syscall_setdlimit.lo
+am__objects_22 = lib/lib_libvserver_la-syscall_ctxcreate.lo \
+       lib/lib_libvserver_la-syscall_ctxmigrate.lo \
+       lib/lib_libvserver_la-syscall_cleanupnamespace.lo \
+       lib/lib_libvserver_la-syscall_enternamespace.lo \
+       lib/lib_libvserver_la-syscall_getccaps.lo \
+       lib/lib_libvserver_la-syscall_getcflags.lo \
+       lib/lib_libvserver_la-syscall_getiattr.lo \
+       lib/lib_libvserver_la-syscall_getncaps.lo \
+       lib/lib_libvserver_la-syscall_getnflags.lo \
+       lib/lib_libvserver_la-syscall_getnxinfo.lo \
+       lib/lib_libvserver_la-syscall_gettasknid.lo \
+       lib/lib_libvserver_la-syscall_gettaskxid.lo \
+       lib/lib_libvserver_la-syscall_getvhiname.lo \
+       lib/lib_libvserver_la-syscall_getvxinfo.lo \
+       lib/lib_libvserver_la-syscall_netadd.lo \
+       lib/lib_libvserver_la-syscall_netcreate.lo \
+       lib/lib_libvserver_la-syscall_netmigrate.lo \
+       lib/lib_libvserver_la-syscall_netremove.lo \
+       lib/lib_libvserver_la-syscall_setccaps.lo \
+       lib/lib_libvserver_la-syscall_setcflags.lo \
+       lib/lib_libvserver_la-syscall_setiattr.lo \
+       lib/lib_libvserver_la-syscall_setnamespace.lo \
+       lib/lib_libvserver_la-syscall_setncaps.lo \
+       lib/lib_libvserver_la-syscall_setnflags.lo \
+       lib/lib_libvserver_la-syscall_setsched.lo \
+       lib/lib_libvserver_la-syscall_setvhiname.lo \
+       lib/lib_libvserver_la-syscall_waitexit.lo \
+       lib/lib_libvserver_la-bcaps-v13.lo \
+       lib/lib_libvserver_la-bcaps_list-v13.lo \
+       lib/lib_libvserver_la-ccaps-v13.lo \
+       lib/lib_libvserver_la-ccaps_list-v13.lo \
+       lib/lib_libvserver_la-cflags-v13.lo \
+       lib/lib_libvserver_la-cflags_list-v13.lo \
+       lib/lib_libvserver_la-ncaps-net.lo \
+       lib/lib_libvserver_la-ncaps_list-net.lo \
+       lib/lib_libvserver_la-nflags-net.lo \
+       lib/lib_libvserver_la-nflags_list-net.lo $(am__objects_21)
+am__objects_23 = ensc_fmt/lib_libvserver_la-fmt-32.lo \
+       ensc_fmt/lib_libvserver_la-fmt-64.lo \
+       ensc_fmt/lib_libvserver_la-fmtx-32.lo \
+       ensc_fmt/lib_libvserver_la-fmtx-64.lo \
+       ensc_fmt/lib_libvserver_la-fmt-tai64n.lo
+am__objects_24 = lib/lib_libvserver_la-syscall.lo \
+       lib/lib_libvserver_la-checkversion.lo \
+       lib/lib_libvserver_la-isdirectory.lo \
+       lib/lib_libvserver_la-isfile.lo \
+       lib/lib_libvserver_la-islink.lo \
+       lib/lib_libvserver_la-getnbipv4root.lo \
+       lib/lib_libvserver_la-getversion.lo \
+       lib/lib_libvserver_la-capabilities.lo \
+       lib/lib_libvserver_la-getfilecontext.lo \
+       lib/lib_libvserver_la-getinsecurebcaps.lo \
+       lib/lib_libvserver_la-getxidtype.lo \
+       lib/lib_libvserver_la-isdynamicxid.lo \
+       lib/lib_libvserver_la-issupported.lo \
+       lib/lib_libvserver_la-issupportedstring.lo \
+       lib/lib_libvserver_la-listparser_uint32.lo \
+       lib/lib_libvserver_la-listparser_uint64.lo \
+       lib/lib_libvserver_la-personalityflag.lo \
+       lib/lib_libvserver_la-personalityflag_list.lo \
+       lib/lib_libvserver_la-personalitytype.lo \
+       lib/lib_libvserver_la-syscall-syscall.lo \
+       lib/lib_libvserver_la-val2text-t2v-uint32.lo \
+       lib/lib_libvserver_la-val2text-t2v-uint64.lo \
+       lib/lib_libvserver_la-val2text-v2t-uint32.lo \
+       lib/lib_libvserver_la-val2text-v2t-uint64.lo \
+       lib/lib_libvserver_la-parselimit.lo $(am__objects_17) \
+       $(am__objects_18) $(am__objects_19) $(am__objects_20) \
+       $(am__objects_22) $(am__objects_23)
+am_lib_libvserver_la_OBJECTS = $(am__objects_24)
+lib_libvserver_la_OBJECTS = $(am_lib_libvserver_la_OBJECTS)
+am__DEPENDENCIES_1 = lib/libvserver.la
+src_rpm_fake_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_src_rpm_fake_la_OBJECTS = src/src_rpm_fake_la-rpm-fake.lo
+src_rpm_fake_la_OBJECTS = $(am_src_rpm_fake_la_OBJECTS)
+am__EXEEXT_1 =
+am__EXEEXT_2 = src/testsuite/rpm-fake-test$(EXEEXT)
+am__EXEEXT_3 = src/testsuite/vunify-functest$(EXEEXT) \
+       src/testsuite/chcontext-test$(EXEEXT) \
+       src/testsuite/chbind-test$(EXEEXT)
+@ENSC_HAVE_C99_COMPILER_TRUE@am__EXEEXT_4 = lib_internal/testsuite/filecfg-ml$(EXEEXT) \
+@ENSC_HAVE_C99_COMPILER_TRUE@  lib_internal/testsuite/copy$(EXEEXT) \
+@ENSC_HAVE_C99_COMPILER_TRUE@  lib_internal/testsuite/sigbus$(EXEEXT)
+legacyPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+am__EXEEXT_5 = tests/getctx$(EXEEXT) tests/getinitpid$(EXEEXT) \
+       tests/vserver-info$(EXEEXT)
+am__EXEEXT_6 = src/vunify$(EXEEXT) src/vcopy$(EXEEXT)
+@ENSC_HAVE_C99_COMPILER_TRUE@am__EXEEXT_7 = $(am__EXEEXT_6)
+@ENSC_HAVE_CXX_COMPILER_TRUE@am__EXEEXT_8 = $(am__EXEEXT_1)
+@ENSC_HAVE_BEECRYPT_TRUE@@ENSC_HAVE_C99_COMPILER_TRUE@am__EXEEXT_9 = src/vhashify$(EXEEXT)
+@ENSC_HAVE_C99_COMPILER_TRUE@am__EXEEXT_10 = vserver-start/vserver.start.bin$(EXEEXT)
 pkglibPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-am__EXEEXT_3 = src/chbind$(EXEEXT) src/chcontext$(EXEEXT) \
-       src/rebootmgr$(EXEEXT) src/reducecap$(EXEEXT) \
-       src/vlimit$(EXEEXT) src/vdu$(EXEEXT) src/vfiles$(EXEEXT) \
-       src/vkill$(EXEEXT) src/vserver-stat$(EXEEXT)
+@ENSC_HAVE_C99_COMPILER_TRUE@am__EXEEXT_11 = src/vdlimit$(EXEEXT)
 sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-PROGRAMS = $(noinst_PROGRAMS) $(pkglib_PROGRAMS) $(sbin_PROGRAMS)
+PROGRAMS = $(legacy_PROGRAMS) $(noinst_PROGRAMS) $(pkglib_PROGRAMS) \
+       $(sbin_PROGRAMS)
+am_ensc_vector_testsuite_test1_OBJECTS =  \
+       ensc_vector/testsuite/test1.$(OBJEXT)
+ensc_vector_testsuite_test1_OBJECTS =  \
+       $(am_ensc_vector_testsuite_test1_OBJECTS)
+@ENSC_USE_GLIBC_FALSE@am__DEPENDENCIES_2 =  \
+@ENSC_USE_GLIBC_FALSE@ lib-glibc-not-enabled-error.a
+@ENSC_USE_GLIBC_TRUE@am__DEPENDENCIES_2 = libensc_vector-glibc.a
+@ENSC_USE_DIETLIBC_FALSE@am__DEPENDENCIES_3 =  \
+@ENSC_USE_DIETLIBC_FALSE@      lib-dietlibc-not-enabled-error.a
+@ENSC_USE_DIETLIBC_TRUE@am__DEPENDENCIES_3 = libensc_vector-diet.a
+@ENSC_USE_DIETLIBC_FALSE@@ENSC_USE_GLIBC_FALSE@am__DEPENDENCIES_4 = lib-nolib-enabled-error.a
+@ENSC_USE_DIETLIBC_FALSE@@ENSC_USE_GLIBC_TRUE@am__DEPENDENCIES_4 = $(am__DEPENDENCIES_2)
+@ENSC_USE_DIETLIBC_TRUE@am__DEPENDENCIES_4 = $(am__DEPENDENCIES_3)
+ensc_vector_testsuite_test1_DEPENDENCIES = $(am__DEPENDENCIES_4)
+am_ensc_vector_testsuite_test2_OBJECTS =  \
+       ensc_vector/testsuite/test2.$(OBJEXT)
+ensc_vector_testsuite_test2_OBJECTS =  \
+       $(am_ensc_vector_testsuite_test2_OBJECTS)
+ensc_vector_testsuite_test2_DEPENDENCIES = $(am__DEPENDENCIES_4)
+am_lib_testsuite_cflags_OBJECTS =  \
+       lib/testsuite/lib_testsuite_cflags-cflags.$(OBJEXT)
+lib_testsuite_cflags_OBJECTS = $(am_lib_testsuite_cflags_OBJECTS)
+@USE_DIETLIBC_FALSE@am__DEPENDENCIES_5 =  \
+@USE_DIETLIBC_FALSE@   lib-dietlibc-not-enabled-error.a
+@USE_DIETLIBC_TRUE@am__DEPENDENCIES_5 = lib/libvserver.a
+@USE_DIETLIBC_FALSE@am__DEPENDENCIES_6 = lib/libvserver.la
+@USE_DIETLIBC_TRUE@am__DEPENDENCIES_6 = $(am__DEPENDENCIES_5)
+lib_testsuite_cflags_DEPENDENCIES = $(am__DEPENDENCIES_6)
+am_lib_testsuite_fmt_OBJECTS =  \
+       lib/testsuite/lib_testsuite_fmt-fmt.$(OBJEXT)
+lib_testsuite_fmt_OBJECTS = $(am_lib_testsuite_fmt_OBJECTS)
+lib_testsuite_fmt_DEPENDENCIES = $(am__DEPENDENCIES_6)
+am_lib_testsuite_parselimit_OBJECTS =  \
+       lib/testsuite/lib_testsuite_parselimit-parselimit.$(OBJEXT)
+lib_testsuite_parselimit_OBJECTS =  \
+       $(am_lib_testsuite_parselimit_OBJECTS)
+lib_testsuite_parselimit_DEPENDENCIES = $(am__DEPENDENCIES_6)
+am_lib_testsuite_personality_OBJECTS =  \
+       lib/testsuite/lib_testsuite_personality-personality.$(OBJEXT)
+lib_testsuite_personality_OBJECTS =  \
+       $(am_lib_testsuite_personality_OBJECTS)
+lib_testsuite_personality_DEPENDENCIES = $(am__DEPENDENCIES_6)
+am_lib_internal_testsuite_command_OBJECTS =  \
+       lib_internal/testsuite/command.$(OBJEXT)
+lib_internal_testsuite_command_OBJECTS =  \
+       $(am_lib_internal_testsuite_command_OBJECTS)
+am__DEPENDENCIES_7 = lib_internal/libinternal-glibc.a
+lib_internal_testsuite_command_DEPENDENCIES = $(am__DEPENDENCIES_7) \
+       $(am__DEPENDENCIES_2)
+am_lib_internal_testsuite_copy_OBJECTS =  \
+       lib_internal/testsuite/copy.$(OBJEXT)
+lib_internal_testsuite_copy_OBJECTS =  \
+       $(am_lib_internal_testsuite_copy_OBJECTS)
+lib_internal_testsuite_copy_DEPENDENCIES = $(am__DEPENDENCIES_7)
+am_lib_internal_testsuite_filecfg_ml_OBJECTS =  \
+       lib_internal/testsuite/filecfg-ml.$(OBJEXT)
+lib_internal_testsuite_filecfg_ml_OBJECTS =  \
+       $(am_lib_internal_testsuite_filecfg_ml_OBJECTS)
+lib_internal_testsuite_filecfg_ml_DEPENDENCIES =  \
+       $(am__DEPENDENCIES_7)
+am_lib_internal_testsuite_sigbus_OBJECTS =  \
+       lib_internal/testsuite/sigbus.$(OBJEXT)
+lib_internal_testsuite_sigbus_OBJECTS =  \
+       $(am_lib_internal_testsuite_sigbus_OBJECTS)
+lib_internal_testsuite_sigbus_LDADD = $(LDADD)
 am_src_capchroot_OBJECTS = src/capchroot.$(OBJEXT)
 src_capchroot_OBJECTS = $(am_src_capchroot_OBJECTS)
-src_capchroot_DEPENDENCIES = lib/libvserver.a
+am__DEPENDENCIES_8 =
+am__DEPENDENCIES_9 = $(am__DEPENDENCIES_6) $(am__DEPENDENCIES_8)
+src_capchroot_DEPENDENCIES = $(am__DEPENDENCIES_9)
+am_src_chain_echo_OBJECTS = src/chain-echo.$(OBJEXT)
+src_chain_echo_OBJECTS = $(am_src_chain_echo_OBJECTS)
+src_chain_echo_LDADD = $(LDADD)
 am_src_chbind_OBJECTS = src/chbind.$(OBJEXT)
 src_chbind_OBJECTS = $(am_src_chbind_OBJECTS)
-src_chbind_DEPENDENCIES = lib/libvserver.a
-am_src_chcontext_OBJECTS = src/chcontext.$(OBJEXT)
-src_chcontext_OBJECTS = $(am_src_chcontext_OBJECTS)
-src_chcontext_DEPENDENCIES = lib/libvserver.a
+src_chbind_DEPENDENCIES = $(am__DEPENDENCIES_9)
+am_src_chcontext_compat_OBJECTS = src/chcontext.$(OBJEXT)
+src_chcontext_compat_OBJECTS = $(am_src_chcontext_compat_OBJECTS)
+@USE_DIETLIBC_FALSE@am__DEPENDENCIES_10 =  \
+@USE_DIETLIBC_FALSE@   lib-dietlibc-not-enabled-error.a
+@USE_DIETLIBC_TRUE@am__DEPENDENCIES_10 =  \
+@USE_DIETLIBC_TRUE@    lib_internal/libinternal-diet.a
+@USE_DIETLIBC_FALSE@am__DEPENDENCIES_11 = $(am__DEPENDENCIES_7)
+@USE_DIETLIBC_TRUE@am__DEPENDENCIES_11 = $(am__DEPENDENCIES_10)
+src_chcontext_compat_DEPENDENCIES = $(am__DEPENDENCIES_9) \
+       $(am__DEPENDENCIES_11)
+src_check_unixfile_SOURCES = src/check-unixfile.c
+src_check_unixfile_OBJECTS = src/check-unixfile.$(OBJEXT)
+src_check_unixfile_LDADD = $(LDADD)
+am_src_chroot_sh_OBJECTS = src/chroot-sh.$(OBJEXT)
+src_chroot_sh_OBJECTS = $(am_src_chroot_sh_OBJECTS)
+src_chroot_sh_LDADD = $(LDADD)
+am_src_chxid_OBJECTS = src/fstool.$(OBJEXT) src/chxid.$(OBJEXT)
+src_chxid_OBJECTS = $(am_src_chxid_OBJECTS)
+src_chxid_DEPENDENCIES = $(am__DEPENDENCIES_11) $(am__DEPENDENCIES_9)
+am_src_exec_cd_OBJECTS = src/exec-cd.$(OBJEXT)
+src_exec_cd_OBJECTS = $(am_src_exec_cd_OBJECTS)
+src_exec_cd_LDADD = $(LDADD)
+am_src_exec_ulimit_OBJECTS = src/exec-ulimit.$(OBJEXT)
+src_exec_ulimit_OBJECTS = $(am_src_exec_ulimit_OBJECTS)
+src_exec_ulimit_LDADD = $(LDADD)
 am_src_fakerunlevel_OBJECTS = src/fakerunlevel.$(OBJEXT)
 src_fakerunlevel_OBJECTS = $(am_src_fakerunlevel_OBJECTS)
 src_fakerunlevel_LDADD = $(LDADD)
 am_src_filetime_OBJECTS = src/filetime.$(OBJEXT)
 src_filetime_OBJECTS = $(am_src_filetime_OBJECTS)
-src_filetime_LDADD = $(LDADD)
+src_filetime_DEPENDENCIES = $(am__DEPENDENCIES_9)
 am_src_ifspec_OBJECTS = src/ifspec.$(OBJEXT)
 src_ifspec_OBJECTS = $(am_src_ifspec_OBJECTS)
 src_ifspec_LDADD = $(LDADD)
+am_src_keep_ctx_alive_OBJECTS = src/keep-ctx-alive.$(OBJEXT)
+src_keep_ctx_alive_OBJECTS = $(am_src_keep_ctx_alive_OBJECTS)
+src_keep_ctx_alive_DEPENDENCIES = $(am__DEPENDENCIES_9)
 am_src_listdevip_OBJECTS = src/listdevip.$(OBJEXT)
 src_listdevip_OBJECTS = $(am_src_listdevip_OBJECTS)
 src_listdevip_LDADD = $(LDADD)
+am_src_lockfile_OBJECTS = src/lockfile.$(OBJEXT)
+src_lockfile_OBJECTS = $(am_src_lockfile_OBJECTS)
+src_lockfile_LDADD = $(LDADD)
+am_src_lsxid_OBJECTS = src/fstool.$(OBJEXT) src/lsxid.$(OBJEXT)
+src_lsxid_OBJECTS = $(am_src_lsxid_OBJECTS)
+src_lsxid_DEPENDENCIES = $(am__DEPENDENCIES_11) $(am__DEPENDENCIES_9) \
+       $(am__DEPENDENCIES_4)
+am_src_mask2prefix_OBJECTS = src/mask2prefix.$(OBJEXT)
+src_mask2prefix_OBJECTS = $(am_src_mask2prefix_OBJECTS)
+src_mask2prefix_LDADD = $(LDADD)
 am_src_parserpmdump_OBJECTS = src/parserpmdump.$(OBJEXT)
 src_parserpmdump_OBJECTS = $(am_src_parserpmdump_OBJECTS)
 src_parserpmdump_LDADD = $(LDADD)
 am_src_readlink_OBJECTS = src/readlink.$(OBJEXT)
 src_readlink_OBJECTS = $(am_src_readlink_OBJECTS)
 src_readlink_LDADD = $(LDADD)
-am_src_rebootmgr_OBJECTS = src/src_rebootmgr-rebootmgr.$(OBJEXT)
+am_src_rebootmgr_OBJECTS = src/rebootmgr.$(OBJEXT)
 src_rebootmgr_OBJECTS = $(am_src_rebootmgr_OBJECTS)
 src_rebootmgr_LDADD = $(LDADD)
 am_src_reducecap_OBJECTS = src/reducecap.$(OBJEXT)
 src_reducecap_OBJECTS = $(am_src_reducecap_OBJECTS)
-src_reducecap_DEPENDENCIES = lib/libvserver.a
-am_src_showattr_OBJECTS = src/showattr.$(OBJEXT)
+src_reducecap_DEPENDENCIES = $(am__DEPENDENCIES_9)
+am_src_rpm_fake_resolver_OBJECTS = src/rpm-fake-resolver.$(OBJEXT)
+src_rpm_fake_resolver_OBJECTS = $(am_src_rpm_fake_resolver_OBJECTS)
+src_rpm_fake_resolver_DEPENDENCIES = $(am__DEPENDENCIES_9)
+am_src_save_ctxinfo_OBJECTS = src/save_ctxinfo.$(OBJEXT)
+src_save_ctxinfo_OBJECTS = $(am_src_save_ctxinfo_OBJECTS)
+src_save_ctxinfo_DEPENDENCIES = $(am__DEPENDENCIES_9)
+am_src_secure_mount_OBJECTS = src/secure-mount.$(OBJEXT)
+src_secure_mount_OBJECTS = $(am_src_secure_mount_OBJECTS)
+src_secure_mount_DEPENDENCIES = $(am__DEPENDENCIES_9)
+am_src_setattr_OBJECTS = src/fstool.$(OBJEXT) src/setattr.$(OBJEXT)
+src_setattr_OBJECTS = $(am_src_setattr_OBJECTS)
+src_setattr_DEPENDENCIES = $(am__DEPENDENCIES_11) \
+       $(am__DEPENDENCIES_9)
+am_src_showattr_OBJECTS = src/fstool.$(OBJEXT) src/showattr.$(OBJEXT)
 src_showattr_OBJECTS = $(am_src_showattr_OBJECTS)
-src_showattr_LDADD = $(LDADD)
-am_src_showperm_OBJECTS = src/showperm.$(OBJEXT)
-src_showperm_OBJECTS = $(am_src_showperm_OBJECTS)
+src_showattr_DEPENDENCIES = $(am__DEPENDENCIES_11) \
+       $(am__DEPENDENCIES_9)
+src_showperm_SOURCES = src/showperm.c
+src_showperm_OBJECTS = src/showperm.$(OBJEXT)
 src_showperm_LDADD = $(LDADD)
-am_src_vbuild_OBJECTS = src/vbuild.$(OBJEXT) src/vutil.$(OBJEXT)
-src_vbuild_OBJECTS = $(am_src_vbuild_OBJECTS)
-src_vbuild_LDADD = $(LDADD)
-am_src_vcheck_OBJECTS = src/vcheck.$(OBJEXT) src/vutil.$(OBJEXT)
-src_vcheck_OBJECTS = $(am_src_vcheck_OBJECTS)
-src_vcheck_LDADD = $(LDADD)
+src_sigexec_SOURCES = src/sigexec.c
+src_sigexec_OBJECTS = src/sigexec.$(OBJEXT)
+src_sigexec_LDADD = $(LDADD)
+am_src_testsuite_chbind_test_OBJECTS =  \
+       src/testsuite/chbind-test.$(OBJEXT)
+src_testsuite_chbind_test_OBJECTS =  \
+       $(am_src_testsuite_chbind_test_OBJECTS)
+src_testsuite_chbind_test_DEPENDENCIES = lib/libvserver.la
+am_src_testsuite_chcontext_test_OBJECTS =  \
+       src/testsuite/chcontext-test.$(OBJEXT)
+src_testsuite_chcontext_test_OBJECTS =  \
+       $(am_src_testsuite_chcontext_test_OBJECTS)
+src_testsuite_chcontext_test_DEPENDENCIES = lib/libvserver.la \
+       $(am__DEPENDENCIES_11)
+am_src_testsuite_rpm_fake_test_OBJECTS =  \
+       src/testsuite/rpm-fake-test.$(OBJEXT)
+src_testsuite_rpm_fake_test_OBJECTS =  \
+       $(am_src_testsuite_rpm_fake_test_OBJECTS)
+src_testsuite_rpm_fake_test_LDADD = $(LDADD)
+am_src_testsuite_vunify_functest_OBJECTS = src/testsuite/src_testsuite_vunify_functest-vunify-functest.$(OBJEXT)
+src_testsuite_vunify_functest_OBJECTS =  \
+       $(am_src_testsuite_vunify_functest_OBJECTS)
+src_testsuite_vunify_functest_DEPENDENCIES = $(am__DEPENDENCIES_11)
+am_src_vattribute_OBJECTS = src/vattribute.$(OBJEXT)
+src_vattribute_OBJECTS = $(am_src_vattribute_OBJECTS)
+src_vattribute_DEPENDENCIES = $(am__DEPENDENCIES_9)
+am_src_vcontext_OBJECTS = src/vcontext.$(OBJEXT)
+src_vcontext_OBJECTS = $(am_src_vcontext_OBJECTS)
+src_vcontext_DEPENDENCIES = $(am__DEPENDENCIES_9) \
+       $(am__DEPENDENCIES_11)
+am_src_vcopy_OBJECTS = src/vcopy.$(OBJEXT)
+src_vcopy_OBJECTS = $(am_src_vcopy_OBJECTS)
+src_vcopy_DEPENDENCIES = $(am__DEPENDENCIES_11) $(am__DEPENDENCIES_9)
+am_src_vdlimit_OBJECTS = src/vdlimit.$(OBJEXT)
+src_vdlimit_OBJECTS = $(am_src_vdlimit_OBJECTS)
+src_vdlimit_DEPENDENCIES = $(am__DEPENDENCIES_9)
 am_src_vdu_OBJECTS = src/vdu.$(OBJEXT)
 src_vdu_OBJECTS = $(am_src_vdu_OBJECTS)
 src_vdu_LDADD = $(LDADD)
-am_src_vfiles_OBJECTS = src/vfiles.$(OBJEXT) src/vutil.$(OBJEXT)
-src_vfiles_OBJECTS = $(am_src_vfiles_OBJECTS)
-src_vfiles_LDADD = $(LDADD)
+am_src_vhashify_OBJECTS = src/vhashify.$(OBJEXT)
+src_vhashify_OBJECTS = $(am_src_vhashify_OBJECTS)
+@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@src_vhashify_DEPENDENCIES =  \
+@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@        $(am__DEPENDENCIES_7) \
+@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@        $(am__DEPENDENCIES_2) \
+@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@        $(am__DEPENDENCIES_1)
+@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@src_vhashify_DEPENDENCIES =  \
+@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@ $(am__DEPENDENCIES_11) \
+@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@ $(am__DEPENDENCIES_4) \
+@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@ $(am__DEPENDENCIES_9)
 am_src_vkill_OBJECTS = src/src_vkill-vkill.$(OBJEXT)
 src_vkill_OBJECTS = $(am_src_vkill_OBJECTS)
-src_vkill_DEPENDENCIES = lib/libvserver.a
+src_vkill_DEPENDENCIES = $(am__DEPENDENCIES_9)
 am_src_vlimit_OBJECTS = src/vlimit.$(OBJEXT)
 src_vlimit_OBJECTS = $(am_src_vlimit_OBJECTS)
-src_vlimit_DEPENDENCIES = lib/libvserver.a
+src_vlimit_DEPENDENCIES = $(am__DEPENDENCIES_9)
+am_src_vnamespace_OBJECTS = src/vnamespace.$(OBJEXT)
+src_vnamespace_OBJECTS = $(am_src_vnamespace_OBJECTS)
+src_vnamespace_DEPENDENCIES = $(am__DEPENDENCIES_9) \
+       $(am__DEPENDENCIES_11)
+am_src_vps_OBJECTS = src/vps.$(OBJEXT)
+src_vps_OBJECTS = $(am_src_vps_OBJECTS)
+src_vps_DEPENDENCIES = $(am__DEPENDENCIES_11) $(am__DEPENDENCIES_9)
 am_src_vreboot_OBJECTS = src/vreboot.$(OBJEXT)
 src_vreboot_OBJECTS = $(am_src_vreboot_OBJECTS)
 src_vreboot_LDADD = $(LDADD)
+src_vrsetup_SOURCES = src/vrsetup.c
+src_vrsetup_OBJECTS = src/vrsetup.$(OBJEXT)
+src_vrsetup_LDADD = $(LDADD)
+am_src_vsched_OBJECTS = src/vsched.$(OBJEXT)
+src_vsched_OBJECTS = $(am_src_vsched_OBJECTS)
+src_vsched_DEPENDENCIES = $(am__DEPENDENCIES_9)
+am_src_vserver_info_OBJECTS = src/vserver-info.$(OBJEXT)
+src_vserver_info_OBJECTS = $(am_src_vserver_info_OBJECTS)
+src_vserver_info_DEPENDENCIES = $(am__DEPENDENCIES_11) \
+       $(am__DEPENDENCIES_9)
 am_src_vserver_stat_OBJECTS = src/vserver-stat.$(OBJEXT)
 src_vserver_stat_OBJECTS = $(am_src_vserver_stat_OBJECTS)
-src_vserver_stat_DEPENDENCIES = lib/libvserver.a
-am_src_vunify_OBJECTS = src/src_vunify-vunify.$(OBJEXT) \
-       src/src_vunify-vutil.$(OBJEXT)
+src_vserver_stat_DEPENDENCIES = $(am__DEPENDENCIES_11) \
+       $(am__DEPENDENCIES_9) $(am__DEPENDENCIES_4)
+am_src_vshelper_sync_OBJECTS = src/vshelper-sync.$(OBJEXT)
+src_vshelper_sync_OBJECTS = $(am_src_vshelper_sync_OBJECTS)
+src_vshelper_sync_LDADD = $(LDADD)
+am_src_vuname_OBJECTS = src/vuname.$(OBJEXT)
+src_vuname_OBJECTS = $(am_src_vuname_OBJECTS)
+src_vuname_DEPENDENCIES = $(am__DEPENDENCIES_9)
+am_src_vunify_OBJECTS = src/vunify.$(OBJEXT)
 src_vunify_OBJECTS = $(am_src_vunify_OBJECTS)
-src_vunify_LDADD = $(LDADD)
+src_vunify_DEPENDENCIES = $(am__DEPENDENCIES_11) $(am__DEPENDENCIES_9)
+am_src_vwait_OBJECTS = src/vwait.$(OBJEXT)
+src_vwait_OBJECTS = $(am_src_vwait_OBJECTS)
+src_vwait_DEPENDENCIES = $(am__DEPENDENCIES_9)
 am_tests_escaperoot_OBJECTS = tests/escaperoot.$(OBJEXT)
 tests_escaperoot_OBJECTS = $(am_tests_escaperoot_OBJECTS)
 tests_escaperoot_LDADD = $(LDADD)
 am_tests_forkbomb_OBJECTS = tests/forkbomb.$(OBJEXT)
 tests_forkbomb_OBJECTS = $(am_tests_forkbomb_OBJECTS)
 tests_forkbomb_LDADD = $(LDADD)
+am_tests_getctx_OBJECTS = tests/getctx.$(OBJEXT)
+tests_getctx_OBJECTS = $(am_tests_getctx_OBJECTS)
+tests_getctx_DEPENDENCIES = $(am__DEPENDENCIES_9)
+am_tests_getinitpid_OBJECTS = tests/getinitpid.$(OBJEXT)
+tests_getinitpid_OBJECTS = $(am_tests_getinitpid_OBJECTS)
+tests_getinitpid_DEPENDENCIES = $(am__DEPENDENCIES_9)
 am_tests_testipc_OBJECTS = tests/testipc.$(OBJEXT)
 tests_testipc_OBJECTS = $(am_tests_testipc_OBJECTS)
 tests_testipc_LDADD = $(LDADD)
@@ -207,97 +993,155 @@ tests_testlimit_LDADD = $(LDADD)
 am_tests_testopenf_OBJECTS = tests/testopenf.$(OBJEXT)
 tests_testopenf_OBJECTS = $(am_tests_testopenf_OBJECTS)
 tests_testopenf_LDADD = $(LDADD)
+am_tests_vserver_info_OBJECTS = tests/vserver-info.$(OBJEXT)
+tests_vserver_info_OBJECTS = $(am_tests_vserver_info_OBJECTS)
+tests_vserver_info_DEPENDENCIES = $(am__DEPENDENCIES_9)
+am_vserver_start_vserver_start_bin_OBJECTS =  \
+       vserver-start/main.$(OBJEXT) vserver-start/mount.$(OBJEXT) \
+       vserver-start/defaulttty.$(OBJEXT) \
+       vserver-start/scriptlets.$(OBJEXT) \
+       vserver-start/undo.$(OBJEXT) vserver-start/vshelper.$(OBJEXT) \
+       vserver-start/interface.$(OBJEXT) \
+       vserver-start/interface-add.$(OBJEXT) \
+       vserver-start/interface-read.$(OBJEXT) \
+       vserver-start/interface-remove.$(OBJEXT) \
+       vserver-start/interface-print.$(OBJEXT) \
+       vserver-start/configuration.$(OBJEXT) \
+       vserver-start/configuration-init.$(OBJEXT)
+vserver_start_vserver_start_bin_OBJECTS =  \
+       $(am_vserver_start_vserver_start_bin_OBJECTS)
+vserver_start_vserver_start_bin_DEPENDENCIES = $(am__DEPENDENCIES_9) \
+       $(am__DEPENDENCIES_11) $(am__DEPENDENCIES_4)
+initrdSCRIPT_INSTALL = $(INSTALL_SCRIPT)
 legacySCRIPT_INSTALL = $(INSTALL_SCRIPT)
 pkglibSCRIPT_INSTALL = $(INSTALL_SCRIPT)
 sbinSCRIPT_INSTALL = $(INSTALL_SCRIPT)
-sysvSCRIPT_INSTALL = $(INSTALL_SCRIPT)
-SCRIPTS = $(legacy_SCRIPTS) $(pkglib_SCRIPTS) $(sbin_SCRIPTS) \
-       $(sysv_SCRIPTS)
+SCRIPTS = $(initrd_SCRIPTS) $(legacy_SCRIPTS) $(pkglib_SCRIPTS) \
+       $(sbin_SCRIPTS)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I.
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
-@AMDEP_TRUE@DEP_FILES =  \
-@AMDEP_TRUE@   lib/$(DEPDIR)/lib_libvserver_a-checkversion.Po \
-@AMDEP_TRUE@   lib/$(DEPDIR)/lib_libvserver_a-getctx.Po \
-@AMDEP_TRUE@   lib/$(DEPDIR)/lib_libvserver_a-getversion.Po \
-@AMDEP_TRUE@   lib/$(DEPDIR)/lib_libvserver_a-syscall.Po \
-@AMDEP_TRUE@   lib/$(DEPDIR)/lib_libvserver_a-syscall_kill.Po \
-@AMDEP_TRUE@   lib/$(DEPDIR)/lib_libvserver_a-syscall_rlimit.Po \
-@AMDEP_TRUE@   lib/$(DEPDIR)/lib_libvserver_a-uint2str.Po \
-@AMDEP_TRUE@   src/$(DEPDIR)/capchroot.Po src/$(DEPDIR)/chbind.Po \
-@AMDEP_TRUE@   src/$(DEPDIR)/chcontext.Po \
-@AMDEP_TRUE@   src/$(DEPDIR)/fakerunlevel.Po \
-@AMDEP_TRUE@   src/$(DEPDIR)/filetime.Po src/$(DEPDIR)/ifspec.Po \
-@AMDEP_TRUE@   src/$(DEPDIR)/listdevip.Po \
-@AMDEP_TRUE@   src/$(DEPDIR)/parserpmdump.Po \
-@AMDEP_TRUE@   src/$(DEPDIR)/readlink.Po \
-@AMDEP_TRUE@   src/$(DEPDIR)/reducecap.Po \
-@AMDEP_TRUE@   src/$(DEPDIR)/showattr.Po \
-@AMDEP_TRUE@   src/$(DEPDIR)/showperm.Po \
-@AMDEP_TRUE@   src/$(DEPDIR)/src_rebootmgr-rebootmgr.Po \
-@AMDEP_TRUE@   src/$(DEPDIR)/src_vkill-vkill.Po \
-@AMDEP_TRUE@   src/$(DEPDIR)/src_vunify-vunify.Po \
-@AMDEP_TRUE@   src/$(DEPDIR)/src_vunify-vutil.Po \
-@AMDEP_TRUE@   src/$(DEPDIR)/vbuild.Po src/$(DEPDIR)/vcheck.Po \
-@AMDEP_TRUE@   src/$(DEPDIR)/vdu.Po src/$(DEPDIR)/vfiles.Po \
-@AMDEP_TRUE@   src/$(DEPDIR)/vlimit.Po src/$(DEPDIR)/vreboot.Po \
-@AMDEP_TRUE@   src/$(DEPDIR)/vserver-stat.Po \
-@AMDEP_TRUE@   src/$(DEPDIR)/vutil.Po \
-@AMDEP_TRUE@   tests/$(DEPDIR)/escaperoot.Po \
-@AMDEP_TRUE@   tests/$(DEPDIR)/forkbomb.Po \
-@AMDEP_TRUE@   tests/$(DEPDIR)/testipc.Po \
-@AMDEP_TRUE@   tests/$(DEPDIR)/testlimit.Po \
-@AMDEP_TRUE@   tests/$(DEPDIR)/testopenf.Po
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CFLAGS) $(CFLAGS)
 CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-CXXLD = $(CXX)
-CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
-       -o $@
-SOURCES = $(lib_libvserver_a_SOURCES) $(src_capchroot_SOURCES) \
-       $(src_chbind_SOURCES) $(src_chcontext_SOURCES) \
-       $(src_fakerunlevel_SOURCES) $(src_filetime_SOURCES) \
-       $(src_ifspec_SOURCES) $(src_listdevip_SOURCES) \
-       $(src_parserpmdump_SOURCES) $(src_readlink_SOURCES) \
-       $(src_rebootmgr_SOURCES) $(src_reducecap_SOURCES) \
-       $(src_showattr_SOURCES) $(src_showperm_SOURCES) \
-       $(src_vbuild_SOURCES) $(src_vcheck_SOURCES) $(src_vdu_SOURCES) \
-       $(src_vfiles_SOURCES) $(src_vkill_SOURCES) \
-       $(src_vlimit_SOURCES) $(src_vreboot_SOURCES) \
-       $(src_vserver_stat_SOURCES) $(src_vunify_SOURCES) \
-       $(tests_escaperoot_SOURCES) $(tests_forkbomb_SOURCES) \
-       $(tests_testipc_SOURCES) $(tests_testlimit_SOURCES) \
-       $(tests_testopenf_SOURCES)
-DIST_SOURCES = $(lib_libvserver_a_SOURCES) $(src_capchroot_SOURCES) \
-       $(src_chbind_SOURCES) $(src_chcontext_SOURCES) \
-       $(src_fakerunlevel_SOURCES) $(src_filetime_SOURCES) \
-       $(src_ifspec_SOURCES) $(src_listdevip_SOURCES) \
-       $(src_parserpmdump_SOURCES) $(src_readlink_SOURCES) \
-       $(src_rebootmgr_SOURCES) $(src_reducecap_SOURCES) \
-       $(src_showattr_SOURCES) $(src_showperm_SOURCES) \
-       $(src_vbuild_SOURCES) $(src_vcheck_SOURCES) $(src_vdu_SOURCES) \
-       $(src_vfiles_SOURCES) $(src_vkill_SOURCES) \
-       $(src_vlimit_SOURCES) $(src_vreboot_SOURCES) \
-       $(src_vserver_stat_SOURCES) $(src_vunify_SOURCES) \
-       $(tests_escaperoot_SOURCES) $(tests_forkbomb_SOURCES) \
-       $(tests_testipc_SOURCES) $(tests_testlimit_SOURCES) \
-       $(tests_testopenf_SOURCES)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(nodist_lib_dietlibc_not_enabled_error_a_SOURCES) \
+       $(nodist_lib_glibc_not_enabled_error_a_SOURCES) \
+       $(lib_libvserver_a_SOURCES) \
+       $(lib_internal_libinternal_diet_a_SOURCES) \
+       $(lib_internal_libinternal_glibc_a_SOURCES) \
+       $(libensc_vector_diet_a_SOURCES) \
+       $(libensc_vector_glibc_a_SOURCES) $(lib_libvserver_la_SOURCES) \
+       $(src_rpm_fake_la_SOURCES) \
+       $(ensc_vector_testsuite_test1_SOURCES) \
+       $(ensc_vector_testsuite_test2_SOURCES) \
+       $(lib_testsuite_cflags_SOURCES) $(lib_testsuite_fmt_SOURCES) \
+       $(lib_testsuite_parselimit_SOURCES) \
+       $(lib_testsuite_personality_SOURCES) \
+       $(lib_internal_testsuite_command_SOURCES) \
+       $(lib_internal_testsuite_copy_SOURCES) \
+       $(lib_internal_testsuite_filecfg_ml_SOURCES) \
+       $(lib_internal_testsuite_sigbus_SOURCES) \
+       $(src_capchroot_SOURCES) $(src_chain_echo_SOURCES) \
+       $(src_chbind_SOURCES) $(src_chcontext_compat_SOURCES) \
+       src/check-unixfile.c $(src_chroot_sh_SOURCES) \
+       $(src_chxid_SOURCES) $(src_exec_cd_SOURCES) \
+       $(src_exec_ulimit_SOURCES) $(src_fakerunlevel_SOURCES) \
+       $(src_filetime_SOURCES) $(src_ifspec_SOURCES) \
+       $(src_keep_ctx_alive_SOURCES) $(src_listdevip_SOURCES) \
+       $(src_lockfile_SOURCES) $(src_lsxid_SOURCES) \
+       $(src_mask2prefix_SOURCES) $(src_parserpmdump_SOURCES) \
+       $(src_readlink_SOURCES) $(src_rebootmgr_SOURCES) \
+       $(src_reducecap_SOURCES) $(src_rpm_fake_resolver_SOURCES) \
+       $(src_save_ctxinfo_SOURCES) $(src_secure_mount_SOURCES) \
+       $(src_setattr_SOURCES) $(src_showattr_SOURCES) src/showperm.c \
+       src/sigexec.c $(src_testsuite_chbind_test_SOURCES) \
+       $(src_testsuite_chcontext_test_SOURCES) \
+       $(src_testsuite_rpm_fake_test_SOURCES) \
+       $(src_testsuite_vunify_functest_SOURCES) \
+       $(src_vattribute_SOURCES) $(src_vcontext_SOURCES) \
+       $(src_vcopy_SOURCES) $(src_vdlimit_SOURCES) $(src_vdu_SOURCES) \
+       $(src_vhashify_SOURCES) $(src_vkill_SOURCES) \
+       $(src_vlimit_SOURCES) $(src_vnamespace_SOURCES) \
+       $(src_vps_SOURCES) $(src_vreboot_SOURCES) src/vrsetup.c \
+       $(src_vsched_SOURCES) $(src_vserver_info_SOURCES) \
+       $(src_vserver_stat_SOURCES) $(src_vshelper_sync_SOURCES) \
+       $(src_vuname_SOURCES) $(src_vunify_SOURCES) \
+       $(src_vwait_SOURCES) $(tests_escaperoot_SOURCES) \
+       $(tests_forkbomb_SOURCES) $(tests_getctx_SOURCES) \
+       $(tests_getinitpid_SOURCES) $(tests_testipc_SOURCES) \
+       $(tests_testlimit_SOURCES) $(tests_testopenf_SOURCES) \
+       $(tests_vserver_info_SOURCES) \
+       $(vserver_start_vserver_start_bin_SOURCES)
+DIST_SOURCES = $(am__lib_libvserver_a_SOURCES_DIST) \
+       $(am__lib_internal_libinternal_diet_a_SOURCES_DIST) \
+       $(am__lib_internal_libinternal_glibc_a_SOURCES_DIST) \
+       $(libensc_vector_diet_a_SOURCES) \
+       $(libensc_vector_glibc_a_SOURCES) \
+       $(am__lib_libvserver_la_SOURCES_DIST) \
+       $(src_rpm_fake_la_SOURCES) \
+       $(ensc_vector_testsuite_test1_SOURCES) \
+       $(ensc_vector_testsuite_test2_SOURCES) \
+       $(lib_testsuite_cflags_SOURCES) $(lib_testsuite_fmt_SOURCES) \
+       $(lib_testsuite_parselimit_SOURCES) \
+       $(lib_testsuite_personality_SOURCES) \
+       $(lib_internal_testsuite_command_SOURCES) \
+       $(lib_internal_testsuite_copy_SOURCES) \
+       $(lib_internal_testsuite_filecfg_ml_SOURCES) \
+       $(lib_internal_testsuite_sigbus_SOURCES) \
+       $(src_capchroot_SOURCES) $(src_chain_echo_SOURCES) \
+       $(src_chbind_SOURCES) $(src_chcontext_compat_SOURCES) \
+       src/check-unixfile.c $(src_chroot_sh_SOURCES) \
+       $(src_chxid_SOURCES) $(src_exec_cd_SOURCES) \
+       $(src_exec_ulimit_SOURCES) $(src_fakerunlevel_SOURCES) \
+       $(src_filetime_SOURCES) $(src_ifspec_SOURCES) \
+       $(src_keep_ctx_alive_SOURCES) $(src_listdevip_SOURCES) \
+       $(src_lockfile_SOURCES) $(src_lsxid_SOURCES) \
+       $(src_mask2prefix_SOURCES) $(src_parserpmdump_SOURCES) \
+       $(src_readlink_SOURCES) $(src_rebootmgr_SOURCES) \
+       $(src_reducecap_SOURCES) $(src_rpm_fake_resolver_SOURCES) \
+       $(src_save_ctxinfo_SOURCES) $(src_secure_mount_SOURCES) \
+       $(src_setattr_SOURCES) $(src_showattr_SOURCES) src/showperm.c \
+       src/sigexec.c $(src_testsuite_chbind_test_SOURCES) \
+       $(src_testsuite_chcontext_test_SOURCES) \
+       $(src_testsuite_rpm_fake_test_SOURCES) \
+       $(src_testsuite_vunify_functest_SOURCES) \
+       $(src_vattribute_SOURCES) $(src_vcontext_SOURCES) \
+       $(src_vcopy_SOURCES) $(src_vdlimit_SOURCES) $(src_vdu_SOURCES) \
+       $(src_vhashify_SOURCES) $(src_vkill_SOURCES) \
+       $(src_vlimit_SOURCES) $(src_vnamespace_SOURCES) \
+       $(src_vps_SOURCES) $(src_vreboot_SOURCES) src/vrsetup.c \
+       $(src_vsched_SOURCES) $(src_vserver_info_SOURCES) \
+       $(src_vserver_stat_SOURCES) $(src_vshelper_sync_SOURCES) \
+       $(src_vuname_SOURCES) $(src_vunify_SOURCES) \
+       $(src_vwait_SOURCES) $(tests_escaperoot_SOURCES) \
+       $(tests_forkbomb_SOURCES) $(tests_getctx_SOURCES) \
+       $(tests_getinitpid_SOURCES) $(tests_testipc_SOURCES) \
+       $(tests_testlimit_SOURCES) $(tests_testopenf_SOURCES) \
+       $(tests_vserver_info_SOURCES) \
+       $(vserver_start_vserver_start_bin_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-exec-recursive install-info-recursive \
+       install-recursive installcheck-recursive installdirs-recursive \
+       pdf-recursive ps-recursive uninstall-info-recursive \
+       uninstall-recursive
 man8dir = $(mandir)/man8
 NROFF = nroff
 MANS = $(man_MANS)
+pkgconfDATA_INSTALL = $(INSTALL_DATA)
 pkglibDATA_INSTALL = $(INSTALL_DATA)
-scriptscfgDATA_INSTALL = $(INSTALL_DATA)
 sysconfDATA_INSTALL = $(INSTALL_DATA)
-vservercfgDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(pkglib_DATA) $(scriptscfg_DATA) $(sysconf_DATA) \
-       $(vservercfg_DATA)
+DATA = $(noinst_DATA) $(pkgconf_DATA) $(pkglib_DATA) $(sysconf_DATA)
 includeHEADERS_INSTALL = $(INSTALL_HEADER)
 HEADERS = $(include_HEADERS) $(noinst_HEADERS)
 ETAGS = etags
 CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
@@ -313,13 +1157,18 @@ ACLOCAL = @ACLOCAL@
 AMDEP_FALSE = @AMDEP_FALSE@
 AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
+AR = @AR@
 AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+CAT = @CAT@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
+CHOWN = @CHOWN@
+CMP = @CMP@
+CP = @CP@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CVS2CL = @CVS2CL@
@@ -331,32 +1180,72 @@ CXXFLAGS = @CXXFLAGS@
 CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
+DIET = @DIET@
+DIETFLAGS = @DIETFLAGS@
+DIRNAME = @DIRNAME@
+DOXYGEN = @DOXYGEN@
+ECHO = @ECHO@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
+ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE = @ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@
+ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE = @ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@
 ENSC_ENABLE_INTERNAL_HEADERS_FALSE = @ENSC_ENABLE_INTERNAL_HEADERS_FALSE@
 ENSC_ENABLE_INTERNAL_HEADERS_TRUE = @ENSC_ENABLE_INTERNAL_HEADERS_TRUE@
-ENSC_ENABLE_LINUXCONF_FALSE = @ENSC_ENABLE_LINUXCONF_FALSE@
-ENSC_ENABLE_LINUXCONF_TRUE = @ENSC_ENABLE_LINUXCONF_TRUE@
+ENSC_HAVE_BEECRYPT_FALSE = @ENSC_HAVE_BEECRYPT_FALSE@
+ENSC_HAVE_BEECRYPT_TRUE = @ENSC_HAVE_BEECRYPT_TRUE@
+ENSC_HAVE_C99_COMPILER_FALSE = @ENSC_HAVE_C99_COMPILER_FALSE@
+ENSC_HAVE_C99_COMPILER_TRUE = @ENSC_HAVE_C99_COMPILER_TRUE@
+ENSC_HAVE_CXX_COMPILER_FALSE = @ENSC_HAVE_CXX_COMPILER_FALSE@
+ENSC_HAVE_CXX_COMPILER_TRUE = @ENSC_HAVE_CXX_COMPILER_TRUE@
+ENSC_PATHPROG_SED = @ENSC_PATHPROG_SED@
+ENSC_USE_DIETLIBC_FALSE = @ENSC_USE_DIETLIBC_FALSE@
+ENSC_USE_DIETLIBC_TRUE = @ENSC_USE_DIETLIBC_TRUE@
+ENSC_USE_EXPENSIVE_TESTS = @ENSC_USE_EXPENSIVE_TESTS@
+ENSC_USE_GLIBC_FALSE = @ENSC_USE_GLIBC_FALSE@
+ENSC_USE_GLIBC_TRUE = @ENSC_USE_GLIBC_TRUE@
+ENV = @ENV@
 EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GPG_KEY = @GPG_KEY@
+GREP = @GREP@
 HAVE_CVS2CL_FALSE = @HAVE_CVS2CL_FALSE@
 HAVE_CVS2CL_TRUE = @HAVE_CVS2CL_TRUE@
 HAVE_RCS2LOG_FALSE = @HAVE_RCS2LOG_FALSE@
 HAVE_RCS2LOG_TRUE = @HAVE_RCS2LOG_TRUE@
+HAVE_XSLTPROC_FALSE = @HAVE_XSLTPROC_FALSE@
+HAVE_XSLTPROC_TRUE = @HAVE_XSLTPROC_TRUE@
+HAVE_XSLTP_FALSE = @HAVE_XSLTP_FALSE@
+HAVE_XSLTP_TRUE = @HAVE_XSLTP_TRUE@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+IP = @IP@
+IPTABLES = @IPTABLES@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIB_DEBUG_CPPFLAGS = @LIB_DEBUG_CPPFLAGS@
+LN = @LN@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
 MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
 MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
+MKDIR = @MKDIR@
+MKFIFO = @MKFIFO@
+MKTEMP = @MKTEMP@
+MODPROBE = @MODPROBE@
+MOUNT = @MOUNT@
+MV = @MV@
+NAMEIF = @NAMEIF@
+NICE = @NICE@
+NOHUP = @NOHUP@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -365,14 +1254,37 @@ PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PS = @PS@
 RANLIB = @RANLIB@
 RCS2LOG = @RCS2LOG@
+RELEASE_CPPFLAGS = @RELEASE_CPPFLAGS@
+RM = @RM@
+RMDIR = @RMDIR@
+RMMOD = @RMMOD@
+SED = @SED@
 SET_MAKE = @SET_MAKE@
+SH = @SH@
 SHELL = @SHELL@
 STRIP = @STRIP@
+TAC = @TAC@
+TAR = @TAR@
+TOUCH = @TOUCH@
+TTY = @TTY@
+UMOUNT = @UMOUNT@
+USE_DIETLIBC_COMPAT_FALSE = @USE_DIETLIBC_COMPAT_FALSE@
+USE_DIETLIBC_COMPAT_TRUE = @USE_DIETLIBC_COMPAT_TRUE@
+USE_DIETLIBC_FALSE = @USE_DIETLIBC_FALSE@
+USE_DIETLIBC_TRUE = @USE_DIETLIBC_TRUE@
+VCONFIG = @VCONFIG@
 VERSION = @VERSION@
+WC = @WC@
+WGET = @WGET@
+XSLTP = @XSLTP@
+XSLTPROC = @XSLTPROC@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
 ac_ct_RANLIB = @ac_ct_RANLIB@
 ac_ct_STRIP = @ac_ct_STRIP@
 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
@@ -382,13 +1294,24 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 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@
 datadir = @datadir@
 exec_prefix = @exec_prefix@
+host = @host@
 host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
 includedir = @includedir@
 infodir = @infodir@
+initrddir = @initrddir@
 install_sh = @install_sh@
 kernelincludedir = @kernelincludedir@
 libdir = @libdir@
@@ -405,256 +1328,768 @@ sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 vserverdir = @vserverdir@
 ACLOCAL_AMFLAGS = -I m4
-CVS2CL_AMFLAGS = $(CVS2CL_TAG) -U cvsusers.map --show-dead
+SUBDIRS = . distrib
+CVS2CL_AMFLAGS = $(CVS2CL_TAG) -U cvsusers.map --show-dead -S --no-wrap
 CVS2CL_ALLFLAGS := $(CVS2CL_AMFLAGS) $(CVS2CL_FLAGS)
-sysvdir = $(sysconfdir)/init.d
-vservercfgdir = $(sysconfdir)/vservers
+confdir = $(sysconfdir)/vservers
+confdefaultsdir = $(confdir)/.defaults
+sbincfgdir = $(sbindir)
 legacydir = $(pkglibdir)/legacy
-include_HEADERS = $(lib_HDRS)
-noinst_HEADERS = $(src_HDRS) $(lib_XHDRS) compat.h
-lib_LIBRARIES = $(lib_lib_LIBS)
-pkglib_SCRIPTS = $(distrib_SCRPTS) $(scripts_SCRPTS) $(src_pkglib_SCRPTS)
-pkglib_DATA = $(distrib_DAT) $(scriptscfg_DATA)
-legacy_SCRIPTS = $(scripts_LEGSCRPTS)
-sbin_SCRIPTS = $(scripts_PRGS) $(linuxconf_SCRPTS)
-sysv_SCRIPTS = $(sysv_SCRPTS)
-sysconf_DATA = $(sysv_CFG)
-vservercfg_DATA = $(linuxconf_cfg_DTA)
-BUILT_SOURCES = linuxcaps.h linuxvirtual.h
-man_MANS = $(man_DATMAN) $(linuxconf_DATMAN)
-m4_FILES = m4/ensc_cflags.m4 m4/ensc_kerneldir.m4 \
-                          m4/ensc_changelog.m4 m4/ensc_uv_vrootdir.m4
-
-EXTRA_DIST = $(distrib_SCRPTS) $(distrib_DAT) \
-                          $(sysv_XTRAS) $(sysv_CFG) \
-                           $(doc_DAT) $(man_DATMAN) $(linuxconf_XTRAS) \
-                          $(scripts_SCRPTS) $(scripts_XTRAS) \
-                          $(m4_FILES) \
-                          util-vserver.spec THANKS
-
-AM_CPPFLAGS = -I $(top_srcdir)/lib -D VERSION=\"$(VERSION)\" -D PKGLIBDIR=\"$(pkglibdir)\" -D _GNU_SOURCE
-AM_CFLAGS = -Wall -pedantic
-CLEANFILES = $(sysv_GENSCRPTS) $(scripts_GENSCRPTS) \
-                          $(linuxconf_GENFILES) $(src_GENFILES) \
-                          $(BUILT_SOURCES)
-
+include_HEADERS = lib/vserver.h
+noinst_HEADERS = $(ENSC_VECTOR_HDRS) compat.h compat-c99.h \
+       lib/syscall-compat.hc lib/syscall-legacy.hc \
+       lib/createskeleton-full.hc lib/createskeleton-short.hc \
+       lib/fmt.h lib/getversion-internal.hc \
+       lib/safechroot-internal.hc lib/ioctl-getext2flags.hc \
+       lib/ioctl-getfilecontext.hc lib/ioctl-setext2flags.hc \
+       lib/ioctl-setfilecontext.hc lib/ioctl-getxflg.hc \
+       lib/ioctl-setxflg.hc lib/ext2fs.h lib/listparser.hc \
+       lib/val2text.hc lib/virtual.h lib/internal.h \
+       lib/syscall-alternative.h lib/syscall-wrap.h \
+       lib/utils-legacy.h lib/vserver-internal.h \
+       src/capability-compat.h src/util.h src/fstool.h \
+       src/compat-pivot_root.h src/stack-start.h src/vcopy-init.hc \
+       src/vunify.h src/vunify-init.hc src/vhashify.h \
+       src/vhashify-init.hc src/vserver-visitdir.hc \
+       src/context-sync.hc ensc_wrappers/wrappers-clone.hc \
+       ensc_wrappers/wrappers-dirent.hc \
+       ensc_wrappers/wrappers-fcntl.hc ensc_wrappers/wrappers-io.hc \
+       ensc_wrappers/wrappers-ioctl.hc \
+       ensc_wrappers/wrappers-iosock.hc \
+       ensc_wrappers/wrappers-mount.hc \
+       ensc_wrappers/wrappers-pivot.hc \
+       ensc_wrappers/wrappers-resource.hc \
+       ensc_wrappers/wrappers-socket.hc \
+       ensc_wrappers/wrappers-stdlib.hc \
+       ensc_wrappers/wrappers-string.hc \
+       ensc_wrappers/wrappers-unistd.hc \
+       ensc_wrappers/wrappers-vserver.hc \
+       ensc_wrappers/wrappers-wait.hc ensc_wrappers/wrappers.h \
+       ensc_wrappers/wrappers_handler.hc lib_internal/coreassert.h \
+       lib_internal/errinfo.h lib_internal/jail.h \
+       lib_internal/matchlist.h lib_internal/pathinfo.h \
+       lib_internal/string.h lib_internal/sys_clone.h \
+       lib_internal/sys_personality.h lib_internal/unify.h \
+       lib_internal/util.h lib_internal/util-cast.h \
+       lib_internal/util-commonstrings.h lib_internal/util-debug.h \
+       lib_internal/util-declarecmd.h lib_internal/util-dimof.h \
+       lib_internal/util-dotfile.h \
+       lib_internal/util-exitlikeprocess.h lib_internal/util-io.h \
+       lib_internal/util-lockfile.h lib_internal/util-mem.h \
+       lib_internal/util-perror.h lib_internal/util-safechdir.h \
+       lib_internal/util-unixsock.h lib_internal/string.hc
+noinst_LIBRARIES = $(ENSC_VECTOR_LIBS) $(LIBINTERNAL_GLIBC) \
+       $(am__append_10)
+lib_LIBRARIES = $(am__append_2)
+lib_LTLIBRARIES = $(LIBVSERVER_GLIBC)
+pkglib_LTLIBRARIES = src/rpm-fake.la
+pkglib_SCRIPTS = $(scripts_pkglib_src_SCRPTS)
+pkglib_DATA = FEATURES.txt $(scripts_pkglib_src_DTA) \
+       $(scripts_pkglib_gen_DTA)
+legacy_SCRIPTS = $(scripts_legacy_src_SCRPTS) \
+       $(scripts_legacy_gen_SCRPTS)
+sbin_SCRIPTS = $(scripts_sbin_src_PRGS) $(scripts_sbin_gen_PRGS) \
+       $(scripts_legacy_src_PRGS)
+noinst_DATA = $(contrib_gen_DTA)
+initrd_SCRIPTS = $(sysv_src_SCRPTS) $(sysv_gen_SCRPTS)
+sysconf_DATA = $(sysv_conf_DTA)
+DIETPROGS = $(LIBENSCVECTOR_DIET) lib/lib_libvserver_a-% \
+       lib/testsuite/cflags lib/testsuite/personality \
+       lib/testsuite/fmt src/chcontext-compat src/capchroot \
+       src/chain-echo src/check-unixfile src/chroot-sh src/filetime \
+       src/lockfile src/readlink src/secure-mount src/save_ctxinfo \
+       src/mask2prefix src/chbind src/exec-cd src/fakerunlevel \
+       src/keep-ctx-alive src/exec-ulimit src/vps src/lsxid src/chxid \
+       src/reducecap src/showattr src/setattr src/sigexec \
+       src/vattribute src/vlimit src/vnamespace src/vunify src/vuname \
+       src/rpm-fake-resolver src/vcontext src/vcopy src/vkill \
+       src/vsched src/vshelper-sync src/vrsetup src/vserver-stat \
+       src/vserver-info src/vdlimit src/vwait $(am__append_3) \
+       $(tests_dietprogs) lib_internal/libinternal-diet.a \
+       $(am__append_13)
+BUILT_SOURCES = pathconfig.h linuxvirtual.h \
+                       .fixups
+
+man_MANS = $(man_pages)
+kernel_HDRS = kernel/context.h \
+                       kernel/context_cmd.h    \
+                       kernel/cvirt.h          \
+                       kernel/cvirt_cmd.h      \
+                       kernel/cvirt_def.h      \
+                       kernel/debug.h          \
+                       kernel/debug_cmd.h      \
+                       kernel/dlimit.h         \
+                       kernel/dlimit_cmd.h     \
+                       kernel/inode.h          \
+                       kernel/inode_cmd.h      \
+                       kernel/legacy.h         \
+                       kernel/limit.h          \
+                       kernel/limit_cmd.h      \
+                       kernel/limit_def.h      \
+                       kernel/namespace.h      \
+                       kernel/namespace_cmd.h  \
+                       kernel/network.h        \
+                       kernel/network_cmd.h    \
+                       kernel/sched.h          \
+                       kernel/sched_cmd.h      \
+                       kernel/sched_def.h      \
+                       kernel/signal_cmd.h     \
+                       kernel/switch.h         \
+                       kernel/xid.h
+
+EXTRA_DIST = pathconfig.h.pathsubst util-vserver.spec THANKS \
+       REQUIREMENTS $(kernel_HDRS) lib/apidoc/list2xxx.syntax \
+       $(src_testsuite_check_src_SCRPTS) $(doc_compatibility_SRCS) \
+       $(doc_configuration_SRCS) $(doc_old_doc) $(doc_gen_DOCS) \
+       $(man_pages) $(scripts_pkglib_src_DTA) \
+       $(scripts_pkglib_src_SCRPTS) $(scripts_legacy_src_SCRPTS) \
+       $(scripts_legacy_src_PRGS) $(scripts_sbin_src_PRGS) \
+       $(scripts_subst_SRCS) sysv/v_gated.subst sysv/v_httpd.subst \
+       sysv/v_named.subst sysv/v_portmap.subst sysv/v_sendmail.subst \
+       sysv/v_smb.subst sysv/v_sshd.subst sysv/v_xinetd.subst \
+       $(sysv_src_SCRPTS) $(sysv_conf_DTA) $(contrib_subst_SRCS) \
+       contrib/make-manifest contrib/yum-2.2.1-chroot.patch \
+       contrib/yum-2.3.2-chroot.patch contrib/yum-2.3.3-chroot.patch \
+       contrib/yum-2.3.4-chroot.patch \
+       lib_internal/testsuite/copy-check $(addsuffix .pc.subst, \
+       $(PKGCONFIG_FILES))
+check_SCRIPTS = $(src_testsuite_check_src_SCRPTS) \
+       $(src_testsuite_check_gen_SCRPTS)
+TESTS_DEBUG = no
+TESTS = lib/testsuite/cflags lib/testsuite/personality \
+       lib/testsuite/fmt lib/testsuite/parselimit \
+       $(src_testsuite_check_active_PRGS) \
+       $(src_testsuite_check_src_SCRPTS) \
+       $(src_testsuite_check_gen_SCRPTS) ensc_vector/testsuite/test1 \
+       ensc_vector/testsuite/test2 $(am__append_12)
+TESTS_ENVIRONMENT =  \
+       ensc_use_expensive_tests="$(ENSC_USE_EXPENSIVE_TESTS)" \
+       ensc_test_debug="$(TESTS_DEBUG)" \
+       srctestsuitedir=$(top_builddir)/src/testsuite \
+       libinternaltestsuitedir=$(top_builddir)/lib_internal/testsuite
+AM_CPPFLAGS = -I $(top_srcdir)/lib -I $(top_srcdir)/ensc_wrappers \
+                       -D_GNU_SOURCE -D_REENTRANT $(RELEASE_CPPFLAGS)
+
+CLEANFILES = $(BUILT_SOURCES) .*.pathsubst.stamp */.*.pathsubst.stamp \
+       */*/.*.pathsubst.stamp pathconfig.h .fixups lib/libvserver.la \
+       lib/libvserver.a lib/apidoc/.apidoc doc/*.raw.html* \
+       doc/*.html.tmp $(am__append_6) $(am__append_7) \
+       $(scripts_pkglib_gen_DTA) $(scripts_sbin_gen_PRGS) \
+       $(scripts_sbincfg_gen_DTA) $(scripts_legacy_gen_SCRPTS) \
+       $(sysv_gen_SCRPTS) $(contrib_gen_DTA) libensc_vector-diet.a \
+       libensc_vector-glibc.a lib_internal/libinternal-diet.a \
+       lib_internal/libinternal-glibc.a $(addsuffix .pc, \
+       $(PKGCONFIG_FILES))
+DISTCLEANFILES = FEATURES.txt
+AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = src/parserpmdump src/showperm \
+       src/vbuild src/vcheck src/vreboot src/save_ctxinfo \
+       src/mask2prefix src/ifspec src/rebootmgr src/vdu src/vfiles \
+       scripts/vapt-get-worker scripts/vrpm-worker \
+       scripts/vyum-worker scripts/vrpm-preload \
+       scripts/save_s_context scripts/vservers.grabinfo.sh \
+       scripts/vpstree scripts/vserver-wrapper scripts/vsysvwrapper \
+       scripts/vtop scripts/legacy/distrib-info scripts/legacy/vps \
+       scripts/legacy/save_s_context scripts/legacy/vserver \
+       scripts/legacy/rootshell scripts/legacy/vserver-copy \
+       scripts/legacy/vserverkillall $(sysv_src_SCRPTS) \
+       $(sysv_gen_SCRPTS) vserver-start/vserver.start.bin
+@USE_DIETLIBC_TRUE@DIET_CC := $(DIET) $(DIETFLAGS) $(CC)
+@USE_DIETLIBC_FALSE@VSERVER_LDFLGS := 
+@USE_DIETLIBC_TRUE@VSERVER_LDFLGS := -static
+@USE_DIETLIBC_COMPAT_FALSE@DIET_COMPAT_LDADDS = 
+@USE_DIETLIBC_COMPAT_TRUE@DIET_COMPAT_LDADDS = -lcompat
+VSERVER_LDADDS = $(LIBVSERVER) $(DIET_COMPAT_LDADDS)
+pathsubst_RULES = s!@'PKGLIBDIR'@!$(pkglibdir)!g; \
+                       s!@'LEGACYDIR'@!$(legacydir)!g; \
+                       s!@'SBINDIR'@!$(sbindir)!g; \
+                       s!@'CONFDIR'@!$(confdir)!g; \
+                       s!@'SYSCONFDIR'@!$(sysconfdir)!g; \
+                       s!@'PKGSTATEDIR'@!$(pkgstatedir)!g; \
+                       s!@'PKGSTATEREVDIR'@!$(pkgstaterevdir)!g; \
+                       s!@'VSERVERDIR'@!$(vserverdir)!g; \
+                       s!@'VSERVERPKGDIR'@!$(vserverpkgdir)!g; \
+                       s!@'VSERVERPKGDIR'@!$(vserverpkgdir)!g; \
+                       s!@'VSHELPERSTATEDIR'@!$(vshelperstatedir)!g; \
+                       s!@'INITRDDIR'@!$(initrddir)!g; \
+                       s!@'LIBDIR'@!$(libdir)!g; \
+                       s!@'MANDIR'@!$(mandir)!g; \
+                       s!@'INCLUDEDIR'@!$(includedir)!g; \
+                       s!@'PACKAGE'@!$(PACKAGE)!g; \
+                       s!@'PACKAGE_BUGREPORT'@!$(PACKAGE_BUGREPORT)!g; \
+                       s!@'PACKAGE_NAME'@!$(PACKAGE_NAME)!g; \
+                       s!@'PACKAGE_STRING'@!$(PACKAGE_STRING)!g; \
+                       s!@'PACKAGE_TARNAME'@!$(PACKAGE_TARNAME)!g; \
+                       s!@'PACKAGE_VERSION'@!$(PACKAGE_VERSION)!g; \
+                       s!@'ENSC_HAVE_C99_COMPILER_TRUE'@!\@ENSC_HAVE_C99_COMPILER_TRUE@ !g; \
+                       s!@'ENSC_HAVE_C99_COMPILER_FALSE'@!\@ENSC_HAVE_C99_COMPILER_FALSE@ !g; \
+                       s!@'ENSC_HAVE_CXX_COMPILER_TRUE'@!\@ENSC_HAVE_CXX_COMPILER_TRUE@ !g; \
+                       s!@'ENSC_HAVE_CXX_COMPILER_FALSE'@!\@ENSC_HAVE_CXX_COMPILER_FALSE@ !g; \
+                       $(ENSC_PATHPROG_SED)
+
+pkgstatedir = $(localstatedir)/run/vservers
+pkgstaterevdir = $(confdefaultsdir)/run.rev
+vserverpkgdir = $(vserverdir)/.pkg
+vshelperstatedir = $(localstatedir)/run/vshelper
+fix_SCRPTS = $(addprefix $(pkglibdir)/, $(notdir $(pkglib_SCRIPTS))) \
+                          $(addprefix $(legacydir)/, $(notdir $(legacy_SCRIPTS))) \
+                          $(addprefix $(sbindir)/,   $(notdir $(sbin_SCRIPTS))) \
+                          $(addprefix $(initrddir)/, $(notdir $(initrd_SCRIPTS)))
+
+@ENSC_USE_DIETLIBC_FALSE@nodist_lib_dietlibc_not_enabled_error_a_SOURCES = \
+@ENSC_USE_DIETLIBC_FALSE@                              lib-dietlibc-not-enabled-error.c
+
+@USE_DIETLIBC_FALSE@nodist_lib_dietlibc_not_enabled_error_a_SOURCES = \
+@USE_DIETLIBC_FALSE@                   lib-dietlibc-not-enabled-error.c
+
+lib_VERSION = 0.0.0
+lib_compat_SRCS = lib/cflags-compat.c \
+                               lib/cflags_list-compat.c
+
+lib_legacy_SRCS = lib/getprocentry-legacy.c
+lib_management_SRCS = lib/createskeleton.c \
+                               lib/getvserverbyctx.c \
+                               lib/getvserverbyctx-compat.hc \
+                               lib/getvserverbyctx-v13.hc \
+                               lib/getvservercfgstyle.c \
+                               lib/getvserverappdir.c \
+                               lib/getvservercfgdir.c \
+                               lib/getvserverctx.c \
+                               lib/getvservername.c \
+                               lib/getvservervdir.c \
+                               lib/xidopt2xid.c
+
+lib_v11_SRCS = lib/syscall_rlimit.c \
+                               lib/syscall_rlimit-v11.hc \
+                               lib/syscall_kill.c  \
+                               lib/syscall_kill-v11.hc
+
+lib_v13_SRCS = lib/syscall_ctxcreate.c lib/syscall_ctxcreate-v13.hc \
+       lib/syscall_ctxmigrate.c lib/syscall_ctxmigrate-v13.hc \
+       lib/syscall_cleanupnamespace-v13.hc \
+       lib/syscall_cleanupnamespace.c \
+       lib/syscall_enternamespace-v13.hc lib/syscall_enternamespace.c \
+       lib/syscall_getccaps-v13.hc lib/syscall_getccaps.c \
+       lib/syscall_getcflags-v13.hc lib/syscall_getcflags.c \
+       lib/syscall_getiattr-fscompat.hc lib/syscall_getiattr-v13.hc \
+       lib/syscall_getiattr.c lib/syscall_getncaps-net.hc \
+       lib/syscall_getncaps.c lib/syscall_getnflags-net.hc \
+       lib/syscall_getnflags.c lib/syscall_getnxinfo-net.hc \
+       lib/syscall_getnxinfo.c lib/syscall_gettasknid-net.hc \
+       lib/syscall_gettasknid.c lib/syscall_gettaskxid-oldproc.hc \
+       lib/syscall_gettaskxid-v13.hc lib/syscall_gettaskxid.c \
+       lib/syscall_getvhiname-olduts.hc lib/syscall_getvhiname-v13.hc \
+       lib/syscall_getvhiname.c lib/syscall_getvxinfo-oldproc.hc \
+       lib/syscall_getvxinfo-v13.hc lib/syscall_getvxinfo.c \
+       lib/syscall_netadd-net.hc lib/syscall_netadd.c \
+       lib/syscall_netcreate-net.hc lib/syscall_netcreate.c \
+       lib/syscall_netmigrate-net.hc lib/syscall_netmigrate.c \
+       lib/syscall_netremove-net.hc lib/syscall_netremove.c \
+       lib/syscall_setccaps-v13.hc lib/syscall_setccaps.c \
+       lib/syscall_setcflags-v13.hc lib/syscall_setcflags.c \
+       lib/syscall_setiattr-fscompat.hc lib/syscall_setiattr-v13.hc \
+       lib/syscall_setiattr.c lib/syscall_setnamespace-v13.hc \
+       lib/syscall_setnamespace.c lib/syscall_setncaps-net.hc \
+       lib/syscall_setncaps.c lib/syscall_setnflags-net.hc \
+       lib/syscall_setnflags.c lib/syscall_setsched-v13.hc \
+       lib/syscall_setsched.c lib/syscall_setvhiname-olduts.hc \
+       lib/syscall_setvhiname-v13.hc lib/syscall_setvhiname.c \
+       lib/syscall_waitexit.c lib/syscall_waitexit-v13.hc \
+       lib/bcaps-v13.c lib/bcaps_list-v13.c lib/ccaps-v13.c \
+       lib/ccaps_list-v13.c lib/cflags-v13.c lib/cflags_list-v13.c \
+       lib/ncaps-net.c lib/ncaps_list-net.c lib/nflags-net.c \
+       lib/nflags_list-net.c $(am__append_1)
+PKGCONFIG_FILES = lib/util-vserver
 lib_SRCS = lib/syscall.c \
-                                  lib/syscall_rlimit.c \
-                                  lib/syscall_kill.c \
-                                  lib/checkversion.c \
-                                  lib/getctx.c \
-                                  lib/getversion.c \
-                                  lib/uint2str.c
-
-lib_HDRS = lib/vserver.h
-lib_XHDRS = lib/syscall-compat.hc \
-                                  lib/syscall-legacy.hc \
-                                  lib/syscall_rlimit-v11.hc \
-                                  lib/syscall_kill-v11.hc \
-                                  lib/getctx-compat.hc \
-                                  lib/getctx-legacy.hc \
-                                  lib/getversion-internal.hc \
-                                  lib/safechroot-internal.hc \
-                                  lib/virtual.h \
-                                  lib/vserver-internal.h
-
-lib_lib_LIBS = lib/libvserver.a
+                               lib/checkversion.c \
+                               lib/isdirectory.c \
+                               lib/isfile.c \
+                               lib/islink.c \
+                               lib/getnbipv4root.c \
+                               lib/getversion.c \
+                               lib/capabilities.c \
+                               lib/getfilecontext.c \
+                               lib/getinsecurebcaps.c \
+                               lib/getxidtype.c \
+                               lib/isdynamicxid.c \
+                               lib/issupported.c \
+                               lib/issupportedstring.c \
+                               lib/listparser_uint32.c \
+                               lib/listparser_uint64.c \
+                               lib/personalityflag.c \
+                               lib/personalityflag_list.c \
+                               lib/personalitytype.c \
+                               lib/syscall-syscall.c \
+                               lib/val2text-t2v-uint32.c \
+                               lib/val2text-t2v-uint64.c \
+                               lib/val2text-v2t-uint32.c \
+                               lib/val2text-v2t-uint64.c \
+                               lib/parselimit.c \
+                               $(lib_legacy_SRCS) \
+                               $(lib_compat_SRCS) \
+                               $(lib_management_SRCS) \
+                               $(lib_v11_SRCS) \
+                               $(lib_v13_SRCS) \
+                               $(ensc_fmt_SRCS)
+
+LIBVSERVER_GLIBC = lib/libvserver.la
+@USE_DIETLIBC_FALSE@LIBVSERVER_DIET = lib-dietlibc-not-enabled-error.a
+@USE_DIETLIBC_TRUE@LIBVSERVER_DIET = lib/libvserver.a
+@USE_DIETLIBC_FALSE@LIBVSERVER = lib/libvserver.la
+@USE_DIETLIBC_TRUE@LIBVSERVER = $(LIBVSERVER_DIET)
+lib_libvserver_la_SOURCES = $(lib_SRCS)
+lib_libvserver_la_CPPFLAGS = $(AM_CPPFLAGS) $(LIB_DEBUG_CPPFLAGS)
+lib_libvserver_la_LDFLAGS = -version $(lib_VERSION)
 lib_libvserver_a_SOURCES = $(lib_SRCS)
-lib_libvserver_a_CPPFLAGS = -D_GNU_SOURCE
-src_HDRS = src/vutil.h src/vutil.p \
-                          src/ext2fs.h
-
-src_pkglib_SCRPTS = src/setattr
-src_pkglib_PRGS = src/capchroot \
-                          src/fakerunlevel \
-                          src/filetime \
-                          src/ifspec \
-                          src/listdevip \
-                          src/parserpmdump \
-                          src/readlink \
-                          src/showattr \
-                          src/showperm \
-                          src/vbuild \
-                          src/vcheck \
-                          src/vreboot \
-                          src/vunify
-
-src_sbin_PRGS = src/chbind \
-                          src/chcontext \
-                          src/rebootmgr \
-                          src/reducecap \
-                          src/vlimit \
-                          src/vdu \
-                          src/vfiles \
-                          src/vkill \
-                          src/vserver-stat
-
-src_GENFILES = src/setattr
+lib_libvserver_a_CPPFLAGS = $(AM_CPPFLAGS) $(LIB_DEBUG_CPPFLAGS)
+lib_testsuite_cflags_SOURCES = lib/testsuite/cflags.c
+lib_testsuite_cflags_LDADD = $(LIBVSERVER)
+lib_testsuite_cflags_LDFLAGS = $(VSERVER_LDFLGS)
+lib_testsuite_cflags_CPPFLAGS = $(AM_CPPFLAGS) -DENSC_TESTSUITE
+lib_testsuite_personality_SOURCES = lib/testsuite/personality.c
+lib_testsuite_personality_LDADD = $(LIBVSERVER)
+lib_testsuite_personality_LDFLAGS = $(VSERVER_LDFLGS)
+lib_testsuite_personality_CPPFLAGS = $(AM_CPPFLAGS) -DENSC_TESTSUITE
+lib_testsuite_fmt_SOURCES = lib/testsuite/fmt.c
+lib_testsuite_fmt_LDADD = $(LIBVSERVER)
+lib_testsuite_fmt_LDFLAGS = $(VSERVER_LDFLGS)
+lib_testsuite_fmt_CPPFLAGS = $(AM_CPPFLAGS) -DENSC_TESTSUITE
+lib_testsuite_parselimit_SOURCES = lib/testsuite/parselimit.c
+lib_testsuite_parselimit_LDADD = $(LIBVSERVER)
+lib_testsuite_parselimit_LDFLAGS = $(VSERVER_LDFLGS)
+lib_testsuite_parselimit_CPPFLAGS = $(AM_CPPFLAGS) -DENSC_TESTSUITE
+src_sbin_CXX_PROGS = 
+src_pkglib_CXX_PROGS = 
+src_pkglib_C99_PROGS = src/vunify src/vcopy
 src_capchroot_SOURCES = src/capchroot.c
-src_capchroot_LDADD = lib/libvserver.a
+src_capchroot_LDADD = $(VSERVER_LDADDS)
+src_capchroot_LDFLAGS = $(VSERVER_LDFLGS)
 src_chbind_SOURCES = src/chbind.c
-src_chbind_LDADD = lib/libvserver.a
-src_chcontext_SOURCES = src/chcontext.c
-src_chcontext_LDADD = lib/libvserver.a
-src_fakerunlevel_SOURCES = src/fakerunlevel.c
+src_chbind_LDADD = $(VSERVER_LDADDS)
+src_chbind_LDFLAGS = $(VSERVER_LDFLGS)
+src_chcontext_compat_SOURCES = src/chcontext.c
+src_chcontext_compat_LDADD = $(VSERVER_LDADDS) $(LIBINTERNAL)
+src_chcontext_compat_LDFLAGS = $(VSERVER_LDFLGS)
+src_vcontext_SOURCES = src/vcontext.c
+src_vcontext_LDADD = $(VSERVER_LDADDS) $(LIBINTERNAL)
+src_vcontext_LDFLAGS = $(VSERVER_LDFLGS)
+src_vsched_SOURCES = src/vsched.c
+src_vsched_LDADD = $(VSERVER_LDADDS)
+src_vsched_LDFLAGS = $(VSERVER_LDFLGS)
 src_filetime_SOURCES = src/filetime.c
+src_filetime_LDADD = $(VSERVER_LDADDS)
+src_filetime_LDFLAGS = $(VSERVER_LDFLGS)
+src_chain_echo_SOURCES = src/chain-echo.c
+src_chroot_sh_SOURCES = src/chroot-sh.c
+src_exec_cd_SOURCES = src/exec-cd.c
+src_fakerunlevel_SOURCES = src/fakerunlevel.c
 src_ifspec_SOURCES = src/ifspec.c
 src_listdevip_SOURCES = src/listdevip.c
+src_lockfile_SOURCES = src/lockfile.c
 src_parserpmdump_SOURCES = src/parserpmdump.c
 src_readlink_SOURCES = src/readlink.c
 src_rebootmgr_SOURCES = src/rebootmgr.c
-src_rebootmgr_CPPFLAGS = $(AM_CPPFLAGS) -DSBINDIR=\"$(sbindir)\" -DVROOTDIR=\"$(vserverdir)\"
+src_exec_ulimit_SOURCES = src/exec-ulimit.c
+src_vshelper_sync_SOURCES = src/vshelper-sync.c
 src_reducecap_SOURCES = src/reducecap.c
-src_reducecap_LDADD = lib/libvserver.a
-src_vlimit_SOURCES = src/vlimit.c
-src_vlimit_LDADD = lib/libvserver.a
+src_reducecap_LDADD = $(VSERVER_LDADDS)
+src_reducecap_LDFLAGS = $(VSERVER_LDFLGS)
 src_vkill_SOURCES = src/vkill.c
-src_vkill_LDADD = lib/libvserver.a
+src_vkill_LDADD = $(VSERVER_LDADDS)
+src_vkill_LDFLAGS = $(VSERVER_LDFLGS)
 src_vkill_CPPFLAGS = $(AM_CPPFLAGS) -DLEGACYDIR=\"$(legacydir)\"
-src_showattr_SOURCES = src/showattr.c
-src_showperm_SOURCES = src/showperm.c
-src_vbuild_SOURCES = src/vbuild.cc src/vutil.cc
+src_vlimit_SOURCES = src/vlimit.c
+src_vlimit_LDADD = $(VSERVER_LDADDS)
+src_vlimit_LDFLAGS = $(VSERVER_LDFLGS)
+src_save_ctxinfo_SOURCES = src/save_ctxinfo.c
+src_save_ctxinfo_LDADD = $(VSERVER_LDADDS)
+src_save_ctxinfo_LDFLAGS = $(VSERVER_LDFLGS)
 src_vdu_SOURCES = src/vdu.c
-src_vfiles_SOURCES = src/vfiles.cc src/vutil.cc
 src_vreboot_SOURCES = src/vreboot.c
+src_secure_mount_SOURCES = src/secure-mount.c
+src_secure_mount_LDADD = $(VSERVER_LDADDS)
+src_secure_mount_LDFLAGS = $(VSERVER_LDFLGS)
+src_vattribute_SOURCES = src/vattribute.c
+src_vattribute_LDADD = $(VSERVER_LDADDS)
+src_vattribute_LDFLAGS = $(VSERVER_LDFLGS)
+src_vnamespace_SOURCES = src/vnamespace.c
+src_vnamespace_LDADD = $(VSERVER_LDADDS) $(LIBINTERNAL)
+src_vnamespace_LDFLAGS = $(VSERVER_LDFLGS)
+src_rpm_fake_resolver_SOURCES = src/rpm-fake-resolver.c
+src_rpm_fake_resolver_LDADD = $(VSERVER_LDADDS)
+src_rpm_fake_resolver_LDFLAGS = $(VSERVER_LDFLGS)
+src_mask2prefix_SOURCES = src/mask2prefix.c
+src_vps_SOURCES = src/vps.c
+src_vps_LDADD = $(LIBINTERNAL) $(VSERVER_LDADDS)
+src_vps_LDFLAGS = $(VSERVER_LDFLGS)
+src_vserver_info_SOURCES = src/vserver-info.c
+src_vserver_info_LDADD = $(LIBINTERNAL) $(VSERVER_LDADDS)
+src_vserver_info_LDFLAGS = $(VSERVER_LDFLGS)
 src_vserver_stat_SOURCES = src/vserver-stat.c
-src_vserver_stat_LDADD = lib/libvserver.a
-src_vunify_SOURCES = src/vunify.cc src/vutil.cc
-src_vunify_CPPFLAGS = $(AM_CPPFLAGS) -DVROOTDIR=\"$(vserverdir)\"
-src_vcheck_SOURCES = src/vcheck.cc src/vutil.cc
-distrib_SCRPTS = distrib/install-mdk8.2 \
-                         distrib/install-post.sh \
-                         distrib/install-pre.sh \
-                         distrib/install-rh7.2 \
-                         distrib/install-rh7.3 \
-                         distrib/install-rh8.0 \
-                         distrib/install-rh9.0 \
-                         distrib/install-fc1 \
-                         distrib/sample.sh
-
-distrib_DAT = distrib/mdk8.2-minimum \
-                         distrib/rh7.3-minimum \
-                         distrib/rh8.0-minimum \
-                         distrib/rh9.0-minimum \
-                         distrib/fc1-minimum \
-                         distrib/sample.conf
-
-doc_DAT = doc/intro.txt
-man_DATMAN = man/chbind.8 \
+src_vserver_stat_LDADD = $(LIBINTERNAL) $(VSERVER_LDADDS) $(LIBENSCVECTOR)
+src_vserver_stat_LDFLAGS = $(VSERVER_LDFLGS)
+src_lsxid_SOURCES = src/fstool.c src/lsxid.c
+src_lsxid_LDADD = $(LIBINTERNAL) $(VSERVER_LDADDS) $(LIBENSCVECTOR)
+src_lsxid_LDFLAGS = $(VSERVER_LDFLGS) 
+src_chxid_SOURCES = src/fstool.c src/chxid.c
+src_chxid_LDADD = $(LIBINTERNAL) $(VSERVER_LDADDS)
+src_chxid_LDFLAGS = $(VSERVER_LDFLGS)
+src_showattr_SOURCES = src/fstool.c src/showattr.c
+src_showattr_LDADD = $(LIBINTERNAL) $(VSERVER_LDADDS)
+src_showattr_LDFLAGS = $(VSERVER_LDFLGS)
+src_setattr_SOURCES = src/fstool.c src/setattr.c
+src_setattr_LDADD = $(LIBINTERNAL) $(VSERVER_LDADDS)
+src_setattr_LDFLAGS = $(VSERVER_LDFLGS)
+src_keep_ctx_alive_SOURCES = src/keep-ctx-alive.c
+src_keep_ctx_alive_LDADD = $(VSERVER_LDADDS)
+src_keep_ctx_alive_LDFLAGS = $(VSERVER_LDFLGS)
+src_vcopy_SOURCES = src/vcopy.c
+src_vcopy_LDADD = $(LIBINTERNAL) $(VSERVER_LDADDS)
+src_vcopy_LDFLAGS = $(VSERVER_LDFLGS)
+src_vunify_SOURCES = src/vunify.c
+src_vunify_LDADD = $(LIBINTERNAL) $(VSERVER_LDADDS)
+src_vunify_LDFLAGS = $(VSERVER_LDFLGS)
+src_vhashify_SOURCES = src/vhashify.c
+@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@src_vhashify_LDADD = $(LIBINTERNAL_GLIBC) $(LIBENSCVECTOR_GLIBC) $(LIBVSERVER_GLIBC) -lbeecrypt
+@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@src_vhashify_LDADD = $(LIBINTERNAL) $(LIBENSCVECTOR) -lbeecrypt $(VSERVER_LDADDS)
+@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@src_vhashify_LDFLAGS = 
+@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@src_vhashify_LDFLAGS = $(VSERVER_LDFLGS)
+src_vuname_SOURCES = src/vuname.c
+src_vuname_LDADD = $(VSERVER_LDADDS)
+src_vuname_LDFLAGS = $(VSERVER_LDFLGS)
+src_rpm_fake_la_SOURCES = src/rpm-fake.c
+src_rpm_fake_la_CFLAGS = $(AM_CFLAGS)
+src_rpm_fake_la_LDFLAGS = -module -avoid-version -rpath $(pkglibdir)
+src_rpm_fake_la_LIBADD = $(LIBVSERVER_GLIBC) -ldl
+src_vdlimit_SOURCES = src/vdlimit.c
+src_vdlimit_LDADD = $(VSERVER_LDADDS)
+src_vdlimit_LDFLAGS = $(VSERVER_LDFLGS)
+src_vwait_SOURCES = src/vwait.c
+src_vwait_LDADD = $(VSERVER_LDADDS)
+src_vwait_LDFLAGS = $(VSERVER_LDFLGS)
+@ENSC_HAVE_C99_COMPILER_FALSE@src_sbin_C99_X_PROGS = 
+@ENSC_HAVE_C99_COMPILER_TRUE@src_sbin_C99_X_PROGS = $(src_sbin_C99_PROGS)
+@ENSC_HAVE_C99_COMPILER_FALSE@src_pkglib_C99_X_PROGS = 
+@ENSC_HAVE_C99_COMPILER_TRUE@src_pkglib_C99_X_PROGS = $(src_pkglib_C99_PROGS)
+@ENSC_HAVE_CXX_COMPILER_FALSE@src_sbin_CXX_X_PROGS = 
+@ENSC_HAVE_CXX_COMPILER_TRUE@src_sbin_CXX_X_PROGS = $(src_sbin_CXX_PROGS)
+@ENSC_HAVE_CXX_COMPILER_FALSE@src_pkglib_CXX_X_PROGS = 
+@ENSC_HAVE_CXX_COMPILER_TRUE@src_pkglib_CXX_X_PROGS = $(src_pkglib_CXX_PROGS)
+src_testsuite_check_active_PRGS = src/testsuite/vunify-functest \
+                                       src/testsuite/chcontext-test \
+                                       src/testsuite/chbind-test
+
+src_testsuite_check_passive_PRGS = src/testsuite/rpm-fake-test
+@ENSC_HAVE_C99_COMPILER_FALSE@src_testsuite_check_src_C99_SCRPTS = 
+@ENSC_HAVE_C99_COMPILER_TRUE@src_testsuite_check_src_C99_SCRPTS = src/testsuite/vunify-test.sh
+src_testsuite_check_src_SCRPTS = $(src_testsuite_check_src_C99_SCRPTS)
+src_testsuite_check_gen_SCRPTS = 
+src_testsuite_rpm_fake_test_SOURCES = src/testsuite/rpm-fake-test.c
+src_testsuite_vunify_functest_SOURCES = src/testsuite/vunify-functest.c
+src_testsuite_vunify_functest_LDADD = $(LIBINTERNAL)
+src_testsuite_vunify_functest_CPPFLAGS = $(AM_CPPFLAGS) $(src_testsuite_CPPFLAGS)
+src_testsuite_chcontext_test_SOURCES = src/testsuite/chcontext-test.c
+src_testsuite_chcontext_test_LDADD = lib/libvserver.la $(LIBINTERNAL)
+src_testsuite_chbind_test_SOURCES = src/testsuite/chbind-test.c
+src_testsuite_chbind_test_LDADD = lib/libvserver.la
+src_testsuite_CPPFLAGS = -I $(top_srcdir)/src -D ENSC_TESTSUITE
+doc_old_doc = doc/intro.txt
+XSLT_AMFLAGS = --stringparam confdir '$(sysconfdir)/vservers'
+XSLTP_AMFLAGS = -param confdir '$(sysconfdir)/vservers'
+doc_gen_DOCS = doc/configuration.html \
+                               doc/compatibility.html
+
+doc_configuration_SRCS = doc/configuration.xml \
+                               doc/configuration.xsd \
+                               doc/configuration.dtd \
+                               doc/configuration.css \
+                               doc/configuration-xhtml.xsl
+
+doc_compatibility_SRCS = doc/compatibility.xml \
+                               doc/compatibility.dtd \
+                               doc/compatibility-xhtml.xsl
+
+man_pages = man/chbind.8 \
                           man/chcontext.8 \
                           man/distrib-info.8 \
                           man/rebootmgr.8 \
                           man/reducecap.8 \
                           man/vps.8 \
                           man/vpstree.8 \
-                          man/vrpm.8 \
                           man/vserver-copy.8 \
                           man/vserver-stat.8 \
                           man/vserver.8 \
                           man/vtop.8
 
-scriptscfgdir = $(sbindir)
-scripts_src_SCRPTS = scripts/distrib-info \
-                          scripts/rootshell \
-                          scripts/save_s_context \
-                          scripts/vprofile \
-                          scripts/vserverkillall \
-                          scripts/vservers.grabinfo.sh \
-                          scripts/vsysvwrapper
-
-scripts_gen_SCRPTS = 
-scripts_src_LEGSCRPTS = scripts/vunify.sh
-scripts_gen_LEGSCRPTS = scripts/vkill
-scripts_src_PRGS = scripts/vpstree \
-                          scripts/vrpm \
-                          scripts/vserver \
-                          scripts/vserver-copy \
-                          scripts/vtop
-
-scripts_gen_PRGS = scripts/vps
-scripts_PRGS = $(scripts_src_PRGS) $(scripts_gen_PRGS)
-scripts_SCRPTS = $(scripts_src_SCRPTS) $(scripts_gen_SCRPTS)
-scripts_LEGSCRPTS = $(scripts_src_LEGSCRPTS) $(scripts_gen_LEGSCRPTS)
-scriptscfg_DATA = scripts/util-vserver-vars
-scripts_XTRAS = scripts/util-vserver-vars.subst \
-                          scripts/vkill.subst \
-                          scripts/vps.subst \
-                          $(scripts_src_SCRPTS) $(scripts_src_PRGS) \
-                          $(scripts_src_LEGSCRPTS)
-
-scripts_GENSCRPTS = scripts/util-vserver-vars \
-                          $(scripts_gen_SCRPTS) $(scripts_gen_PRGS) \
-                          $(scripts_gen_LEGSCRPTS)
-
-test_PRGS = tests/escaperoot \
-                          tests/forkbomb \
-                          tests/testipc \
-                          tests/testlimit \
-                          tests/testopenf
-
-tests_escaperoot_SOURCES = tests/escaperoot.cc
-tests_forkbomb_SOURCES = tests/forkbomb.cc
-tests_testipc_SOURCES = tests/testipc.cc
-tests_testlimit_SOURCES = tests/testlimit.cc
-tests_testopenf_SOURCES = tests/testopenf.cc
-sysv_XTRAS = sysv/rebootmgr.subst \
-                          sysv/v_gated.subst \
-                          sysv/v_httpd.subst \
-                          sysv/v_named.subst \
-                          sysv/v_portmap.subst \
-                          sysv/v_sendmail.subst \
-                          sysv/v_smb.subst \
-                          sysv/v_sshd.subst \
-                          sysv/v_xinetd.subst \
-                          sysv/vservers.subst
-
-sysv_GENSCRPTS = sysv/rebootmgr \
-                          sysv/v_gated \
-                          sysv/v_httpd \
-                          sysv/v_named \
-                          sysv/v_portmap \
-                          sysv/v_sendmail \
-                          sysv/v_smb \
-                          sysv/v_sshd \
-                          sysv/v_xinetd \
-                          sysv/vservers
-
-sysv_SCRPTS = $(sysv_GENSCRPTS)
-sysv_CFG = sysv/vservers.conf
-linuxconf_gen_SCRPTS = linuxconf/newvserver
-linuxconf_src_DATMAN = linuxconf/newvserver.8
-linuxconf_cfg_src_DTA = linuxconf/newvserver.defaults
-linuxconf_XTRAS = linuxconf/newvserver.subst \
-                          $(linuxconf_cfg_src_DTA) \
-                          $(linuxconf_src_DATMAN)
-
-linuxconf_GENFILES = $(linuxconf_gen_SCRPTS)
-@ENSC_ENABLE_LINUXCONF_FALSE@linuxconf_DATMAN = 
-@ENSC_ENABLE_LINUXCONF_TRUE@linuxconf_DATMAN = $(linuxconf_src_DATMAN)
-@ENSC_ENABLE_LINUXCONF_FALSE@linuxconf_SCRPTS = 
-@ENSC_ENABLE_LINUXCONF_TRUE@linuxconf_SCRPTS = $(linuxconf_gen_SCRPTS)
-@ENSC_ENABLE_LINUXCONF_FALSE@linuxconf_cfg_DTA = 
-@ENSC_ENABLE_LINUXCONF_TRUE@linuxconf_cfg_DTA = $(linuxconf_cfg_src_DTA)
+scripts_pkglib_src_DTA = scripts/functions \
+                               scripts/vserver-build.apt-rpm \
+                               scripts/vserver-build.skeleton \
+                               scripts/vserver-build.debootstrap \
+                               scripts/vserver-build.rpm \
+                               scripts/vserver-build.yum \
+                               scripts/vserver-build.functions \
+                               scripts/vserver-build.functions.apt \
+                               scripts/vserver-build.functions.rpm \
+                               scripts/vserver-build.functions.pkgmgmt \
+                               scripts/vserver-build.functions.yum \
+                               scripts/vserver-setup.functions \
+                               scripts/vserver.functions \
+                               scripts/vserver.start \
+                               scripts/vserver.stop \
+                               scripts/vserver.suexec
+
+scripts_pkglib_gen_DTA = scripts/util-vserver-vars
+scripts_pkglib_src_SCRPTS = scripts/pkgmgmt \
+                               scripts/vapt-get-worker \
+                               scripts/vpkg \
+                               scripts/vrpm-worker \
+                               scripts/vrpm-preload \
+                               scripts/start-vservers \
+                               scripts/vprocunhide \
+                               scripts/vserver-build \
+                               scripts/vserver-wrapper \
+                               scripts/vservers.grabinfo.sh \
+                               scripts/vshelper \
+                               scripts/vsysvwrapper \
+                               scripts/vyum-worker
+
+scripts_legacy_src_SCRPTS = scripts/legacy/save_s_context \
+                               scripts/legacy/vserver \
+                               scripts/legacy/rootshell \
+                               scripts/legacy/distrib-info \
+                               scripts/legacy/vserverkillall
+
+scripts_legacy_gen_SCRPTS = scripts/legacy/vps
+scripts_legacy_src_PRGS = scripts/legacy/vserver-copy
+scripts_sbin_src_PRGS = scripts/chcontext \
+                               scripts/vapt-get \
+                               scripts/vpstree \
+                               scripts/vrpm \
+                               scripts/vserver \
+                               scripts/vsomething \
+                               scripts/vtop \
+                               scripts/vyum
+
+scripts_sbin_gen_PRGS = 
+scripts_sbincfg_gen_DTA = 
+scripts_subst_SRCS = scripts/util-vserver-vars.pathsubst \
+                               scripts/legacy/vps.pathsubst
+
+scripts_sbincfg_DTA = $(scripts_sbincfg_gen_DTA)
+tests_dietprogs = tests/getctx \
+                               tests/getinitpid \
+                               tests/vserver-info
+
+tests_escaperoot_SOURCES = tests/escaperoot.c
+tests_forkbomb_SOURCES = tests/forkbomb.c
+tests_testipc_SOURCES = tests/testipc.c
+tests_testlimit_SOURCES = tests/testlimit.c
+tests_testopenf_SOURCES = tests/testopenf.c
+tests_getctx_SOURCES = tests/getctx.c
+tests_getctx_LDADD = $(VSERVER_LDADDS)
+tests_getctx_LDFLAGS = $(VSERVER_LDFLGS)
+tests_getinitpid_SOURCES = tests/getinitpid.c
+tests_getinitpid_LDADD = $(VSERVER_LDADDS)
+tests_getinitpid_LDFLAGS = $(VSERVER_LDFLGS)
+tests_vserver_info_SOURCES = tests/vserver-info.c
+tests_vserver_info_LDADD = $(VSERVER_LDADDS)
+tests_vserver_info_LDFLAGS = $(VSERVER_LDFLGS)
+sysv_src_SCRPTS = sysv/rebootmgr \
+                       sysv/vprocunhide \
+                       sysv/vservers-default \
+                       sysv/vservers-legacy
+
+sysv_gen_SCRPTS = sysv/v_gated \
+                       sysv/v_httpd \
+                       sysv/v_named \
+                       sysv/v_portmap \
+                       sysv/v_sendmail \
+                       sysv/v_smb \
+                       sysv/v_sshd \
+                       sysv/v_xinetd
+
+sysv_conf_DTA = sysv/vservers.conf
+sysv_SUBSTRULE = s!/usr/lib/util-vserver!$(pkglibdir)!g; \
+                       s!^USR_SBIN=/usr/sbin$$!USR_SBIN=$(sbindir)!g; \
+                        s!^DEFAULT_VSERVERDIR=/vservers$$!DEFAULT_VSERVERDIR=$(vserverdir)!g
+
+contrib_gen_DTA = contrib/manifest.dat
+contrib_subst_SRCS = contrib/manifest.dat.pathsubst
+ENSC_VECTOR_SRCS = ensc_vector/vector-clear.c \
+                               ensc_vector/vector-foreach.c \
+                               ensc_vector/vector-free.c \
+                               ensc_vector/vector-init.c \
+                               ensc_vector/vector-insert.c \
+                               ensc_vector/vector-internal.h \
+                               ensc_vector/vector-popback.c \
+                               ensc_vector/vector-pushback.c \
+                               ensc_vector/vector-resize.c \
+                               ensc_vector/vector-resizeinternal.hc \
+                               ensc_vector/vector-search.c \
+                               ensc_vector/vector-searchselforg.c \
+                               ensc_vector/vector-sort.c \
+                               ensc_vector/vector-unique.c \
+                               ensc_vector/vector-zeroend.c \
+                               ensc_vector/list-at.c \
+                               ensc_vector/list-add.c \
+                               ensc_vector/list-free.c \
+                               ensc_vector/list-init.c \
+                               ensc_vector/list-insertinternal.c \
+                               ensc_vector/list-internal.h \
+                               ensc_vector/list-search.c \
+                               ensc_vector/list-searchselforg.c
+
+ENSC_VECTOR_HDRS = ensc_vector/vector.h \
+                               ensc_vector/vector.hc \
+                               ensc_vector/list.h \
+                               ensc_vector/list.hc
+
+libensc_vector_glibc_a_SOURCES = $(ENSC_VECTOR_SRCS)
+libensc_vector_glibc_a_CPPFLAGS = $(AM_CPPFLAGS)
+libensc_vector_diet_a_SOURCES = $(ENSC_VECTOR_SRCS)
+libensc_vector_diet_a_CPPFLAGS = $(AM_CPPFLAGS)
+ENSC_VECTOR_LIBS = $(am__append_8) $(am__append_9)
+@ENSC_USE_GLIBC_FALSE@LIBENSCVECTOR_GLIBC = lib-glibc-not-enabled-error.a
+@ENSC_USE_GLIBC_TRUE@LIBENSCVECTOR_GLIBC = libensc_vector-glibc.a
+@ENSC_USE_DIETLIBC_FALSE@LIBENSCVECTOR_DIET = lib-dietlibc-not-enabled-error.a
+@ENSC_USE_DIETLIBC_TRUE@LIBENSCVECTOR_DIET = libensc_vector-diet.a
+@ENSC_USE_DIETLIBC_FALSE@@ENSC_USE_GLIBC_FALSE@LIBENSCVECTOR = lib-nolib-enabled-error.a
+@ENSC_USE_DIETLIBC_FALSE@@ENSC_USE_GLIBC_TRUE@LIBENSCVECTOR = $(LIBENSCVECTOR_GLIBC)
+@ENSC_USE_DIETLIBC_TRUE@LIBENSCVECTOR = $(LIBENSCVECTOR_DIET)
+ensc_vector_testsuite_test1_SOURCES = ensc_vector/testsuite/test1.c
+ensc_vector_testsuite_test1_LDADD = $(LIBENSCVECTOR)
+ensc_vector_testsuite_test2_SOURCES = ensc_vector/testsuite/test2.c
+ensc_vector_testsuite_test2_LDADD = $(LIBENSCVECTOR)
+ensc_fmt_SRCS = \
+                       ensc_fmt/fmt-32.c \
+                        ensc_fmt/fmt-64.c \
+                        ensc_fmt/fmtx-32.c \
+                        ensc_fmt/fmtx-64.c \
+                       ensc_fmt/fmt-tai64n.c \
+                       ensc_fmt/fmt.h \
+                       ensc_fmt/fmt.hc \
+                       ensc_fmt/fmtx.hc \
+                       ensc_fmt/fmt-internal.h
+
+LIBINTERNAL_GLIBC = lib_internal/libinternal-glibc.a
+@USE_DIETLIBC_FALSE@LIBINTERNAL_DIET = lib-dietlibc-not-enabled-error.a
+@USE_DIETLIBC_TRUE@LIBINTERNAL_DIET = lib_internal/libinternal-diet.a
+@USE_DIETLIBC_FALSE@LIBINTERNAL = $(LIBINTERNAL_GLIBC)
+@USE_DIETLIBC_TRUE@LIBINTERNAL = $(LIBINTERNAL_DIET)
+command_SRCS = lib_internal/command-appendparameter.c \
+                               lib_internal/command-setparams.c \
+                               lib_internal/command-exec.c\
+                               lib_internal/command-free.c \
+                               lib_internal/command-init.c \
+                               lib_internal/command-reset.c \
+                               lib_internal/command-wait.c \
+                               lib_internal/command.h
+
+@ENSC_HAVE_C99_COMPILER_TRUE@filecfg_SRCS = lib_internal/filecfg.h \
+@ENSC_HAVE_C99_COMPILER_TRUE@                          lib_internal/filecfg-iteratemultiline.c \
+@ENSC_HAVE_C99_COMPILER_TRUE@                          lib_internal/filecfg-readentryflag.c \
+@ENSC_HAVE_C99_COMPILER_TRUE@                          lib_internal/filecfg-readentrystr.c \
+@ENSC_HAVE_C99_COMPILER_TRUE@                          lib_internal/matchlist-initbyvserver.c \
+@ENSC_HAVE_C99_COMPILER_TRUE@                          lib_internal/matchvserverinfo-init.c \
+@ENSC_HAVE_C99_COMPILER_TRUE@                          lib_internal/unify-copy.c
+
+lib_internal_libinternal_common_SRCS = \
+                               lib_internal/errinfo-writeerrno.c \
+                               lib_internal/jailintotempdir.c \
+                               lib_internal/matchlist-appendfiles.c \
+                               lib_internal/matchlist-compare.c \
+                               lib_internal/matchlist-destroy.c \
+                               lib_internal/matchlist-init.c \
+                               lib_internal/matchlist-initmanually.c \
+                               lib_internal/matchlist-initrefserverlist.c \
+                               lib_internal/matchlist-printid.c \
+                               lib_internal/matchvserverinfo-free.c \
+                               lib_internal/pathinfo-append.c \
+                               lib_internal/pathinfo-test.c \
+                               lib_internal/switchtowatchxid.c \
+                               lib_internal/unify-deunify.c \
+                               lib_internal/unify-settime.c \
+                               lib_internal/unify-unify.c \
+                               lib_internal/unify-isiunlinkable.c \
+                               lib_internal/util-canonify.c \
+                               lib_internal/util-exitlikeprocess.c \
+                               lib_internal/util-isnumber.c \
+                               lib_internal/util-lockfile.c \
+                               lib_internal/util-safechdir.c \
+                               $(command_SRCS) \
+                               $(filecfg_SRCS)
+
+lib_internal_libinternal_diet_a_SOURCES = \
+                               $(lib_internal_libinternal_common_SRCS)
+
+lib_internal_libinternal_glibc_a_SOURCES = \
+                               $(lib_internal_libinternal_common_SRCS)
+
+lib_internal_libinternal_diet_a_CPPFLAGS = $(AM_CPPFLAGS) $(LIB_DEBUG_CPPFLAGS)
+lib_internal_libinternal_glibc_a_CPPFLAGS = $(AM_CPPFLAGS) $(LIB_DEBUG_CPPFLAGS)
+lib_internal_testsuite_command_SOURCES = lib_internal/testsuite/command.c
+lib_internal_testsuite_command_LDADD = $(LIBINTERNAL_GLIBC) \
+                                               $(LIBENSCVECTOR_GLIBC)
+
+lib_internal_testsuite_filecfg_ml_SOURCES = lib_internal/testsuite/filecfg-ml.c
+lib_internal_testsuite_filecfg_ml_LDADD = $(LIBINTERNAL_GLIBC)
+lib_internal_testsuite_copy_SOURCES = lib_internal/testsuite/copy.c
+lib_internal_testsuite_copy_LDADD = $(LIBINTERNAL_GLIBC)
+lib_internal_testsuite_sigbus_SOURCES = lib_internal/testsuite/sigbus.c
+vserver_start_vserver_start_bin_SOURCES = \
+                                               vserver-start/main.c \
+                                               vserver-start/mount.c \
+                                               vserver-start/mount.h \
+                                               vserver-start/defaulttty.c \
+                                               vserver-start/scriptlets.c \
+                                               vserver-start/undo.c \
+                                               vserver-start/undo.h \
+                                               vserver-start/vshelper.c \
+                                               vserver-start/vshelper.h \
+                                               vserver-start/interface.c \
+                                               vserver-start/interface.h \
+                                               vserver-start/interface-add.c \
+                                               vserver-start/interface-read.c \
+                                               vserver-start/interface-free.hc \
+                                               vserver-start/interface-init.hc \
+                                               vserver-start/interface-remove.c \
+                                               vserver-start/interface-print.c \
+                                               vserver-start/configuration.c \
+                                               vserver-start/configuration-init.c \
+                                               vserver-start/configuration.h \
+                                               vserver-start/vserver-start.h
+
+vserver_start_vserver_start_bin_LDADD = $(VSERVER_LDADDS) \
+                                               $(LIBINTERNAL) \
+                                               $(LIBENSCVECTOR)
+
+vserver_start_vserver_start_bin_LDFLAGS = $(VSERVER_LDFLGS)
+BAD_INC_PATHS = /usr/include|/usr/local/include
+BAD_LIB_PATHS = /usr/lib
+pkgconfdir = $(libdir)/pkgconfig
+pkgconf_DATA = $(addsuffix .pc, $(PKGCONFIG_FILES))
+@ENSC_USE_GLIBC_FALSE@nodist_lib_glibc_not_enabled_error_a_SOURCES = \
+@ENSC_USE_GLIBC_FALSE@                         lib-glibc-not-enabled-error.c
+
 all: $(BUILT_SOURCES) config.h
-       $(MAKE) $(AM_MAKEFLAGS) all-am
+       $(MAKE) $(AM_MAKEFLAGS) all-recursive
 
 .SUFFIXES:
-.SUFFIXES: .c .cc .o .obj
+.SUFFIXES: .c .lo .o .obj
 am--refresh:
        @:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib/Makefile-files $(top_srcdir)/src/Makefile-files $(top_srcdir)/distrib/Makefile-files $(top_srcdir)/doc/Makefile-files $(top_srcdir)/man/Makefile-files $(top_srcdir)/scripts/Makefile-files $(top_srcdir)/tests/Makefile-files $(top_srcdir)/sysv/Makefile-files $(top_srcdir)/linuxconf/Makefile-files $(top_srcdir)/m4/gpgsig.am $(top_srcdir)/m4/validate.am $(top_srcdir)/m4/changelog.am $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/lib/Makefile-files $(srcdir)/lib/apidoc/Makefile-files $(srcdir)/lib/testsuite/Makefile-files $(top_srcdir)/src/Makefile-files $(top_srcdir)/src/testsuite/Makefile-files $(top_srcdir)/doc/Makefile-files $(top_srcdir)/man/Makefile-files $(top_srcdir)/scripts/Makefile-files $(top_srcdir)/tests/Makefile-files $(top_srcdir)/sysv/Makefile-files $(top_srcdir)/contrib/Makefile-files $(top_srcdir)/ensc_vector/Makefile-files $(srcdir)/ensc_vector/testsuite/Makefile-files $(top_srcdir)/ensc_wrappers/Makefile-files $(top_srcdir)/ensc_fmt/Makefile-files $(top_srcdir)/lib_internal/Makefile-files $(top_srcdir)/lib_internal/testsuite/Makefile-files $(top_srcdir)/vserver-start/Makefile-files $(top_srcdir)/m4/gpgsig.am $(top_srcdir)/m4/validate.am $(top_srcdir)/m4/changelog.am $(top_srcdir)/m4/pkgconfig.am $(top_srcdir)/m4/libsel.am $(top_srcdir)/m4/install-notify.am $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
-             echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
-             cd $(srcdir) && $(AUTOMAKE) --gnu  \
+             echo ' cd $(srcdir) && $(AUTOMAKE) --gnits '; \
+             cd $(srcdir) && $(AUTOMAKE) --gnits  \
                && exit 0; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  Makefile'; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits  Makefile'; \
        cd $(top_srcdir) && \
-         $(AUTOMAKE) --gnu  Makefile
+         $(AUTOMAKE) --gnits  Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -692,12 +2127,14 @@ distclean-hdr:
        -rm -f config.h stamp-h1
 util-vserver.spec: $(top_builddir)/config.status $(srcdir)/util-vserver.spec.in
        cd $(top_builddir) && $(SHELL) ./config.status $@
+lib/apidoc/Doxyfile: $(top_builddir)/config.status $(top_srcdir)/lib/apidoc/Doxyfile.in
+       cd $(top_builddir) && $(SHELL) ./config.status $@
 install-libLIBRARIES: $(lib_LIBRARIES)
        @$(NORMAL_INSTALL)
        test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
        @list='$(lib_LIBRARIES)'; for p in $$list; do \
          if test -f $$p; then \
-           f="`echo $$p | sed -e 's|^.*/||'`"; \
+           f=$(am__strip_dir) \
            echo " $(libLIBRARIES_INSTALL) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
            $(libLIBRARIES_INSTALL) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
          else :; fi; \
@@ -705,7 +2142,7 @@ install-libLIBRARIES: $(lib_LIBRARIES)
        @$(POST_INSTALL)
        @list='$(lib_LIBRARIES)'; for p in $$list; do \
          if test -f $$p; then \
-           p="`echo $$p | sed -e 's|^.*/||'`"; \
+           p=$(am__strip_dir) \
            echo " $(RANLIB) '$(DESTDIR)$(libdir)/$$p'"; \
            $(RANLIB) "$(DESTDIR)$(libdir)/$$p"; \
          else :; fi; \
@@ -714,13 +2151,24 @@ install-libLIBRARIES: $(lib_LIBRARIES)
 uninstall-libLIBRARIES:
        @$(NORMAL_UNINSTALL)
        @list='$(lib_LIBRARIES)'; for p in $$list; do \
-         p="`echo $$p | sed -e 's|^.*/||'`"; \
+         p=$(am__strip_dir) \
          echo " rm -f '$(DESTDIR)$(libdir)/$$p'"; \
          rm -f "$(DESTDIR)$(libdir)/$$p"; \
        done
 
 clean-libLIBRARIES:
        -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
+
+clean-noinstLIBRARIES:
+       -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+lib-dietlibc-not-enabled-error.a: $(lib_dietlibc_not_enabled_error_a_OBJECTS) $(lib_dietlibc_not_enabled_error_a_DEPENDENCIES) 
+       -rm -f lib-dietlibc-not-enabled-error.a
+       $(lib_dietlibc_not_enabled_error_a_AR) lib-dietlibc-not-enabled-error.a $(lib_dietlibc_not_enabled_error_a_OBJECTS) $(lib_dietlibc_not_enabled_error_a_LIBADD)
+       $(RANLIB) lib-dietlibc-not-enabled-error.a
+lib-glibc-not-enabled-error.a: $(lib_glibc_not_enabled_error_a_OBJECTS) $(lib_glibc_not_enabled_error_a_DEPENDENCIES) 
+       -rm -f lib-glibc-not-enabled-error.a
+       $(lib_glibc_not_enabled_error_a_AR) lib-glibc-not-enabled-error.a $(lib_glibc_not_enabled_error_a_OBJECTS) $(lib_glibc_not_enabled_error_a_LIBADD)
+       $(RANLIB) lib-glibc-not-enabled-error.a
 lib/$(am__dirstamp):
        @$(mkdir_p) lib
        @: > lib/$(am__dirstamp)
@@ -729,35 +2177,847 @@ lib/$(DEPDIR)/$(am__dirstamp):
        @: > lib/$(DEPDIR)/$(am__dirstamp)
 lib/lib_libvserver_a-syscall.$(OBJEXT): lib/$(am__dirstamp) \
        lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-checkversion.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-isdirectory.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-isfile.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-islink.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-getnbipv4root.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-getversion.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-capabilities.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-getfilecontext.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-getinsecurebcaps.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-getxidtype.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-isdynamicxid.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-issupported.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-issupportedstring.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-listparser_uint32.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-listparser_uint64.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-personalityflag.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-personalityflag_list.$(OBJEXT):  \
+       lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-personalitytype.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall-syscall.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-val2text-t2v-uint32.$(OBJEXT):  \
+       lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-val2text-t2v-uint64.$(OBJEXT):  \
+       lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-val2text-v2t-uint32.$(OBJEXT):  \
+       lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-val2text-v2t-uint64.$(OBJEXT):  \
+       lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-parselimit.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-getprocentry-legacy.$(OBJEXT):  \
+       lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-cflags-compat.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-cflags_list-compat.$(OBJEXT):  \
+       lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-createskeleton.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-getvserverbyctx.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-getvservercfgstyle.$(OBJEXT):  \
+       lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-getvserverappdir.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-getvservercfgdir.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-getvserverctx.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-getvservername.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-getvservervdir.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-xidopt2xid.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
 lib/lib_libvserver_a-syscall_rlimit.$(OBJEXT): lib/$(am__dirstamp) \
        lib/$(DEPDIR)/$(am__dirstamp)
 lib/lib_libvserver_a-syscall_kill.$(OBJEXT): lib/$(am__dirstamp) \
        lib/$(DEPDIR)/$(am__dirstamp)
-lib/lib_libvserver_a-checkversion.$(OBJEXT): lib/$(am__dirstamp) \
+lib/lib_libvserver_a-syscall_ctxcreate.$(OBJEXT): lib/$(am__dirstamp) \
        lib/$(DEPDIR)/$(am__dirstamp)
-lib/lib_libvserver_a-getctx.$(OBJEXT): lib/$(am__dirstamp) \
+lib/lib_libvserver_a-syscall_ctxmigrate.$(OBJEXT):  \
+       lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_cleanupnamespace.$(OBJEXT):  \
+       lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_enternamespace.$(OBJEXT):  \
+       lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_getccaps.$(OBJEXT): lib/$(am__dirstamp) \
        lib/$(DEPDIR)/$(am__dirstamp)
-lib/lib_libvserver_a-getversion.$(OBJEXT): lib/$(am__dirstamp) \
+lib/lib_libvserver_a-syscall_getcflags.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_getiattr.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_getncaps.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_getnflags.$(OBJEXT): lib/$(am__dirstamp) \
        lib/$(DEPDIR)/$(am__dirstamp)
-lib/lib_libvserver_a-uint2str.$(OBJEXT): lib/$(am__dirstamp) \
+lib/lib_libvserver_a-syscall_getnxinfo.$(OBJEXT): lib/$(am__dirstamp) \
        lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_gettasknid.$(OBJEXT):  \
+       lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_gettaskxid.$(OBJEXT):  \
+       lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_getvhiname.$(OBJEXT):  \
+       lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_getvxinfo.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_netadd.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_netcreate.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_netmigrate.$(OBJEXT):  \
+       lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_netremove.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_setccaps.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_setcflags.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_setiattr.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_setnamespace.$(OBJEXT):  \
+       lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_setncaps.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_setnflags.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_setsched.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_setvhiname.$(OBJEXT):  \
+       lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_waitexit.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-bcaps-v13.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-bcaps_list-v13.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-ccaps-v13.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-ccaps_list-v13.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-cflags-v13.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-cflags_list-v13.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-ncaps-net.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-ncaps_list-net.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-nflags-net.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-nflags_list-net.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_adddlimit.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_getdlimit.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_remdlimit.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_a-syscall_setdlimit.$(OBJEXT): lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+ensc_fmt/$(am__dirstamp):
+       @$(mkdir_p) ensc_fmt
+       @: > ensc_fmt/$(am__dirstamp)
+ensc_fmt/$(DEPDIR)/$(am__dirstamp):
+       @$(mkdir_p) ensc_fmt/$(DEPDIR)
+       @: > ensc_fmt/$(DEPDIR)/$(am__dirstamp)
+ensc_fmt/lib_libvserver_a-fmt-32.$(OBJEXT): ensc_fmt/$(am__dirstamp) \
+       ensc_fmt/$(DEPDIR)/$(am__dirstamp)
+ensc_fmt/lib_libvserver_a-fmt-64.$(OBJEXT): ensc_fmt/$(am__dirstamp) \
+       ensc_fmt/$(DEPDIR)/$(am__dirstamp)
+ensc_fmt/lib_libvserver_a-fmtx-32.$(OBJEXT): ensc_fmt/$(am__dirstamp) \
+       ensc_fmt/$(DEPDIR)/$(am__dirstamp)
+ensc_fmt/lib_libvserver_a-fmtx-64.$(OBJEXT): ensc_fmt/$(am__dirstamp) \
+       ensc_fmt/$(DEPDIR)/$(am__dirstamp)
+ensc_fmt/lib_libvserver_a-fmt-tai64n.$(OBJEXT):  \
+       ensc_fmt/$(am__dirstamp) ensc_fmt/$(DEPDIR)/$(am__dirstamp)
 lib/libvserver.a: $(lib_libvserver_a_OBJECTS) $(lib_libvserver_a_DEPENDENCIES) lib/$(am__dirstamp)
        -rm -f lib/libvserver.a
        $(lib_libvserver_a_AR) lib/libvserver.a $(lib_libvserver_a_OBJECTS) $(lib_libvserver_a_LIBADD)
        $(RANLIB) lib/libvserver.a
+lib_internal/$(am__dirstamp):
+       @$(mkdir_p) lib_internal
+       @: > lib_internal/$(am__dirstamp)
+lib_internal/$(DEPDIR)/$(am__dirstamp):
+       @$(mkdir_p) lib_internal/$(DEPDIR)
+       @: > lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-errinfo-writeerrno.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-jailintotempdir.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-matchlist-appendfiles.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-matchlist-compare.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-matchlist-destroy.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-matchlist-init.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-matchlist-initmanually.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-matchlist-initrefserverlist.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-matchlist-printid.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-matchvserverinfo-free.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-pathinfo-append.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-pathinfo-test.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-switchtowatchxid.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-unify-deunify.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-unify-settime.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-unify-unify.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-unify-isiunlinkable.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-util-canonify.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-util-exitlikeprocess.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-util-isnumber.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-util-lockfile.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-util-safechdir.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-command-appendparameter.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-command-setparams.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-command-exec.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-command-free.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-command-init.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-command-reset.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-command-wait.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-filecfg-iteratemultiline.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-filecfg-readentryflag.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-filecfg-readentrystr.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-matchlist-initbyvserver.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-matchvserverinfo-init.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_diet_a-unify-copy.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/libinternal-diet.a: $(lib_internal_libinternal_diet_a_OBJECTS) $(lib_internal_libinternal_diet_a_DEPENDENCIES) lib_internal/$(am__dirstamp)
+       -rm -f lib_internal/libinternal-diet.a
+       $(lib_internal_libinternal_diet_a_AR) lib_internal/libinternal-diet.a $(lib_internal_libinternal_diet_a_OBJECTS) $(lib_internal_libinternal_diet_a_LIBADD)
+       $(RANLIB) lib_internal/libinternal-diet.a
+lib_internal/lib_internal_libinternal_glibc_a-errinfo-writeerrno.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-jailintotempdir.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-matchlist-appendfiles.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-matchlist-compare.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-matchlist-destroy.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-matchlist-init.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-matchlist-initmanually.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-matchlist-initrefserverlist.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-matchlist-printid.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-matchvserverinfo-free.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-pathinfo-append.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-pathinfo-test.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-switchtowatchxid.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-unify-deunify.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-unify-settime.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-unify-unify.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-unify-isiunlinkable.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-util-canonify.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-util-exitlikeprocess.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-util-isnumber.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-util-lockfile.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-util-safechdir.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-command-appendparameter.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-command-setparams.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-command-exec.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-command-free.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-command-init.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-command-reset.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-command-wait.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-filecfg-iteratemultiline.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-filecfg-readentryflag.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-filecfg-readentrystr.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-matchlist-initbyvserver.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-matchvserverinfo-init.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/lib_internal_libinternal_glibc_a-unify-copy.$(OBJEXT):  \
+       lib_internal/$(am__dirstamp) \
+       lib_internal/$(DEPDIR)/$(am__dirstamp)
+lib_internal/libinternal-glibc.a: $(lib_internal_libinternal_glibc_a_OBJECTS) $(lib_internal_libinternal_glibc_a_DEPENDENCIES) lib_internal/$(am__dirstamp)
+       -rm -f lib_internal/libinternal-glibc.a
+       $(lib_internal_libinternal_glibc_a_AR) lib_internal/libinternal-glibc.a $(lib_internal_libinternal_glibc_a_OBJECTS) $(lib_internal_libinternal_glibc_a_LIBADD)
+       $(RANLIB) lib_internal/libinternal-glibc.a
+ensc_vector/$(am__dirstamp):
+       @$(mkdir_p) ensc_vector
+       @: > ensc_vector/$(am__dirstamp)
+ensc_vector/$(DEPDIR)/$(am__dirstamp):
+       @$(mkdir_p) ensc_vector/$(DEPDIR)
+       @: > ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_diet_a-vector-clear.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_diet_a-vector-foreach.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_diet_a-vector-free.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_diet_a-vector-init.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_diet_a-vector-insert.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_diet_a-vector-popback.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_diet_a-vector-pushback.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_diet_a-vector-resize.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_diet_a-vector-search.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_diet_a-vector-searchselforg.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_diet_a-vector-sort.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_diet_a-vector-unique.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_diet_a-vector-zeroend.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_diet_a-list-at.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_diet_a-list-add.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_diet_a-list-free.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_diet_a-list-init.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_diet_a-list-insertinternal.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_diet_a-list-search.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_diet_a-list-searchselforg.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+libensc_vector-diet.a: $(libensc_vector_diet_a_OBJECTS) $(libensc_vector_diet_a_DEPENDENCIES) 
+       -rm -f libensc_vector-diet.a
+       $(libensc_vector_diet_a_AR) libensc_vector-diet.a $(libensc_vector_diet_a_OBJECTS) $(libensc_vector_diet_a_LIBADD)
+       $(RANLIB) libensc_vector-diet.a
+ensc_vector/libensc_vector_glibc_a-vector-clear.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_glibc_a-vector-foreach.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_glibc_a-vector-free.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_glibc_a-vector-init.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_glibc_a-vector-insert.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_glibc_a-vector-popback.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_glibc_a-vector-pushback.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_glibc_a-vector-resize.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_glibc_a-vector-search.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_glibc_a-vector-searchselforg.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_glibc_a-vector-sort.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_glibc_a-vector-unique.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_glibc_a-vector-zeroend.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_glibc_a-list-at.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_glibc_a-list-add.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_glibc_a-list-free.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_glibc_a-list-init.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_glibc_a-list-insertinternal.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_glibc_a-list-search.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/libensc_vector_glibc_a-list-searchselforg.$(OBJEXT):  \
+       ensc_vector/$(am__dirstamp) \
+       ensc_vector/$(DEPDIR)/$(am__dirstamp)
+libensc_vector-glibc.a: $(libensc_vector_glibc_a_OBJECTS) $(libensc_vector_glibc_a_DEPENDENCIES) 
+       -rm -f libensc_vector-glibc.a
+       $(libensc_vector_glibc_a_AR) libensc_vector-glibc.a $(libensc_vector_glibc_a_OBJECTS) $(libensc_vector_glibc_a_LIBADD)
+       $(RANLIB) libensc_vector-glibc.a
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+       @$(NORMAL_INSTALL)
+       test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
+       @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+         if test -f $$p; then \
+           f=$(am__strip_dir) \
+           echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
+           $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
+         else :; fi; \
+       done
+
+uninstall-libLTLIBRARIES:
+       @$(NORMAL_UNINSTALL)
+       @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+         p=$(am__strip_dir) \
+         echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
+         $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
+       done
+
+clean-libLTLIBRARIES:
+       -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+       @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+         test "$$dir" != "$$p" || dir=.; \
+         echo "rm -f \"$${dir}/so_locations\""; \
+         rm -f "$${dir}/so_locations"; \
+       done
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+       @$(NORMAL_INSTALL)
+       test -z "$(pkglibdir)" || $(mkdir_p) "$(DESTDIR)$(pkglibdir)"
+       @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+         if test -f $$p; then \
+           f=$(am__strip_dir) \
+           echo " $(LIBTOOL) --mode=install $(pkglibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(pkglibdir)/$$f'"; \
+           $(LIBTOOL) --mode=install $(pkglibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(pkglibdir)/$$f"; \
+         else :; fi; \
+       done
+
+uninstall-pkglibLTLIBRARIES:
+       @$(NORMAL_UNINSTALL)
+       @set -x; list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+         p=$(am__strip_dir) \
+         echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$p'"; \
+         $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$p"; \
+       done
+
+clean-pkglibLTLIBRARIES:
+       -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+       @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+         test "$$dir" != "$$p" || dir=.; \
+         echo "rm -f \"$${dir}/so_locations\""; \
+         rm -f "$${dir}/so_locations"; \
+       done
+lib/lib_libvserver_la-syscall.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-checkversion.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-isdirectory.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-isfile.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-islink.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-getnbipv4root.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-getversion.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-capabilities.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-getfilecontext.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-getinsecurebcaps.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-getxidtype.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-isdynamicxid.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-issupported.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-issupportedstring.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-listparser_uint32.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-listparser_uint64.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-personalityflag.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-personalityflag_list.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-personalitytype.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall-syscall.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-val2text-t2v-uint32.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-val2text-t2v-uint64.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-val2text-v2t-uint32.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-val2text-v2t-uint64.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-parselimit.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-getprocentry-legacy.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-cflags-compat.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-cflags_list-compat.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-createskeleton.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-getvserverbyctx.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-getvservercfgstyle.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-getvserverappdir.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-getvservercfgdir.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-getvserverctx.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-getvservername.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-getvservervdir.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-xidopt2xid.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_rlimit.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_kill.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_ctxcreate.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_ctxmigrate.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_cleanupnamespace.lo:  \
+       lib/$(am__dirstamp) lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_enternamespace.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_getccaps.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_getcflags.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_getiattr.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_getncaps.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_getnflags.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_getnxinfo.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_gettasknid.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_gettaskxid.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_getvhiname.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_getvxinfo.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_netadd.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_netcreate.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_netmigrate.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_netremove.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_setccaps.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_setcflags.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_setiattr.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_setnamespace.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_setncaps.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_setnflags.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_setsched.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_setvhiname.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_waitexit.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-bcaps-v13.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-bcaps_list-v13.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-ccaps-v13.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-ccaps_list-v13.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-cflags-v13.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-cflags_list-v13.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-ncaps-net.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-ncaps_list-net.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-nflags-net.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-nflags_list-net.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_adddlimit.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_getdlimit.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_remdlimit.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+lib/lib_libvserver_la-syscall_setdlimit.lo: lib/$(am__dirstamp) \
+       lib/$(DEPDIR)/$(am__dirstamp)
+ensc_fmt/lib_libvserver_la-fmt-32.lo: ensc_fmt/$(am__dirstamp) \
+       ensc_fmt/$(DEPDIR)/$(am__dirstamp)
+ensc_fmt/lib_libvserver_la-fmt-64.lo: ensc_fmt/$(am__dirstamp) \
+       ensc_fmt/$(DEPDIR)/$(am__dirstamp)
+ensc_fmt/lib_libvserver_la-fmtx-32.lo: ensc_fmt/$(am__dirstamp) \
+       ensc_fmt/$(DEPDIR)/$(am__dirstamp)
+ensc_fmt/lib_libvserver_la-fmtx-64.lo: ensc_fmt/$(am__dirstamp) \
+       ensc_fmt/$(DEPDIR)/$(am__dirstamp)
+ensc_fmt/lib_libvserver_la-fmt-tai64n.lo: ensc_fmt/$(am__dirstamp) \
+       ensc_fmt/$(DEPDIR)/$(am__dirstamp)
+lib/libvserver.la: $(lib_libvserver_la_OBJECTS) $(lib_libvserver_la_DEPENDENCIES) lib/$(am__dirstamp)
+       $(LINK) -rpath $(libdir) $(lib_libvserver_la_LDFLAGS) $(lib_libvserver_la_OBJECTS) $(lib_libvserver_la_LIBADD) $(LIBS)
+src/$(am__dirstamp):
+       @$(mkdir_p) src
+       @: > src/$(am__dirstamp)
+src/$(DEPDIR)/$(am__dirstamp):
+       @$(mkdir_p) src/$(DEPDIR)
+       @: > src/$(DEPDIR)/$(am__dirstamp)
+src/src_rpm_fake_la-rpm-fake.lo: src/$(am__dirstamp) \
+       src/$(DEPDIR)/$(am__dirstamp)
+src/rpm-fake.la: $(src_rpm_fake_la_OBJECTS) $(src_rpm_fake_la_DEPENDENCIES) src/$(am__dirstamp)
+       $(LINK) -rpath $(pkglibdir) $(src_rpm_fake_la_LDFLAGS) $(src_rpm_fake_la_OBJECTS) $(src_rpm_fake_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+       @list='$(check_PROGRAMS)'; for p in $$list; do \
+         f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+         echo " rm -f $$p $$f"; \
+         rm -f $$p $$f ; \
+       done
+install-legacyPROGRAMS: $(legacy_PROGRAMS)
+       @$(NORMAL_INSTALL)
+       test -z "$(legacydir)" || $(mkdir_p) "$(DESTDIR)$(legacydir)"
+       @list='$(legacy_PROGRAMS)'; for p in $$list; do \
+         p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+         if test -f $$p \
+            || test -f $$p1 \
+         ; then \
+           f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+          echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(legacyPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(legacydir)/$$f'"; \
+          $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(legacyPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(legacydir)/$$f" || exit 1; \
+         else :; fi; \
+       done
+
+uninstall-legacyPROGRAMS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(legacy_PROGRAMS)'; for p in $$list; do \
+         f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+         echo " rm -f '$(DESTDIR)$(legacydir)/$$f'"; \
+         rm -f "$(DESTDIR)$(legacydir)/$$f"; \
+       done
+
+clean-legacyPROGRAMS:
+       @list='$(legacy_PROGRAMS)'; for p in $$list; do \
+         f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+         echo " rm -f $$p $$f"; \
+         rm -f $$p $$f ; \
+       done
+
+installcheck-legacyPROGRAMS: $(legacy_PROGRAMS)
+       bad=0; pid=$$$$; list="$(legacy_PROGRAMS)"; for p in $$list; do \
+         case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \
+          *" $$p "* | *" $(srcdir)/$$p "*) continue;; \
+         esac; \
+         f=`echo "$$p" | \
+            sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+         for opt in --help --version; do \
+           if "$(DESTDIR)$(legacydir)/$$f" $$opt >c$${pid}_.out \
+                2>c$${pid}_.err </dev/null \
+                && test -n "`cat c$${pid}_.out`" \
+                && test -z "`cat c$${pid}_.err`"; then :; \
+           else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \
+         done; \
+       done; rm -f c$${pid}_.???; exit $$bad
 
 clean-noinstPROGRAMS:
-       -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+       @list='$(noinst_PROGRAMS)'; for p in $$list; do \
+         f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+         echo " rm -f $$p $$f"; \
+         rm -f $$p $$f ; \
+       done
 install-pkglibPROGRAMS: $(pkglib_PROGRAMS)
        @$(NORMAL_INSTALL)
        test -z "$(pkglibdir)" || $(mkdir_p) "$(DESTDIR)$(pkglibdir)"
        @list='$(pkglib_PROGRAMS)'; for p in $$list; do \
          p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
          if test -f $$p \
+            || test -f $$p1 \
          ; then \
            f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
-          echo " $(INSTALL_PROGRAM_ENV) $(pkglibPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(pkglibdir)/$$f'"; \
-          $(INSTALL_PROGRAM_ENV) $(pkglibPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(pkglibdir)/$$f" || exit 1; \
+          echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(pkglibPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(pkglibdir)/$$f'"; \
+          $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(pkglibPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(pkglibdir)/$$f" || exit 1; \
          else :; fi; \
        done
 
@@ -770,17 +3030,38 @@ uninstall-pkglibPROGRAMS:
        done
 
 clean-pkglibPROGRAMS:
-       -test -z "$(pkglib_PROGRAMS)" || rm -f $(pkglib_PROGRAMS)
+       @list='$(pkglib_PROGRAMS)'; for p in $$list; do \
+         f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+         echo " rm -f $$p $$f"; \
+         rm -f $$p $$f ; \
+       done
+
+installcheck-pkglibPROGRAMS: $(pkglib_PROGRAMS)
+       bad=0; pid=$$$$; list="$(pkglib_PROGRAMS)"; for p in $$list; do \
+         case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \
+          *" $$p "* | *" $(srcdir)/$$p "*) continue;; \
+         esac; \
+         f=`echo "$$p" | \
+            sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+         for opt in --help --version; do \
+           if "$(DESTDIR)$(pkglibdir)/$$f" $$opt >c$${pid}_.out \
+                2>c$${pid}_.err </dev/null \
+                && test -n "`cat c$${pid}_.out`" \
+                && test -z "`cat c$${pid}_.err`"; then :; \
+           else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \
+         done; \
+       done; rm -f c$${pid}_.???; exit $$bad
 install-sbinPROGRAMS: $(sbin_PROGRAMS)
        @$(NORMAL_INSTALL)
        test -z "$(sbindir)" || $(mkdir_p) "$(DESTDIR)$(sbindir)"
        @list='$(sbin_PROGRAMS)'; for p in $$list; do \
          p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
          if test -f $$p \
+            || test -f $$p1 \
          ; then \
            f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
-          echo " $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(sbindir)/$$f'"; \
-          $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(sbindir)/$$f" || exit 1; \
+          echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(sbinPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(sbindir)/$$f'"; \
+          $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(sbinPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(sbindir)/$$f" || exit 1; \
          else :; fi; \
        done
 
@@ -793,18 +3074,115 @@ uninstall-sbinPROGRAMS:
        done
 
 clean-sbinPROGRAMS:
-       -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS)
-src/$(am__dirstamp):
-       @$(mkdir_p) src
-       @: > src/$(am__dirstamp)
-src/$(DEPDIR)/$(am__dirstamp):
-       @$(mkdir_p) src/$(DEPDIR)
-       @: > src/$(DEPDIR)/$(am__dirstamp)
+       @list='$(sbin_PROGRAMS)'; for p in $$list; do \
+         f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+         echo " rm -f $$p $$f"; \
+         rm -f $$p $$f ; \
+       done
+
+installcheck-sbinPROGRAMS: $(sbin_PROGRAMS)
+       bad=0; pid=$$$$; list="$(sbin_PROGRAMS)"; for p in $$list; do \
+         case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \
+          *" $$p "* | *" $(srcdir)/$$p "*) continue;; \
+         esac; \
+         f=`echo "$$p" | \
+            sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+         for opt in --help --version; do \
+           if "$(DESTDIR)$(sbindir)/$$f" $$opt >c$${pid}_.out \
+                2>c$${pid}_.err </dev/null \
+                && test -n "`cat c$${pid}_.out`" \
+                && test -z "`cat c$${pid}_.err`"; then :; \
+           else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \
+         done; \
+       done; rm -f c$${pid}_.???; exit $$bad
+ensc_vector/testsuite/$(am__dirstamp):
+       @$(mkdir_p) ensc_vector/testsuite
+       @: > ensc_vector/testsuite/$(am__dirstamp)
+ensc_vector/testsuite/$(DEPDIR)/$(am__dirstamp):
+       @$(mkdir_p) ensc_vector/testsuite/$(DEPDIR)
+       @: > ensc_vector/testsuite/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/testsuite/test1.$(OBJEXT):  \
+       ensc_vector/testsuite/$(am__dirstamp) \
+       ensc_vector/testsuite/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/testsuite/test1$(EXEEXT): $(ensc_vector_testsuite_test1_OBJECTS) $(ensc_vector_testsuite_test1_DEPENDENCIES) ensc_vector/testsuite/$(am__dirstamp)
+       @rm -f ensc_vector/testsuite/test1$(EXEEXT)
+       $(LINK) $(ensc_vector_testsuite_test1_LDFLAGS) $(ensc_vector_testsuite_test1_OBJECTS) $(ensc_vector_testsuite_test1_LDADD) $(LIBS)
+ensc_vector/testsuite/test2.$(OBJEXT):  \
+       ensc_vector/testsuite/$(am__dirstamp) \
+       ensc_vector/testsuite/$(DEPDIR)/$(am__dirstamp)
+ensc_vector/testsuite/test2$(EXEEXT): $(ensc_vector_testsuite_test2_OBJECTS) $(ensc_vector_testsuite_test2_DEPENDENCIES) ensc_vector/testsuite/$(am__dirstamp)
+       @rm -f ensc_vector/testsuite/test2$(EXEEXT)
+       $(LINK) $(ensc_vector_testsuite_test2_LDFLAGS) $(ensc_vector_testsuite_test2_OBJECTS) $(ensc_vector_testsuite_test2_LDADD) $(LIBS)
+lib/testsuite/$(am__dirstamp):
+       @$(mkdir_p) lib/testsuite
+       @: > lib/testsuite/$(am__dirstamp)
+lib/testsuite/$(DEPDIR)/$(am__dirstamp):
+       @$(mkdir_p) lib/testsuite/$(DEPDIR)
+       @: > lib/testsuite/$(DEPDIR)/$(am__dirstamp)
+lib/testsuite/lib_testsuite_cflags-cflags.$(OBJEXT):  \
+       lib/testsuite/$(am__dirstamp) \
+       lib/testsuite/$(DEPDIR)/$(am__dirstamp)
+lib/testsuite/cflags$(EXEEXT): $(lib_testsuite_cflags_OBJECTS) $(lib_testsuite_cflags_DEPENDENCIES) lib/testsuite/$(am__dirstamp)
+       @rm -f lib/testsuite/cflags$(EXEEXT)
+       $(LINK) $(lib_testsuite_cflags_LDFLAGS) $(lib_testsuite_cflags_OBJECTS) $(lib_testsuite_cflags_LDADD) $(LIBS)
+lib/testsuite/lib_testsuite_fmt-fmt.$(OBJEXT):  \
+       lib/testsuite/$(am__dirstamp) \
+       lib/testsuite/$(DEPDIR)/$(am__dirstamp)
+lib/testsuite/fmt$(EXEEXT): $(lib_testsuite_fmt_OBJECTS) $(lib_testsuite_fmt_DEPENDENCIES) lib/testsuite/$(am__dirstamp)
+       @rm -f lib/testsuite/fmt$(EXEEXT)
+       $(LINK) $(lib_testsuite_fmt_LDFLAGS) $(lib_testsuite_fmt_OBJECTS) $(lib_testsuite_fmt_LDADD) $(LIBS)
+lib/testsuite/lib_testsuite_parselimit-parselimit.$(OBJEXT):  \
+       lib/testsuite/$(am__dirstamp) \
+       lib/testsuite/$(DEPDIR)/$(am__dirstamp)
+lib/testsuite/parselimit$(EXEEXT): $(lib_testsuite_parselimit_OBJECTS) $(lib_testsuite_parselimit_DEPENDENCIES) lib/testsuite/$(am__dirstamp)
+       @rm -f lib/testsuite/parselimit$(EXEEXT)
+       $(LINK) $(lib_testsuite_parselimit_LDFLAGS) $(lib_testsuite_parselimit_OBJECTS) $(lib_testsuite_parselimit_LDADD) $(LIBS)
+lib/testsuite/lib_testsuite_personality-personality.$(OBJEXT):  \
+       lib/testsuite/$(am__dirstamp) \
+       lib/testsuite/$(DEPDIR)/$(am__dirstamp)
+lib/testsuite/personality$(EXEEXT): $(lib_testsuite_personality_OBJECTS) $(lib_testsuite_personality_DEPENDENCIES) lib/testsuite/$(am__dirstamp)
+       @rm -f lib/testsuite/personality$(EXEEXT)
+       $(LINK) $(lib_testsuite_personality_LDFLAGS) $(lib_testsuite_personality_OBJECTS) $(lib_testsuite_personality_LDADD) $(LIBS)
+lib_internal/testsuite/$(am__dirstamp):
+       @$(mkdir_p) lib_internal/testsuite
+       @: > lib_internal/testsuite/$(am__dirstamp)
+lib_internal/testsuite/$(DEPDIR)/$(am__dirstamp):
+       @$(mkdir_p) lib_internal/testsuite/$(DEPDIR)
+       @: > lib_internal/testsuite/$(DEPDIR)/$(am__dirstamp)
+lib_internal/testsuite/command.$(OBJEXT):  \
+       lib_internal/testsuite/$(am__dirstamp) \
+       lib_internal/testsuite/$(DEPDIR)/$(am__dirstamp)
+lib_internal/testsuite/command$(EXEEXT): $(lib_internal_testsuite_command_OBJECTS) $(lib_internal_testsuite_command_DEPENDENCIES) lib_internal/testsuite/$(am__dirstamp)
+       @rm -f lib_internal/testsuite/command$(EXEEXT)
+       $(LINK) $(lib_internal_testsuite_command_LDFLAGS) $(lib_internal_testsuite_command_OBJECTS) $(lib_internal_testsuite_command_LDADD) $(LIBS)
+lib_internal/testsuite/copy.$(OBJEXT):  \
+       lib_internal/testsuite/$(am__dirstamp) \
+       lib_internal/testsuite/$(DEPDIR)/$(am__dirstamp)
+lib_internal/testsuite/copy$(EXEEXT): $(lib_internal_testsuite_copy_OBJECTS) $(lib_internal_testsuite_copy_DEPENDENCIES) lib_internal/testsuite/$(am__dirstamp)
+       @rm -f lib_internal/testsuite/copy$(EXEEXT)
+       $(LINK) $(lib_internal_testsuite_copy_LDFLAGS) $(lib_internal_testsuite_copy_OBJECTS) $(lib_internal_testsuite_copy_LDADD) $(LIBS)
+lib_internal/testsuite/filecfg-ml.$(OBJEXT):  \
+       lib_internal/testsuite/$(am__dirstamp) \
+       lib_internal/testsuite/$(DEPDIR)/$(am__dirstamp)
+lib_internal/testsuite/filecfg-ml$(EXEEXT): $(lib_internal_testsuite_filecfg_ml_OBJECTS) $(lib_internal_testsuite_filecfg_ml_DEPENDENCIES) lib_internal/testsuite/$(am__dirstamp)
+       @rm -f lib_internal/testsuite/filecfg-ml$(EXEEXT)
+       $(LINK) $(lib_internal_testsuite_filecfg_ml_LDFLAGS) $(lib_internal_testsuite_filecfg_ml_OBJECTS) $(lib_internal_testsuite_filecfg_ml_LDADD) $(LIBS)
+lib_internal/testsuite/sigbus.$(OBJEXT):  \
+       lib_internal/testsuite/$(am__dirstamp) \
+       lib_internal/testsuite/$(DEPDIR)/$(am__dirstamp)
+lib_internal/testsuite/sigbus$(EXEEXT): $(lib_internal_testsuite_sigbus_OBJECTS) $(lib_internal_testsuite_sigbus_DEPENDENCIES) lib_internal/testsuite/$(am__dirstamp)
+       @rm -f lib_internal/testsuite/sigbus$(EXEEXT)
+       $(LINK) $(lib_internal_testsuite_sigbus_LDFLAGS) $(lib_internal_testsuite_sigbus_OBJECTS) $(lib_internal_testsuite_sigbus_LDADD) $(LIBS)
 src/capchroot.$(OBJEXT): src/$(am__dirstamp) \
        src/$(DEPDIR)/$(am__dirstamp)
 src/capchroot$(EXEEXT): $(src_capchroot_OBJECTS) $(src_capchroot_DEPENDENCIES) src/$(am__dirstamp)
        @rm -f src/capchroot$(EXEEXT)
        $(LINK) $(src_capchroot_LDFLAGS) $(src_capchroot_OBJECTS) $(src_capchroot_LDADD) $(LIBS)
+src/chain-echo.$(OBJEXT): src/$(am__dirstamp) \
+       src/$(DEPDIR)/$(am__dirstamp)
+src/chain-echo$(EXEEXT): $(src_chain_echo_OBJECTS) $(src_chain_echo_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/chain-echo$(EXEEXT)
+       $(LINK) $(src_chain_echo_LDFLAGS) $(src_chain_echo_OBJECTS) $(src_chain_echo_LDADD) $(LIBS)
 src/chbind.$(OBJEXT): src/$(am__dirstamp) \
        src/$(DEPDIR)/$(am__dirstamp)
 src/chbind$(EXEEXT): $(src_chbind_OBJECTS) $(src_chbind_DEPENDENCIES) src/$(am__dirstamp)
@@ -812,9 +3190,35 @@ src/chbind$(EXEEXT): $(src_chbind_OBJECTS) $(src_chbind_DEPENDENCIES) src/$(am__
        $(LINK) $(src_chbind_LDFLAGS) $(src_chbind_OBJECTS) $(src_chbind_LDADD) $(LIBS)
 src/chcontext.$(OBJEXT): src/$(am__dirstamp) \
        src/$(DEPDIR)/$(am__dirstamp)
-src/chcontext$(EXEEXT): $(src_chcontext_OBJECTS) $(src_chcontext_DEPENDENCIES) src/$(am__dirstamp)
-       @rm -f src/chcontext$(EXEEXT)
-       $(LINK) $(src_chcontext_LDFLAGS) $(src_chcontext_OBJECTS) $(src_chcontext_LDADD) $(LIBS)
+src/chcontext-compat$(EXEEXT): $(src_chcontext_compat_OBJECTS) $(src_chcontext_compat_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/chcontext-compat$(EXEEXT)
+       $(LINK) $(src_chcontext_compat_LDFLAGS) $(src_chcontext_compat_OBJECTS) $(src_chcontext_compat_LDADD) $(LIBS)
+src/check-unixfile.$(OBJEXT): src/$(am__dirstamp) \
+       src/$(DEPDIR)/$(am__dirstamp)
+src/check-unixfile$(EXEEXT): $(src_check_unixfile_OBJECTS) $(src_check_unixfile_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/check-unixfile$(EXEEXT)
+       $(LINK) $(src_check_unixfile_LDFLAGS) $(src_check_unixfile_OBJECTS) $(src_check_unixfile_LDADD) $(LIBS)
+src/chroot-sh.$(OBJEXT): src/$(am__dirstamp) \
+       src/$(DEPDIR)/$(am__dirstamp)
+src/chroot-sh$(EXEEXT): $(src_chroot_sh_OBJECTS) $(src_chroot_sh_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/chroot-sh$(EXEEXT)
+       $(LINK) $(src_chroot_sh_LDFLAGS) $(src_chroot_sh_OBJECTS) $(src_chroot_sh_LDADD) $(LIBS)
+src/fstool.$(OBJEXT): src/$(am__dirstamp) \
+       src/$(DEPDIR)/$(am__dirstamp)
+src/chxid.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/chxid$(EXEEXT): $(src_chxid_OBJECTS) $(src_chxid_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/chxid$(EXEEXT)
+       $(LINK) $(src_chxid_LDFLAGS) $(src_chxid_OBJECTS) $(src_chxid_LDADD) $(LIBS)
+src/exec-cd.$(OBJEXT): src/$(am__dirstamp) \
+       src/$(DEPDIR)/$(am__dirstamp)
+src/exec-cd$(EXEEXT): $(src_exec_cd_OBJECTS) $(src_exec_cd_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/exec-cd$(EXEEXT)
+       $(LINK) $(src_exec_cd_LDFLAGS) $(src_exec_cd_OBJECTS) $(src_exec_cd_LDADD) $(LIBS)
+src/exec-ulimit.$(OBJEXT): src/$(am__dirstamp) \
+       src/$(DEPDIR)/$(am__dirstamp)
+src/exec-ulimit$(EXEEXT): $(src_exec_ulimit_OBJECTS) $(src_exec_ulimit_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/exec-ulimit$(EXEEXT)
+       $(LINK) $(src_exec_ulimit_LDFLAGS) $(src_exec_ulimit_OBJECTS) $(src_exec_ulimit_LDADD) $(LIBS)
 src/fakerunlevel.$(OBJEXT): src/$(am__dirstamp) \
        src/$(DEPDIR)/$(am__dirstamp)
 src/fakerunlevel$(EXEEXT): $(src_fakerunlevel_OBJECTS) $(src_fakerunlevel_DEPENDENCIES) src/$(am__dirstamp)
@@ -830,11 +3234,30 @@ src/ifspec.$(OBJEXT): src/$(am__dirstamp) \
 src/ifspec$(EXEEXT): $(src_ifspec_OBJECTS) $(src_ifspec_DEPENDENCIES) src/$(am__dirstamp)
        @rm -f src/ifspec$(EXEEXT)
        $(LINK) $(src_ifspec_LDFLAGS) $(src_ifspec_OBJECTS) $(src_ifspec_LDADD) $(LIBS)
+src/keep-ctx-alive.$(OBJEXT): src/$(am__dirstamp) \
+       src/$(DEPDIR)/$(am__dirstamp)
+src/keep-ctx-alive$(EXEEXT): $(src_keep_ctx_alive_OBJECTS) $(src_keep_ctx_alive_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/keep-ctx-alive$(EXEEXT)
+       $(LINK) $(src_keep_ctx_alive_LDFLAGS) $(src_keep_ctx_alive_OBJECTS) $(src_keep_ctx_alive_LDADD) $(LIBS)
 src/listdevip.$(OBJEXT): src/$(am__dirstamp) \
        src/$(DEPDIR)/$(am__dirstamp)
 src/listdevip$(EXEEXT): $(src_listdevip_OBJECTS) $(src_listdevip_DEPENDENCIES) src/$(am__dirstamp)
        @rm -f src/listdevip$(EXEEXT)
        $(LINK) $(src_listdevip_LDFLAGS) $(src_listdevip_OBJECTS) $(src_listdevip_LDADD) $(LIBS)
+src/lockfile.$(OBJEXT): src/$(am__dirstamp) \
+       src/$(DEPDIR)/$(am__dirstamp)
+src/lockfile$(EXEEXT): $(src_lockfile_OBJECTS) $(src_lockfile_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/lockfile$(EXEEXT)
+       $(LINK) $(src_lockfile_LDFLAGS) $(src_lockfile_OBJECTS) $(src_lockfile_LDADD) $(LIBS)
+src/lsxid.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/lsxid$(EXEEXT): $(src_lsxid_OBJECTS) $(src_lsxid_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/lsxid$(EXEEXT)
+       $(LINK) $(src_lsxid_LDFLAGS) $(src_lsxid_OBJECTS) $(src_lsxid_LDADD) $(LIBS)
+src/mask2prefix.$(OBJEXT): src/$(am__dirstamp) \
+       src/$(DEPDIR)/$(am__dirstamp)
+src/mask2prefix$(EXEEXT): $(src_mask2prefix_OBJECTS) $(src_mask2prefix_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/mask2prefix$(EXEEXT)
+       $(LINK) $(src_mask2prefix_LDFLAGS) $(src_mask2prefix_OBJECTS) $(src_mask2prefix_LDADD) $(LIBS)
 src/parserpmdump.$(OBJEXT): src/$(am__dirstamp) \
        src/$(DEPDIR)/$(am__dirstamp)
 src/parserpmdump$(EXEEXT): $(src_parserpmdump_OBJECTS) $(src_parserpmdump_DEPENDENCIES) src/$(am__dirstamp)
@@ -845,7 +3268,7 @@ src/readlink.$(OBJEXT): src/$(am__dirstamp) \
 src/readlink$(EXEEXT): $(src_readlink_OBJECTS) $(src_readlink_DEPENDENCIES) src/$(am__dirstamp)
        @rm -f src/readlink$(EXEEXT)
        $(LINK) $(src_readlink_LDFLAGS) $(src_readlink_OBJECTS) $(src_readlink_LDADD) $(LIBS)
-src/src_rebootmgr-rebootmgr.$(OBJEXT): src/$(am__dirstamp) \
+src/rebootmgr.$(OBJEXT): src/$(am__dirstamp) \
        src/$(DEPDIR)/$(am__dirstamp)
 src/rebootmgr$(EXEEXT): $(src_rebootmgr_OBJECTS) $(src_rebootmgr_DEPENDENCIES) src/$(am__dirstamp)
        @rm -f src/rebootmgr$(EXEEXT)
@@ -855,6 +3278,26 @@ src/reducecap.$(OBJEXT): src/$(am__dirstamp) \
 src/reducecap$(EXEEXT): $(src_reducecap_OBJECTS) $(src_reducecap_DEPENDENCIES) src/$(am__dirstamp)
        @rm -f src/reducecap$(EXEEXT)
        $(LINK) $(src_reducecap_LDFLAGS) $(src_reducecap_OBJECTS) $(src_reducecap_LDADD) $(LIBS)
+src/rpm-fake-resolver.$(OBJEXT): src/$(am__dirstamp) \
+       src/$(DEPDIR)/$(am__dirstamp)
+src/rpm-fake-resolver$(EXEEXT): $(src_rpm_fake_resolver_OBJECTS) $(src_rpm_fake_resolver_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/rpm-fake-resolver$(EXEEXT)
+       $(LINK) $(src_rpm_fake_resolver_LDFLAGS) $(src_rpm_fake_resolver_OBJECTS) $(src_rpm_fake_resolver_LDADD) $(LIBS)
+src/save_ctxinfo.$(OBJEXT): src/$(am__dirstamp) \
+       src/$(DEPDIR)/$(am__dirstamp)
+src/save_ctxinfo$(EXEEXT): $(src_save_ctxinfo_OBJECTS) $(src_save_ctxinfo_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/save_ctxinfo$(EXEEXT)
+       $(LINK) $(src_save_ctxinfo_LDFLAGS) $(src_save_ctxinfo_OBJECTS) $(src_save_ctxinfo_LDADD) $(LIBS)
+src/secure-mount.$(OBJEXT): src/$(am__dirstamp) \
+       src/$(DEPDIR)/$(am__dirstamp)
+src/secure-mount$(EXEEXT): $(src_secure_mount_OBJECTS) $(src_secure_mount_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/secure-mount$(EXEEXT)
+       $(LINK) $(src_secure_mount_LDFLAGS) $(src_secure_mount_OBJECTS) $(src_secure_mount_LDADD) $(LIBS)
+src/setattr.$(OBJEXT): src/$(am__dirstamp) \
+       src/$(DEPDIR)/$(am__dirstamp)
+src/setattr$(EXEEXT): $(src_setattr_OBJECTS) $(src_setattr_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/setattr$(EXEEXT)
+       $(LINK) $(src_setattr_LDFLAGS) $(src_setattr_OBJECTS) $(src_setattr_LDADD) $(LIBS)
 src/showattr.$(OBJEXT): src/$(am__dirstamp) \
        src/$(DEPDIR)/$(am__dirstamp)
 src/showattr$(EXEEXT): $(src_showattr_OBJECTS) $(src_showattr_DEPENDENCIES) src/$(am__dirstamp)
@@ -865,26 +3308,66 @@ src/showperm.$(OBJEXT): src/$(am__dirstamp) \
 src/showperm$(EXEEXT): $(src_showperm_OBJECTS) $(src_showperm_DEPENDENCIES) src/$(am__dirstamp)
        @rm -f src/showperm$(EXEEXT)
        $(LINK) $(src_showperm_LDFLAGS) $(src_showperm_OBJECTS) $(src_showperm_LDADD) $(LIBS)
-src/vbuild.$(OBJEXT): src/$(am__dirstamp) \
+src/sigexec.$(OBJEXT): src/$(am__dirstamp) \
+       src/$(DEPDIR)/$(am__dirstamp)
+src/sigexec$(EXEEXT): $(src_sigexec_OBJECTS) $(src_sigexec_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/sigexec$(EXEEXT)
+       $(LINK) $(src_sigexec_LDFLAGS) $(src_sigexec_OBJECTS) $(src_sigexec_LDADD) $(LIBS)
+src/testsuite/$(am__dirstamp):
+       @$(mkdir_p) src/testsuite
+       @: > src/testsuite/$(am__dirstamp)
+src/testsuite/$(DEPDIR)/$(am__dirstamp):
+       @$(mkdir_p) src/testsuite/$(DEPDIR)
+       @: > src/testsuite/$(DEPDIR)/$(am__dirstamp)
+src/testsuite/chbind-test.$(OBJEXT): src/testsuite/$(am__dirstamp) \
+       src/testsuite/$(DEPDIR)/$(am__dirstamp)
+src/testsuite/chbind-test$(EXEEXT): $(src_testsuite_chbind_test_OBJECTS) $(src_testsuite_chbind_test_DEPENDENCIES) src/testsuite/$(am__dirstamp)
+       @rm -f src/testsuite/chbind-test$(EXEEXT)
+       $(LINK) $(src_testsuite_chbind_test_LDFLAGS) $(src_testsuite_chbind_test_OBJECTS) $(src_testsuite_chbind_test_LDADD) $(LIBS)
+src/testsuite/chcontext-test.$(OBJEXT): src/testsuite/$(am__dirstamp) \
+       src/testsuite/$(DEPDIR)/$(am__dirstamp)
+src/testsuite/chcontext-test$(EXEEXT): $(src_testsuite_chcontext_test_OBJECTS) $(src_testsuite_chcontext_test_DEPENDENCIES) src/testsuite/$(am__dirstamp)
+       @rm -f src/testsuite/chcontext-test$(EXEEXT)
+       $(LINK) $(src_testsuite_chcontext_test_LDFLAGS) $(src_testsuite_chcontext_test_OBJECTS) $(src_testsuite_chcontext_test_LDADD) $(LIBS)
+src/testsuite/rpm-fake-test.$(OBJEXT): src/testsuite/$(am__dirstamp) \
+       src/testsuite/$(DEPDIR)/$(am__dirstamp)
+src/testsuite/rpm-fake-test$(EXEEXT): $(src_testsuite_rpm_fake_test_OBJECTS) $(src_testsuite_rpm_fake_test_DEPENDENCIES) src/testsuite/$(am__dirstamp)
+       @rm -f src/testsuite/rpm-fake-test$(EXEEXT)
+       $(LINK) $(src_testsuite_rpm_fake_test_LDFLAGS) $(src_testsuite_rpm_fake_test_OBJECTS) $(src_testsuite_rpm_fake_test_LDADD) $(LIBS)
+src/testsuite/src_testsuite_vunify_functest-vunify-functest.$(OBJEXT):  \
+       src/testsuite/$(am__dirstamp) \
+       src/testsuite/$(DEPDIR)/$(am__dirstamp)
+src/testsuite/vunify-functest$(EXEEXT): $(src_testsuite_vunify_functest_OBJECTS) $(src_testsuite_vunify_functest_DEPENDENCIES) src/testsuite/$(am__dirstamp)
+       @rm -f src/testsuite/vunify-functest$(EXEEXT)
+       $(LINK) $(src_testsuite_vunify_functest_LDFLAGS) $(src_testsuite_vunify_functest_OBJECTS) $(src_testsuite_vunify_functest_LDADD) $(LIBS)
+src/vattribute.$(OBJEXT): src/$(am__dirstamp) \
        src/$(DEPDIR)/$(am__dirstamp)
-src/vutil.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
-src/vbuild$(EXEEXT): $(src_vbuild_OBJECTS) $(src_vbuild_DEPENDENCIES) src/$(am__dirstamp)
-       @rm -f src/vbuild$(EXEEXT)
-       $(CXXLINK) $(src_vbuild_LDFLAGS) $(src_vbuild_OBJECTS) $(src_vbuild_LDADD) $(LIBS)
-src/vcheck.$(OBJEXT): src/$(am__dirstamp) \
+src/vattribute$(EXEEXT): $(src_vattribute_OBJECTS) $(src_vattribute_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/vattribute$(EXEEXT)
+       $(LINK) $(src_vattribute_LDFLAGS) $(src_vattribute_OBJECTS) $(src_vattribute_LDADD) $(LIBS)
+src/vcontext.$(OBJEXT): src/$(am__dirstamp) \
        src/$(DEPDIR)/$(am__dirstamp)
-src/vcheck$(EXEEXT): $(src_vcheck_OBJECTS) $(src_vcheck_DEPENDENCIES) src/$(am__dirstamp)
-       @rm -f src/vcheck$(EXEEXT)
-       $(CXXLINK) $(src_vcheck_LDFLAGS) $(src_vcheck_OBJECTS) $(src_vcheck_LDADD) $(LIBS)
+src/vcontext$(EXEEXT): $(src_vcontext_OBJECTS) $(src_vcontext_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/vcontext$(EXEEXT)
+       $(LINK) $(src_vcontext_LDFLAGS) $(src_vcontext_OBJECTS) $(src_vcontext_LDADD) $(LIBS)
+src/vcopy.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/vcopy$(EXEEXT): $(src_vcopy_OBJECTS) $(src_vcopy_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/vcopy$(EXEEXT)
+       $(LINK) $(src_vcopy_LDFLAGS) $(src_vcopy_OBJECTS) $(src_vcopy_LDADD) $(LIBS)
+src/vdlimit.$(OBJEXT): src/$(am__dirstamp) \
+       src/$(DEPDIR)/$(am__dirstamp)
+src/vdlimit$(EXEEXT): $(src_vdlimit_OBJECTS) $(src_vdlimit_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/vdlimit$(EXEEXT)
+       $(LINK) $(src_vdlimit_LDFLAGS) $(src_vdlimit_OBJECTS) $(src_vdlimit_LDADD) $(LIBS)
 src/vdu.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
 src/vdu$(EXEEXT): $(src_vdu_OBJECTS) $(src_vdu_DEPENDENCIES) src/$(am__dirstamp)
        @rm -f src/vdu$(EXEEXT)
        $(LINK) $(src_vdu_LDFLAGS) $(src_vdu_OBJECTS) $(src_vdu_LDADD) $(LIBS)
-src/vfiles.$(OBJEXT): src/$(am__dirstamp) \
+src/vhashify.$(OBJEXT): src/$(am__dirstamp) \
        src/$(DEPDIR)/$(am__dirstamp)
-src/vfiles$(EXEEXT): $(src_vfiles_OBJECTS) $(src_vfiles_DEPENDENCIES) src/$(am__dirstamp)
-       @rm -f src/vfiles$(EXEEXT)
-       $(CXXLINK) $(src_vfiles_LDFLAGS) $(src_vfiles_OBJECTS) $(src_vfiles_LDADD) $(LIBS)
+src/vhashify$(EXEEXT): $(src_vhashify_OBJECTS) $(src_vhashify_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/vhashify$(EXEEXT)
+       $(LINK) $(src_vhashify_LDFLAGS) $(src_vhashify_OBJECTS) $(src_vhashify_LDADD) $(LIBS)
 src/src_vkill-vkill.$(OBJEXT): src/$(am__dirstamp) \
        src/$(DEPDIR)/$(am__dirstamp)
 src/vkill$(EXEEXT): $(src_vkill_OBJECTS) $(src_vkill_DEPENDENCIES) src/$(am__dirstamp)
@@ -895,23 +3378,59 @@ src/vlimit.$(OBJEXT): src/$(am__dirstamp) \
 src/vlimit$(EXEEXT): $(src_vlimit_OBJECTS) $(src_vlimit_DEPENDENCIES) src/$(am__dirstamp)
        @rm -f src/vlimit$(EXEEXT)
        $(LINK) $(src_vlimit_LDFLAGS) $(src_vlimit_OBJECTS) $(src_vlimit_LDADD) $(LIBS)
+src/vnamespace.$(OBJEXT): src/$(am__dirstamp) \
+       src/$(DEPDIR)/$(am__dirstamp)
+src/vnamespace$(EXEEXT): $(src_vnamespace_OBJECTS) $(src_vnamespace_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/vnamespace$(EXEEXT)
+       $(LINK) $(src_vnamespace_LDFLAGS) $(src_vnamespace_OBJECTS) $(src_vnamespace_LDADD) $(LIBS)
+src/vps.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/vps$(EXEEXT): $(src_vps_OBJECTS) $(src_vps_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/vps$(EXEEXT)
+       $(LINK) $(src_vps_LDFLAGS) $(src_vps_OBJECTS) $(src_vps_LDADD) $(LIBS)
 src/vreboot.$(OBJEXT): src/$(am__dirstamp) \
        src/$(DEPDIR)/$(am__dirstamp)
 src/vreboot$(EXEEXT): $(src_vreboot_OBJECTS) $(src_vreboot_DEPENDENCIES) src/$(am__dirstamp)
        @rm -f src/vreboot$(EXEEXT)
        $(LINK) $(src_vreboot_LDFLAGS) $(src_vreboot_OBJECTS) $(src_vreboot_LDADD) $(LIBS)
+src/vrsetup.$(OBJEXT): src/$(am__dirstamp) \
+       src/$(DEPDIR)/$(am__dirstamp)
+src/vrsetup$(EXEEXT): $(src_vrsetup_OBJECTS) $(src_vrsetup_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/vrsetup$(EXEEXT)
+       $(LINK) $(src_vrsetup_LDFLAGS) $(src_vrsetup_OBJECTS) $(src_vrsetup_LDADD) $(LIBS)
+src/vsched.$(OBJEXT): src/$(am__dirstamp) \
+       src/$(DEPDIR)/$(am__dirstamp)
+src/vsched$(EXEEXT): $(src_vsched_OBJECTS) $(src_vsched_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/vsched$(EXEEXT)
+       $(LINK) $(src_vsched_LDFLAGS) $(src_vsched_OBJECTS) $(src_vsched_LDADD) $(LIBS)
+src/vserver-info.$(OBJEXT): src/$(am__dirstamp) \
+       src/$(DEPDIR)/$(am__dirstamp)
+src/vserver-info$(EXEEXT): $(src_vserver_info_OBJECTS) $(src_vserver_info_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/vserver-info$(EXEEXT)
+       $(LINK) $(src_vserver_info_LDFLAGS) $(src_vserver_info_OBJECTS) $(src_vserver_info_LDADD) $(LIBS)
 src/vserver-stat.$(OBJEXT): src/$(am__dirstamp) \
        src/$(DEPDIR)/$(am__dirstamp)
 src/vserver-stat$(EXEEXT): $(src_vserver_stat_OBJECTS) $(src_vserver_stat_DEPENDENCIES) src/$(am__dirstamp)
        @rm -f src/vserver-stat$(EXEEXT)
        $(LINK) $(src_vserver_stat_LDFLAGS) $(src_vserver_stat_OBJECTS) $(src_vserver_stat_LDADD) $(LIBS)
-src/src_vunify-vunify.$(OBJEXT): src/$(am__dirstamp) \
+src/vshelper-sync.$(OBJEXT): src/$(am__dirstamp) \
+       src/$(DEPDIR)/$(am__dirstamp)
+src/vshelper-sync$(EXEEXT): $(src_vshelper_sync_OBJECTS) $(src_vshelper_sync_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/vshelper-sync$(EXEEXT)
+       $(LINK) $(src_vshelper_sync_LDFLAGS) $(src_vshelper_sync_OBJECTS) $(src_vshelper_sync_LDADD) $(LIBS)
+src/vuname.$(OBJEXT): src/$(am__dirstamp) \
        src/$(DEPDIR)/$(am__dirstamp)
-src/src_vunify-vutil.$(OBJEXT): src/$(am__dirstamp) \
+src/vuname$(EXEEXT): $(src_vuname_OBJECTS) $(src_vuname_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/vuname$(EXEEXT)
+       $(LINK) $(src_vuname_LDFLAGS) $(src_vuname_OBJECTS) $(src_vuname_LDADD) $(LIBS)
+src/vunify.$(OBJEXT): src/$(am__dirstamp) \
        src/$(DEPDIR)/$(am__dirstamp)
 src/vunify$(EXEEXT): $(src_vunify_OBJECTS) $(src_vunify_DEPENDENCIES) src/$(am__dirstamp)
        @rm -f src/vunify$(EXEEXT)
-       $(CXXLINK) $(src_vunify_LDFLAGS) $(src_vunify_OBJECTS) $(src_vunify_LDADD) $(LIBS)
+       $(LINK) $(src_vunify_LDFLAGS) $(src_vunify_OBJECTS) $(src_vunify_LDADD) $(LIBS)
+src/vwait.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/vwait$(EXEEXT): $(src_vwait_OBJECTS) $(src_vwait_DEPENDENCIES) src/$(am__dirstamp)
+       @rm -f src/vwait$(EXEEXT)
+       $(LINK) $(src_vwait_LDFLAGS) $(src_vwait_OBJECTS) $(src_vwait_LDADD) $(LIBS)
 tests/$(am__dirstamp):
        @$(mkdir_p) tests
        @: > tests/$(am__dirstamp)
@@ -922,27 +3441,114 @@ tests/escaperoot.$(OBJEXT): tests/$(am__dirstamp) \
        tests/$(DEPDIR)/$(am__dirstamp)
 tests/escaperoot$(EXEEXT): $(tests_escaperoot_OBJECTS) $(tests_escaperoot_DEPENDENCIES) tests/$(am__dirstamp)
        @rm -f tests/escaperoot$(EXEEXT)
-       $(CXXLINK) $(tests_escaperoot_LDFLAGS) $(tests_escaperoot_OBJECTS) $(tests_escaperoot_LDADD) $(LIBS)
+       $(LINK) $(tests_escaperoot_LDFLAGS) $(tests_escaperoot_OBJECTS) $(tests_escaperoot_LDADD) $(LIBS)
 tests/forkbomb.$(OBJEXT): tests/$(am__dirstamp) \
        tests/$(DEPDIR)/$(am__dirstamp)
 tests/forkbomb$(EXEEXT): $(tests_forkbomb_OBJECTS) $(tests_forkbomb_DEPENDENCIES) tests/$(am__dirstamp)
        @rm -f tests/forkbomb$(EXEEXT)
-       $(CXXLINK) $(tests_forkbomb_LDFLAGS) $(tests_forkbomb_OBJECTS) $(tests_forkbomb_LDADD) $(LIBS)
+       $(LINK) $(tests_forkbomb_LDFLAGS) $(tests_forkbomb_OBJECTS) $(tests_forkbomb_LDADD) $(LIBS)
+tests/getctx.$(OBJEXT): tests/$(am__dirstamp) \
+       tests/$(DEPDIR)/$(am__dirstamp)
+tests/getctx$(EXEEXT): $(tests_getctx_OBJECTS) $(tests_getctx_DEPENDENCIES) tests/$(am__dirstamp)
+       @rm -f tests/getctx$(EXEEXT)
+       $(LINK) $(tests_getctx_LDFLAGS) $(tests_getctx_OBJECTS) $(tests_getctx_LDADD) $(LIBS)
+tests/getinitpid.$(OBJEXT): tests/$(am__dirstamp) \
+       tests/$(DEPDIR)/$(am__dirstamp)
+tests/getinitpid$(EXEEXT): $(tests_getinitpid_OBJECTS) $(tests_getinitpid_DEPENDENCIES) tests/$(am__dirstamp)
+       @rm -f tests/getinitpid$(EXEEXT)
+       $(LINK) $(tests_getinitpid_LDFLAGS) $(tests_getinitpid_OBJECTS) $(tests_getinitpid_LDADD) $(LIBS)
 tests/testipc.$(OBJEXT): tests/$(am__dirstamp) \
        tests/$(DEPDIR)/$(am__dirstamp)
 tests/testipc$(EXEEXT): $(tests_testipc_OBJECTS) $(tests_testipc_DEPENDENCIES) tests/$(am__dirstamp)
        @rm -f tests/testipc$(EXEEXT)
-       $(CXXLINK) $(tests_testipc_LDFLAGS) $(tests_testipc_OBJECTS) $(tests_testipc_LDADD) $(LIBS)
+       $(LINK) $(tests_testipc_LDFLAGS) $(tests_testipc_OBJECTS) $(tests_testipc_LDADD) $(LIBS)
 tests/testlimit.$(OBJEXT): tests/$(am__dirstamp) \
        tests/$(DEPDIR)/$(am__dirstamp)
 tests/testlimit$(EXEEXT): $(tests_testlimit_OBJECTS) $(tests_testlimit_DEPENDENCIES) tests/$(am__dirstamp)
        @rm -f tests/testlimit$(EXEEXT)
-       $(CXXLINK) $(tests_testlimit_LDFLAGS) $(tests_testlimit_OBJECTS) $(tests_testlimit_LDADD) $(LIBS)
+       $(LINK) $(tests_testlimit_LDFLAGS) $(tests_testlimit_OBJECTS) $(tests_testlimit_LDADD) $(LIBS)
 tests/testopenf.$(OBJEXT): tests/$(am__dirstamp) \
        tests/$(DEPDIR)/$(am__dirstamp)
 tests/testopenf$(EXEEXT): $(tests_testopenf_OBJECTS) $(tests_testopenf_DEPENDENCIES) tests/$(am__dirstamp)
        @rm -f tests/testopenf$(EXEEXT)
-       $(CXXLINK) $(tests_testopenf_LDFLAGS) $(tests_testopenf_OBJECTS) $(tests_testopenf_LDADD) $(LIBS)
+       $(LINK) $(tests_testopenf_LDFLAGS) $(tests_testopenf_OBJECTS) $(tests_testopenf_LDADD) $(LIBS)
+tests/vserver-info.$(OBJEXT): tests/$(am__dirstamp) \
+       tests/$(DEPDIR)/$(am__dirstamp)
+tests/vserver-info$(EXEEXT): $(tests_vserver_info_OBJECTS) $(tests_vserver_info_DEPENDENCIES) tests/$(am__dirstamp)
+       @rm -f tests/vserver-info$(EXEEXT)
+       $(LINK) $(tests_vserver_info_LDFLAGS) $(tests_vserver_info_OBJECTS) $(tests_vserver_info_LDADD) $(LIBS)
+vserver-start/$(am__dirstamp):
+       @$(mkdir_p) vserver-start
+       @: > vserver-start/$(am__dirstamp)
+vserver-start/$(DEPDIR)/$(am__dirstamp):
+       @$(mkdir_p) vserver-start/$(DEPDIR)
+       @: > vserver-start/$(DEPDIR)/$(am__dirstamp)
+vserver-start/main.$(OBJEXT): vserver-start/$(am__dirstamp) \
+       vserver-start/$(DEPDIR)/$(am__dirstamp)
+vserver-start/mount.$(OBJEXT): vserver-start/$(am__dirstamp) \
+       vserver-start/$(DEPDIR)/$(am__dirstamp)
+vserver-start/defaulttty.$(OBJEXT): vserver-start/$(am__dirstamp) \
+       vserver-start/$(DEPDIR)/$(am__dirstamp)
+vserver-start/scriptlets.$(OBJEXT): vserver-start/$(am__dirstamp) \
+       vserver-start/$(DEPDIR)/$(am__dirstamp)
+vserver-start/undo.$(OBJEXT): vserver-start/$(am__dirstamp) \
+       vserver-start/$(DEPDIR)/$(am__dirstamp)
+vserver-start/vshelper.$(OBJEXT): vserver-start/$(am__dirstamp) \
+       vserver-start/$(DEPDIR)/$(am__dirstamp)
+vserver-start/interface.$(OBJEXT): vserver-start/$(am__dirstamp) \
+       vserver-start/$(DEPDIR)/$(am__dirstamp)
+vserver-start/interface-add.$(OBJEXT): vserver-start/$(am__dirstamp) \
+       vserver-start/$(DEPDIR)/$(am__dirstamp)
+vserver-start/interface-read.$(OBJEXT): vserver-start/$(am__dirstamp) \
+       vserver-start/$(DEPDIR)/$(am__dirstamp)
+vserver-start/interface-remove.$(OBJEXT):  \
+       vserver-start/$(am__dirstamp) \
+       vserver-start/$(DEPDIR)/$(am__dirstamp)
+vserver-start/interface-print.$(OBJEXT):  \
+       vserver-start/$(am__dirstamp) \
+       vserver-start/$(DEPDIR)/$(am__dirstamp)
+vserver-start/configuration.$(OBJEXT): vserver-start/$(am__dirstamp) \
+       vserver-start/$(DEPDIR)/$(am__dirstamp)
+vserver-start/configuration-init.$(OBJEXT):  \
+       vserver-start/$(am__dirstamp) \
+       vserver-start/$(DEPDIR)/$(am__dirstamp)
+vserver-start/vserver.start.bin$(EXEEXT): $(vserver_start_vserver_start_bin_OBJECTS) $(vserver_start_vserver_start_bin_DEPENDENCIES) vserver-start/$(am__dirstamp)
+       @rm -f vserver-start/vserver.start.bin$(EXEEXT)
+       $(LINK) $(vserver_start_vserver_start_bin_LDFLAGS) $(vserver_start_vserver_start_bin_OBJECTS) $(vserver_start_vserver_start_bin_LDADD) $(LIBS)
+install-initrdSCRIPTS: $(initrd_SCRIPTS)
+       @$(NORMAL_INSTALL)
+       test -z "$(initrddir)" || $(mkdir_p) "$(DESTDIR)$(initrddir)"
+       @list='$(initrd_SCRIPTS)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         if test -f $$d$$p; then \
+           f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+           echo " $(initrdSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(initrddir)/$$f'"; \
+           $(initrdSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(initrddir)/$$f"; \
+         else :; fi; \
+       done
+
+uninstall-initrdSCRIPTS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(initrd_SCRIPTS)'; for p in $$list; do \
+         f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+         echo " rm -f '$(DESTDIR)$(initrddir)/$$f'"; \
+         rm -f "$(DESTDIR)$(initrddir)/$$f"; \
+       done
+
+installcheck-initrdSCRIPTS: $(initrd_SCRIPTS)
+       bad=0; pid=$$$$; list="$(initrd_SCRIPTS)"; for p in $$list; do \
+         case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \
+          *" $$p "* | *" $(srcdir)/$$p "*) continue;; \
+         esac; \
+         f=`echo "$$p" | sed 's,^.*/,,;$(transform)'`; \
+         for opt in --help --version; do \
+           if "$(DESTDIR)$(initrddir)/$$f" $$opt >c$${pid}_.out \
+                2>c$${pid}_.err </dev/null \
+                && test -n "`cat c$${pid}_.out`" \
+                && test -z "`cat c$${pid}_.err`"; then :; \
+           else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \
+         done; \
+       done; rm -f c$${pid}_.???; exit $$bad
 install-legacySCRIPTS: $(legacy_SCRIPTS)
        @$(NORMAL_INSTALL)
        test -z "$(legacydir)" || $(mkdir_p) "$(DESTDIR)$(legacydir)"
@@ -962,6 +3568,21 @@ uninstall-legacySCRIPTS:
          echo " rm -f '$(DESTDIR)$(legacydir)/$$f'"; \
          rm -f "$(DESTDIR)$(legacydir)/$$f"; \
        done
+
+installcheck-legacySCRIPTS: $(legacy_SCRIPTS)
+       bad=0; pid=$$$$; list="$(legacy_SCRIPTS)"; for p in $$list; do \
+         case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \
+          *" $$p "* | *" $(srcdir)/$$p "*) continue;; \
+         esac; \
+         f=`echo "$$p" | sed 's,^.*/,,;$(transform)'`; \
+         for opt in --help --version; do \
+           if "$(DESTDIR)$(legacydir)/$$f" $$opt >c$${pid}_.out \
+                2>c$${pid}_.err </dev/null \
+                && test -n "`cat c$${pid}_.out`" \
+                && test -z "`cat c$${pid}_.err`"; then :; \
+           else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \
+         done; \
+       done; rm -f c$${pid}_.???; exit $$bad
 install-pkglibSCRIPTS: $(pkglib_SCRIPTS)
        @$(NORMAL_INSTALL)
        test -z "$(pkglibdir)" || $(mkdir_p) "$(DESTDIR)$(pkglibdir)"
@@ -981,6 +3602,21 @@ uninstall-pkglibSCRIPTS:
          echo " rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
          rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
        done
+
+installcheck-pkglibSCRIPTS: $(pkglib_SCRIPTS)
+       bad=0; pid=$$$$; list="$(pkglib_SCRIPTS)"; for p in $$list; do \
+         case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \
+          *" $$p "* | *" $(srcdir)/$$p "*) continue;; \
+         esac; \
+         f=`echo "$$p" | sed 's,^.*/,,;$(transform)'`; \
+         for opt in --help --version; do \
+           if "$(DESTDIR)$(pkglibdir)/$$f" $$opt >c$${pid}_.out \
+                2>c$${pid}_.err </dev/null \
+                && test -n "`cat c$${pid}_.out`" \
+                && test -z "`cat c$${pid}_.err`"; then :; \
+           else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \
+         done; \
+       done; rm -f c$${pid}_.???; exit $$bad
 install-sbinSCRIPTS: $(sbin_SCRIPTS)
        @$(NORMAL_INSTALL)
        test -z "$(sbindir)" || $(mkdir_p) "$(DESTDIR)$(sbindir)"
@@ -1000,712 +3636,4296 @@ uninstall-sbinSCRIPTS:
          echo " rm -f '$(DESTDIR)$(sbindir)/$$f'"; \
          rm -f "$(DESTDIR)$(sbindir)/$$f"; \
        done
-install-sysvSCRIPTS: $(sysv_SCRIPTS)
-       @$(NORMAL_INSTALL)
-       test -z "$(sysvdir)" || $(mkdir_p) "$(DESTDIR)$(sysvdir)"
-       @list='$(sysv_SCRIPTS)'; for p in $$list; do \
-         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-         if test -f $$d$$p; then \
-           f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-           echo " $(sysvSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(sysvdir)/$$f'"; \
-           $(sysvSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(sysvdir)/$$f"; \
-         else :; fi; \
-       done
 
-uninstall-sysvSCRIPTS:
-       @$(NORMAL_UNINSTALL)
-       @list='$(sysv_SCRIPTS)'; for p in $$list; do \
-         f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
-         echo " rm -f '$(DESTDIR)$(sysvdir)/$$f'"; \
-         rm -f "$(DESTDIR)$(sysvdir)/$$f"; \
-       done
+installcheck-sbinSCRIPTS: $(sbin_SCRIPTS)
+       bad=0; pid=$$$$; list="$(sbin_SCRIPTS)"; for p in $$list; do \
+         case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \
+          *" $$p "* | *" $(srcdir)/$$p "*) continue;; \
+         esac; \
+         f=`echo "$$p" | sed 's,^.*/,,;$(transform)'`; \
+         for opt in --help --version; do \
+           if "$(DESTDIR)$(sbindir)/$$f" $$opt >c$${pid}_.out \
+                2>c$${pid}_.err </dev/null \
+                && test -n "`cat c$${pid}_.out`" \
+                && test -z "`cat c$${pid}_.err`"; then :; \
+           else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \
+         done; \
+       done; rm -f c$${pid}_.???; exit $$bad
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
+       -rm -f ensc_fmt/lib_libvserver_a-fmt-32.$(OBJEXT)
+       -rm -f ensc_fmt/lib_libvserver_a-fmt-64.$(OBJEXT)
+       -rm -f ensc_fmt/lib_libvserver_a-fmt-tai64n.$(OBJEXT)
+       -rm -f ensc_fmt/lib_libvserver_a-fmtx-32.$(OBJEXT)
+       -rm -f ensc_fmt/lib_libvserver_a-fmtx-64.$(OBJEXT)
+       -rm -f ensc_fmt/lib_libvserver_la-fmt-32.$(OBJEXT)
+       -rm -f ensc_fmt/lib_libvserver_la-fmt-32.lo
+       -rm -f ensc_fmt/lib_libvserver_la-fmt-64.$(OBJEXT)
+       -rm -f ensc_fmt/lib_libvserver_la-fmt-64.lo
+       -rm -f ensc_fmt/lib_libvserver_la-fmt-tai64n.$(OBJEXT)
+       -rm -f ensc_fmt/lib_libvserver_la-fmt-tai64n.lo
+       -rm -f ensc_fmt/lib_libvserver_la-fmtx-32.$(OBJEXT)
+       -rm -f ensc_fmt/lib_libvserver_la-fmtx-32.lo
+       -rm -f ensc_fmt/lib_libvserver_la-fmtx-64.$(OBJEXT)
+       -rm -f ensc_fmt/lib_libvserver_la-fmtx-64.lo
+       -rm -f ensc_vector/libensc_vector_diet_a-list-add.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_diet_a-list-at.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_diet_a-list-free.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_diet_a-list-init.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_diet_a-list-insertinternal.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_diet_a-list-search.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_diet_a-list-searchselforg.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_diet_a-vector-clear.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_diet_a-vector-foreach.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_diet_a-vector-free.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_diet_a-vector-init.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_diet_a-vector-insert.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_diet_a-vector-popback.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_diet_a-vector-pushback.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_diet_a-vector-resize.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_diet_a-vector-search.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_diet_a-vector-searchselforg.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_diet_a-vector-sort.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_diet_a-vector-unique.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_diet_a-vector-zeroend.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_glibc_a-list-add.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_glibc_a-list-at.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_glibc_a-list-free.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_glibc_a-list-init.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_glibc_a-list-insertinternal.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_glibc_a-list-search.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_glibc_a-list-searchselforg.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_glibc_a-vector-clear.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_glibc_a-vector-foreach.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_glibc_a-vector-free.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_glibc_a-vector-init.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_glibc_a-vector-insert.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_glibc_a-vector-popback.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_glibc_a-vector-pushback.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_glibc_a-vector-resize.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_glibc_a-vector-search.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_glibc_a-vector-searchselforg.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_glibc_a-vector-sort.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_glibc_a-vector-unique.$(OBJEXT)
+       -rm -f ensc_vector/libensc_vector_glibc_a-vector-zeroend.$(OBJEXT)
+       -rm -f ensc_vector/testsuite/test1.$(OBJEXT)
+       -rm -f ensc_vector/testsuite/test2.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-bcaps-v13.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-bcaps_list-v13.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-capabilities.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-ccaps-v13.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-ccaps_list-v13.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-cflags-compat.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-cflags-v13.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-cflags_list-compat.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-cflags_list-v13.$(OBJEXT)
        -rm -f lib/lib_libvserver_a-checkversion.$(OBJEXT)
-       -rm -f lib/lib_libvserver_a-getctx.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-createskeleton.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-getfilecontext.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-getinsecurebcaps.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-getnbipv4root.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-getprocentry-legacy.$(OBJEXT)
        -rm -f lib/lib_libvserver_a-getversion.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-getvserverappdir.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-getvserverbyctx.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-getvservercfgdir.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-getvservercfgstyle.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-getvserverctx.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-getvservername.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-getvservervdir.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-getxidtype.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-isdirectory.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-isdynamicxid.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-isfile.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-islink.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-issupported.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-issupportedstring.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-listparser_uint32.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-listparser_uint64.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-ncaps-net.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-ncaps_list-net.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-nflags-net.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-nflags_list-net.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-parselimit.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-personalityflag.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-personalityflag_list.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-personalitytype.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall-syscall.$(OBJEXT)
        -rm -f lib/lib_libvserver_a-syscall.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_adddlimit.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_cleanupnamespace.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_ctxcreate.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_ctxmigrate.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_enternamespace.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_getccaps.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_getcflags.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_getdlimit.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_getiattr.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_getncaps.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_getnflags.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_getnxinfo.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_gettasknid.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_gettaskxid.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_getvhiname.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_getvxinfo.$(OBJEXT)
        -rm -f lib/lib_libvserver_a-syscall_kill.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_netadd.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_netcreate.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_netmigrate.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_netremove.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_remdlimit.$(OBJEXT)
        -rm -f lib/lib_libvserver_a-syscall_rlimit.$(OBJEXT)
-       -rm -f lib/lib_libvserver_a-uint2str.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_setccaps.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_setcflags.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_setdlimit.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_setiattr.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_setnamespace.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_setncaps.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_setnflags.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_setsched.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_setvhiname.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-syscall_waitexit.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-val2text-t2v-uint32.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-val2text-t2v-uint64.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-val2text-v2t-uint32.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-val2text-v2t-uint64.$(OBJEXT)
+       -rm -f lib/lib_libvserver_a-xidopt2xid.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-bcaps-v13.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-bcaps-v13.lo
+       -rm -f lib/lib_libvserver_la-bcaps_list-v13.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-bcaps_list-v13.lo
+       -rm -f lib/lib_libvserver_la-capabilities.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-capabilities.lo
+       -rm -f lib/lib_libvserver_la-ccaps-v13.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-ccaps-v13.lo
+       -rm -f lib/lib_libvserver_la-ccaps_list-v13.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-ccaps_list-v13.lo
+       -rm -f lib/lib_libvserver_la-cflags-compat.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-cflags-compat.lo
+       -rm -f lib/lib_libvserver_la-cflags-v13.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-cflags-v13.lo
+       -rm -f lib/lib_libvserver_la-cflags_list-compat.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-cflags_list-compat.lo
+       -rm -f lib/lib_libvserver_la-cflags_list-v13.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-cflags_list-v13.lo
+       -rm -f lib/lib_libvserver_la-checkversion.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-checkversion.lo
+       -rm -f lib/lib_libvserver_la-createskeleton.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-createskeleton.lo
+       -rm -f lib/lib_libvserver_la-getfilecontext.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-getfilecontext.lo
+       -rm -f lib/lib_libvserver_la-getinsecurebcaps.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-getinsecurebcaps.lo
+       -rm -f lib/lib_libvserver_la-getnbipv4root.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-getnbipv4root.lo
+       -rm -f lib/lib_libvserver_la-getprocentry-legacy.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-getprocentry-legacy.lo
+       -rm -f lib/lib_libvserver_la-getversion.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-getversion.lo
+       -rm -f lib/lib_libvserver_la-getvserverappdir.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-getvserverappdir.lo
+       -rm -f lib/lib_libvserver_la-getvserverbyctx.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-getvserverbyctx.lo
+       -rm -f lib/lib_libvserver_la-getvservercfgdir.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-getvservercfgdir.lo
+       -rm -f lib/lib_libvserver_la-getvservercfgstyle.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-getvservercfgstyle.lo
+       -rm -f lib/lib_libvserver_la-getvserverctx.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-getvserverctx.lo
+       -rm -f lib/lib_libvserver_la-getvservername.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-getvservername.lo
+       -rm -f lib/lib_libvserver_la-getvservervdir.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-getvservervdir.lo
+       -rm -f lib/lib_libvserver_la-getxidtype.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-getxidtype.lo
+       -rm -f lib/lib_libvserver_la-isdirectory.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-isdirectory.lo
+       -rm -f lib/lib_libvserver_la-isdynamicxid.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-isdynamicxid.lo
+       -rm -f lib/lib_libvserver_la-isfile.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-isfile.lo
+       -rm -f lib/lib_libvserver_la-islink.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-islink.lo
+       -rm -f lib/lib_libvserver_la-issupported.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-issupported.lo
+       -rm -f lib/lib_libvserver_la-issupportedstring.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-issupportedstring.lo
+       -rm -f lib/lib_libvserver_la-listparser_uint32.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-listparser_uint32.lo
+       -rm -f lib/lib_libvserver_la-listparser_uint64.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-listparser_uint64.lo
+       -rm -f lib/lib_libvserver_la-ncaps-net.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-ncaps-net.lo
+       -rm -f lib/lib_libvserver_la-ncaps_list-net.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-ncaps_list-net.lo
+       -rm -f lib/lib_libvserver_la-nflags-net.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-nflags-net.lo
+       -rm -f lib/lib_libvserver_la-nflags_list-net.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-nflags_list-net.lo
+       -rm -f lib/lib_libvserver_la-parselimit.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-parselimit.lo
+       -rm -f lib/lib_libvserver_la-personalityflag.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-personalityflag.lo
+       -rm -f lib/lib_libvserver_la-personalityflag_list.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-personalityflag_list.lo
+       -rm -f lib/lib_libvserver_la-personalitytype.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-personalitytype.lo
+       -rm -f lib/lib_libvserver_la-syscall-syscall.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall-syscall.lo
+       -rm -f lib/lib_libvserver_la-syscall.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall.lo
+       -rm -f lib/lib_libvserver_la-syscall_adddlimit.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_adddlimit.lo
+       -rm -f lib/lib_libvserver_la-syscall_cleanupnamespace.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_cleanupnamespace.lo
+       -rm -f lib/lib_libvserver_la-syscall_ctxcreate.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_ctxcreate.lo
+       -rm -f lib/lib_libvserver_la-syscall_ctxmigrate.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_ctxmigrate.lo
+       -rm -f lib/lib_libvserver_la-syscall_enternamespace.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_enternamespace.lo
+       -rm -f lib/lib_libvserver_la-syscall_getccaps.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_getccaps.lo
+       -rm -f lib/lib_libvserver_la-syscall_getcflags.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_getcflags.lo
+       -rm -f lib/lib_libvserver_la-syscall_getdlimit.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_getdlimit.lo
+       -rm -f lib/lib_libvserver_la-syscall_getiattr.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_getiattr.lo
+       -rm -f lib/lib_libvserver_la-syscall_getncaps.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_getncaps.lo
+       -rm -f lib/lib_libvserver_la-syscall_getnflags.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_getnflags.lo
+       -rm -f lib/lib_libvserver_la-syscall_getnxinfo.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_getnxinfo.lo
+       -rm -f lib/lib_libvserver_la-syscall_gettasknid.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_gettasknid.lo
+       -rm -f lib/lib_libvserver_la-syscall_gettaskxid.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_gettaskxid.lo
+       -rm -f lib/lib_libvserver_la-syscall_getvhiname.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_getvhiname.lo
+       -rm -f lib/lib_libvserver_la-syscall_getvxinfo.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_getvxinfo.lo
+       -rm -f lib/lib_libvserver_la-syscall_kill.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_kill.lo
+       -rm -f lib/lib_libvserver_la-syscall_netadd.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_netadd.lo
+       -rm -f lib/lib_libvserver_la-syscall_netcreate.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_netcreate.lo
+       -rm -f lib/lib_libvserver_la-syscall_netmigrate.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_netmigrate.lo
+       -rm -f lib/lib_libvserver_la-syscall_netremove.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_netremove.lo
+       -rm -f lib/lib_libvserver_la-syscall_remdlimit.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_remdlimit.lo
+       -rm -f lib/lib_libvserver_la-syscall_rlimit.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_rlimit.lo
+       -rm -f lib/lib_libvserver_la-syscall_setccaps.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_setccaps.lo
+       -rm -f lib/lib_libvserver_la-syscall_setcflags.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_setcflags.lo
+       -rm -f lib/lib_libvserver_la-syscall_setdlimit.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_setdlimit.lo
+       -rm -f lib/lib_libvserver_la-syscall_setiattr.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_setiattr.lo
+       -rm -f lib/lib_libvserver_la-syscall_setnamespace.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_setnamespace.lo
+       -rm -f lib/lib_libvserver_la-syscall_setncaps.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_setncaps.lo
+       -rm -f lib/lib_libvserver_la-syscall_setnflags.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_setnflags.lo
+       -rm -f lib/lib_libvserver_la-syscall_setsched.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_setsched.lo
+       -rm -f lib/lib_libvserver_la-syscall_setvhiname.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_setvhiname.lo
+       -rm -f lib/lib_libvserver_la-syscall_waitexit.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-syscall_waitexit.lo
+       -rm -f lib/lib_libvserver_la-val2text-t2v-uint32.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-val2text-t2v-uint32.lo
+       -rm -f lib/lib_libvserver_la-val2text-t2v-uint64.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-val2text-t2v-uint64.lo
+       -rm -f lib/lib_libvserver_la-val2text-v2t-uint32.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-val2text-v2t-uint32.lo
+       -rm -f lib/lib_libvserver_la-val2text-v2t-uint64.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-val2text-v2t-uint64.lo
+       -rm -f lib/lib_libvserver_la-xidopt2xid.$(OBJEXT)
+       -rm -f lib/lib_libvserver_la-xidopt2xid.lo
+       -rm -f lib/testsuite/lib_testsuite_cflags-cflags.$(OBJEXT)
+       -rm -f lib/testsuite/lib_testsuite_fmt-fmt.$(OBJEXT)
+       -rm -f lib/testsuite/lib_testsuite_parselimit-parselimit.$(OBJEXT)
+       -rm -f lib/testsuite/lib_testsuite_personality-personality.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-command-appendparameter.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-command-exec.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-command-free.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-command-init.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-command-reset.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-command-setparams.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-command-wait.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-errinfo-writeerrno.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-filecfg-iteratemultiline.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-filecfg-readentryflag.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-filecfg-readentrystr.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-jailintotempdir.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-matchlist-appendfiles.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-matchlist-compare.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-matchlist-destroy.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-matchlist-init.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-matchlist-initbyvserver.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-matchlist-initmanually.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-matchlist-initrefserverlist.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-matchlist-printid.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-matchvserverinfo-free.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-matchvserverinfo-init.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-pathinfo-append.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-pathinfo-test.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-switchtowatchxid.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-unify-copy.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-unify-deunify.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-unify-isiunlinkable.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-unify-settime.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-unify-unify.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-util-canonify.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-util-exitlikeprocess.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-util-isnumber.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-util-lockfile.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_diet_a-util-safechdir.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-command-appendparameter.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-command-exec.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-command-free.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-command-init.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-command-reset.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-command-setparams.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-command-wait.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-errinfo-writeerrno.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-filecfg-iteratemultiline.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-filecfg-readentryflag.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-filecfg-readentrystr.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-jailintotempdir.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-matchlist-appendfiles.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-matchlist-compare.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-matchlist-destroy.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-matchlist-init.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-matchlist-initbyvserver.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-matchlist-initmanually.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-matchlist-initrefserverlist.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-matchlist-printid.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-matchvserverinfo-free.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-matchvserverinfo-init.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-pathinfo-append.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-pathinfo-test.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-switchtowatchxid.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-unify-copy.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-unify-deunify.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-unify-isiunlinkable.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-unify-settime.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-unify-unify.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-util-canonify.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-util-exitlikeprocess.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-util-isnumber.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-util-lockfile.$(OBJEXT)
+       -rm -f lib_internal/lib_internal_libinternal_glibc_a-util-safechdir.$(OBJEXT)
+       -rm -f lib_internal/testsuite/command.$(OBJEXT)
+       -rm -f lib_internal/testsuite/copy.$(OBJEXT)
+       -rm -f lib_internal/testsuite/filecfg-ml.$(OBJEXT)
+       -rm -f lib_internal/testsuite/sigbus.$(OBJEXT)
        -rm -f src/capchroot.$(OBJEXT)
+       -rm -f src/chain-echo.$(OBJEXT)
        -rm -f src/chbind.$(OBJEXT)
        -rm -f src/chcontext.$(OBJEXT)
+       -rm -f src/check-unixfile.$(OBJEXT)
+       -rm -f src/chroot-sh.$(OBJEXT)
+       -rm -f src/chxid.$(OBJEXT)
+       -rm -f src/exec-cd.$(OBJEXT)
+       -rm -f src/exec-ulimit.$(OBJEXT)
        -rm -f src/fakerunlevel.$(OBJEXT)
        -rm -f src/filetime.$(OBJEXT)
+       -rm -f src/fstool.$(OBJEXT)
        -rm -f src/ifspec.$(OBJEXT)
+       -rm -f src/keep-ctx-alive.$(OBJEXT)
        -rm -f src/listdevip.$(OBJEXT)
+       -rm -f src/lockfile.$(OBJEXT)
+       -rm -f src/lsxid.$(OBJEXT)
+       -rm -f src/mask2prefix.$(OBJEXT)
        -rm -f src/parserpmdump.$(OBJEXT)
        -rm -f src/readlink.$(OBJEXT)
+       -rm -f src/rebootmgr.$(OBJEXT)
        -rm -f src/reducecap.$(OBJEXT)
+       -rm -f src/rpm-fake-resolver.$(OBJEXT)
+       -rm -f src/save_ctxinfo.$(OBJEXT)
+       -rm -f src/secure-mount.$(OBJEXT)
+       -rm -f src/setattr.$(OBJEXT)
        -rm -f src/showattr.$(OBJEXT)
        -rm -f src/showperm.$(OBJEXT)
-       -rm -f src/src_rebootmgr-rebootmgr.$(OBJEXT)
+       -rm -f src/sigexec.$(OBJEXT)
+       -rm -f src/src_rpm_fake_la-rpm-fake.$(OBJEXT)
+       -rm -f src/src_rpm_fake_la-rpm-fake.lo
        -rm -f src/src_vkill-vkill.$(OBJEXT)
-       -rm -f src/src_vunify-vunify.$(OBJEXT)
-       -rm -f src/src_vunify-vutil.$(OBJEXT)
-       -rm -f src/vbuild.$(OBJEXT)
-       -rm -f src/vcheck.$(OBJEXT)
+       -rm -f src/testsuite/chbind-test.$(OBJEXT)
+       -rm -f src/testsuite/chcontext-test.$(OBJEXT)
+       -rm -f src/testsuite/rpm-fake-test.$(OBJEXT)
+       -rm -f src/testsuite/src_testsuite_vunify_functest-vunify-functest.$(OBJEXT)
+       -rm -f src/vattribute.$(OBJEXT)
+       -rm -f src/vcontext.$(OBJEXT)
+       -rm -f src/vcopy.$(OBJEXT)
+       -rm -f src/vdlimit.$(OBJEXT)
        -rm -f src/vdu.$(OBJEXT)
-       -rm -f src/vfiles.$(OBJEXT)
+       -rm -f src/vhashify.$(OBJEXT)
        -rm -f src/vlimit.$(OBJEXT)
+       -rm -f src/vnamespace.$(OBJEXT)
+       -rm -f src/vps.$(OBJEXT)
        -rm -f src/vreboot.$(OBJEXT)
+       -rm -f src/vrsetup.$(OBJEXT)
+       -rm -f src/vsched.$(OBJEXT)
+       -rm -f src/vserver-info.$(OBJEXT)
        -rm -f src/vserver-stat.$(OBJEXT)
-       -rm -f src/vutil.$(OBJEXT)
+       -rm -f src/vshelper-sync.$(OBJEXT)
+       -rm -f src/vuname.$(OBJEXT)
+       -rm -f src/vunify.$(OBJEXT)
+       -rm -f src/vwait.$(OBJEXT)
        -rm -f tests/escaperoot.$(OBJEXT)
        -rm -f tests/forkbomb.$(OBJEXT)
+       -rm -f tests/getctx.$(OBJEXT)
+       -rm -f tests/getinitpid.$(OBJEXT)
        -rm -f tests/testipc.$(OBJEXT)
        -rm -f tests/testlimit.$(OBJEXT)
        -rm -f tests/testopenf.$(OBJEXT)
+       -rm -f tests/vserver-info.$(OBJEXT)
+       -rm -f vserver-start/configuration-init.$(OBJEXT)
+       -rm -f vserver-start/configuration.$(OBJEXT)
+       -rm -f vserver-start/defaulttty.$(OBJEXT)
+       -rm -f vserver-start/interface-add.$(OBJEXT)
+       -rm -f vserver-start/interface-print.$(OBJEXT)
+       -rm -f vserver-start/interface-read.$(OBJEXT)
+       -rm -f vserver-start/interface-remove.$(OBJEXT)
+       -rm -f vserver-start/interface.$(OBJEXT)
+       -rm -f vserver-start/main.$(OBJEXT)
+       -rm -f vserver-start/mount.$(OBJEXT)
+       -rm -f vserver-start/scriptlets.$(OBJEXT)
+       -rm -f vserver-start/undo.$(OBJEXT)
+       -rm -f vserver-start/vshelper.$(OBJEXT)
 
 distclean-compile:
        -rm -f *.tab.c
 
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib-dietlibc-not-enabled-error.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib-glibc-not-enabled-error.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-tai64n.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmtx-32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmtx-64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmt-32.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmt-64.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmt-tai64n.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmtx-32.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmtx-64.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-add.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-at.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-free.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-init.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-insertinternal.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-search.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-searchselforg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-clear.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-foreach.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-free.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-init.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-insert.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-popback.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-pushback.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-resize.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-search.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-searchselforg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-sort.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-unique.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-zeroend.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-add.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-at.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-free.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-init.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-insertinternal.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-search.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-searchselforg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-clear.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-foreach.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-free.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-init.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-insert.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-popback.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-pushback.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-resize.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-search.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-searchselforg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-sort.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-unique.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-zeroend.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/testsuite/$(DEPDIR)/test1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@ensc_vector/testsuite/$(DEPDIR)/test2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-bcaps-v13.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-bcaps_list-v13.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-capabilities.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-ccaps-v13.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-ccaps_list-v13.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-cflags-compat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-cflags-v13.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-cflags_list-compat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-cflags_list-v13.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-checkversion.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-getctx.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-createskeleton.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-getfilecontext.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-getinsecurebcaps.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-getnbipv4root.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-getprocentry-legacy.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-getversion.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-getvserverappdir.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-getvserverbyctx.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-getvservercfgdir.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-getvservercfgstyle.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-getvserverctx.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-getvservername.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-getvservervdir.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-getxidtype.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-isdirectory.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-isdynamicxid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-isfile.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-islink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-issupported.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-issupportedstring.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-listparser_uint32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-listparser_uint64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-ncaps-net.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-ncaps_list-net.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-nflags-net.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-nflags_list-net.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-parselimit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-personalityflag.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-personalityflag_list.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-personalitytype.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall-syscall.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_adddlimit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_cleanupnamespace.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_ctxcreate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_ctxmigrate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_enternamespace.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_getccaps.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_getcflags.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_getdlimit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_getiattr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_getncaps.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_getnflags.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_getnxinfo.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_gettasknid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_gettaskxid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_getvhiname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_getvxinfo.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_kill.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_netadd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_netcreate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_netmigrate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_netremove.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_remdlimit.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_rlimit.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-uint2str.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_setccaps.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_setcflags.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_setdlimit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_setiattr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_setnamespace.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_setncaps.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_setnflags.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_setsched.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_setvhiname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-syscall_waitexit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-val2text-t2v-uint32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-val2text-t2v-uint64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-val2text-v2t-uint32.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-val2text-v2t-uint64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_a-xidopt2xid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-bcaps-v13.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-bcaps_list-v13.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-capabilities.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-ccaps-v13.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-ccaps_list-v13.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-cflags-compat.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-cflags-v13.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-cflags_list-compat.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-cflags_list-v13.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-checkversion.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-createskeleton.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-getfilecontext.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-getinsecurebcaps.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-getnbipv4root.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-getprocentry-legacy.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-getversion.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-getvserverappdir.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-getvserverbyctx.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-getvservercfgdir.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-getvservercfgstyle.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-getvserverctx.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-getvservername.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-getvservervdir.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-getxidtype.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-isdirectory.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-isdynamicxid.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-isfile.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-islink.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-issupported.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-issupportedstring.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-listparser_uint32.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-listparser_uint64.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-ncaps-net.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-ncaps_list-net.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-nflags-net.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-nflags_list-net.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-parselimit.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-personalityflag.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-personalityflag_list.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-personalitytype.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall-syscall.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_adddlimit.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_cleanupnamespace.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_ctxcreate.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_ctxmigrate.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_enternamespace.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_getccaps.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_getcflags.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_getdlimit.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_getiattr.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_getncaps.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_getnflags.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_getnxinfo.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_gettasknid.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_gettaskxid.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_getvhiname.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_getvxinfo.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_kill.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_netadd.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_netcreate.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_netmigrate.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_netremove.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_remdlimit.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_rlimit.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_setccaps.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_setcflags.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_setdlimit.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_setiattr.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_setnamespace.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_setncaps.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_setnflags.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_setsched.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_setvhiname.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-syscall_waitexit.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-val2text-t2v-uint32.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-val2text-t2v-uint64.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-val2text-v2t-uint32.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-val2text-v2t-uint64.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/$(DEPDIR)/lib_libvserver_la-xidopt2xid.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/testsuite/$(DEPDIR)/lib_testsuite_cflags-cflags.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/testsuite/$(DEPDIR)/lib_testsuite_fmt-fmt.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/testsuite/$(DEPDIR)/lib_testsuite_parselimit-parselimit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/testsuite/$(DEPDIR)/lib_testsuite_personality-personality.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-appendparameter.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-exec.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-free.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-init.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-reset.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-setparams.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-wait.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-errinfo-writeerrno.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-iteratemultiline.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-readentryflag.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-readentrystr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-jailintotempdir.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-appendfiles.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-compare.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-destroy.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-init.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initbyvserver.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initmanually.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initrefserverlist.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-printid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchvserverinfo-free.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchvserverinfo-init.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-pathinfo-append.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-pathinfo-test.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-switchtowatchxid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-copy.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-deunify.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-isiunlinkable.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-settime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-unify.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-canonify.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-exitlikeprocess.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-isnumber.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-lockfile.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-safechdir.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-appendparameter.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-exec.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-free.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-init.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-reset.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-setparams.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-wait.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-errinfo-writeerrno.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-iteratemultiline.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-readentryflag.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-readentrystr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-jailintotempdir.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-appendfiles.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-compare.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-destroy.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-init.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initbyvserver.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initmanually.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initrefserverlist.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-printid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchvserverinfo-free.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchvserverinfo-init.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-pathinfo-append.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-pathinfo-test.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-switchtowatchxid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-copy.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-deunify.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-isiunlinkable.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-settime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-unify.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-canonify.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-exitlikeprocess.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-isnumber.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-lockfile.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-safechdir.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/testsuite/$(DEPDIR)/command.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/testsuite/$(DEPDIR)/copy.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/testsuite/$(DEPDIR)/filecfg-ml.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib_internal/testsuite/$(DEPDIR)/sigbus.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/capchroot.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/chain-echo.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/chbind.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/chcontext.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/check-unixfile.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/chroot-sh.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/chxid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/exec-cd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/exec-ulimit.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/fakerunlevel.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/filetime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/fstool.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/ifspec.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/keep-ctx-alive.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/listdevip.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/lockfile.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/lsxid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/mask2prefix.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/parserpmdump.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/readlink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/rebootmgr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/reducecap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/rpm-fake-resolver.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/save_ctxinfo.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/secure-mount.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/setattr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/showattr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/showperm.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/src_rebootmgr-rebootmgr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/sigexec.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/src_rpm_fake_la-rpm-fake.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/src_vkill-vkill.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/src_vunify-vunify.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/src_vunify-vutil.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vbuild.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vcheck.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vattribute.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vcontext.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vcopy.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vdlimit.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vdu.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vfiles.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vhashify.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vlimit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vnamespace.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vps.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vreboot.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vrsetup.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vsched.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vserver-info.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vserver-stat.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vutil.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vshelper-sync.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vuname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vunify.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vwait.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testsuite/$(DEPDIR)/chbind-test.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testsuite/$(DEPDIR)/chcontext-test.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testsuite/$(DEPDIR)/rpm-fake-test.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/testsuite/$(DEPDIR)/src_testsuite_vunify_functest-vunify-functest.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/escaperoot.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/forkbomb.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/getctx.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/getinitpid.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/testipc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/testlimit.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/testopenf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/vserver-info.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vserver-start/$(DEPDIR)/configuration-init.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vserver-start/$(DEPDIR)/configuration.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vserver-start/$(DEPDIR)/defaulttty.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vserver-start/$(DEPDIR)/interface-add.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vserver-start/$(DEPDIR)/interface-print.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vserver-start/$(DEPDIR)/interface-read.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vserver-start/$(DEPDIR)/interface-remove.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vserver-start/$(DEPDIR)/interface.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vserver-start/$(DEPDIR)/main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vserver-start/$(DEPDIR)/mount.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vserver-start/$(DEPDIR)/scriptlets.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vserver-start/$(DEPDIR)/undo.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@vserver-start/$(DEPDIR)/vshelper.Po@am__quote@
 
 .c.o:
-@am__fastdepCC_TRUE@   if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@am__fastdepCC_TRUE@   depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`; \
+@am__fastdepCC_TRUE@   if $(COMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@   then mv -f "$$depbase.Tpo" "$$depbase.Po"; else rm -f "$$depbase.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(COMPILE) -c -o $@ $<
 
 .c.obj:
-@am__fastdepCC_TRUE@   if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@am__fastdepCC_TRUE@   depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`; \
+@am__fastdepCC_TRUE@   if $(COMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@   then mv -f "$$depbase.Tpo" "$$depbase.Po"; else rm -f "$$depbase.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
+.c.lo:
+@am__fastdepCC_TRUE@   depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`; \
+@am__fastdepCC_TRUE@   if $(LTCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@   then mv -f "$$depbase.Tpo" "$$depbase.Plo"; else rm -f "$$depbase.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
+
 lib/lib_libvserver_a-syscall.o: lib/syscall.c
 @am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall.Tpo" -c -o lib/lib_libvserver_a-syscall.o `test -f 'lib/syscall.c' || echo '$(srcdir)/'`lib/syscall.c; \
 @am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall.c' object='lib/lib_libvserver_a-syscall.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='lib/$(DEPDIR)/lib_libvserver_a-syscall.Po' tmpdepfile='lib/$(DEPDIR)/lib_libvserver_a-syscall.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall.o `test -f 'lib/syscall.c' || echo '$(srcdir)/'`lib/syscall.c
 
 lib/lib_libvserver_a-syscall.obj: lib/syscall.c
 @am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall.Tpo" -c -o lib/lib_libvserver_a-syscall.obj `if test -f 'lib/syscall.c'; then $(CYGPATH_W) 'lib/syscall.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall.c'; fi`; \
 @am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall.c' object='lib/lib_libvserver_a-syscall.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='lib/$(DEPDIR)/lib_libvserver_a-syscall.Po' tmpdepfile='lib/$(DEPDIR)/lib_libvserver_a-syscall.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall.obj `if test -f 'lib/syscall.c'; then $(CYGPATH_W) 'lib/syscall.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall.c'; fi`
 
-lib/lib_libvserver_a-syscall_rlimit.o: lib/syscall_rlimit.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_rlimit.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_rlimit.Tpo" -c -o lib/lib_libvserver_a-syscall_rlimit.o `test -f 'lib/syscall_rlimit.c' || echo '$(srcdir)/'`lib/syscall_rlimit.c; \
-@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_rlimit.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_rlimit.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_rlimit.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_rlimit.c' object='lib/lib_libvserver_a-syscall_rlimit.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='lib/$(DEPDIR)/lib_libvserver_a-syscall_rlimit.Po' tmpdepfile='lib/$(DEPDIR)/lib_libvserver_a-syscall_rlimit.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_rlimit.o `test -f 'lib/syscall_rlimit.c' || echo '$(srcdir)/'`lib/syscall_rlimit.c
-
-lib/lib_libvserver_a-syscall_rlimit.obj: lib/syscall_rlimit.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_rlimit.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_rlimit.Tpo" -c -o lib/lib_libvserver_a-syscall_rlimit.obj `if test -f 'lib/syscall_rlimit.c'; then $(CYGPATH_W) 'lib/syscall_rlimit.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_rlimit.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_rlimit.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_rlimit.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_rlimit.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_rlimit.c' object='lib/lib_libvserver_a-syscall_rlimit.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='lib/$(DEPDIR)/lib_libvserver_a-syscall_rlimit.Po' tmpdepfile='lib/$(DEPDIR)/lib_libvserver_a-syscall_rlimit.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_rlimit.obj `if test -f 'lib/syscall_rlimit.c'; then $(CYGPATH_W) 'lib/syscall_rlimit.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_rlimit.c'; fi`
-
-lib/lib_libvserver_a-syscall_kill.o: lib/syscall_kill.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_kill.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_kill.Tpo" -c -o lib/lib_libvserver_a-syscall_kill.o `test -f 'lib/syscall_kill.c' || echo '$(srcdir)/'`lib/syscall_kill.c; \
-@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_kill.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_kill.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_kill.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_kill.c' object='lib/lib_libvserver_a-syscall_kill.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='lib/$(DEPDIR)/lib_libvserver_a-syscall_kill.Po' tmpdepfile='lib/$(DEPDIR)/lib_libvserver_a-syscall_kill.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_kill.o `test -f 'lib/syscall_kill.c' || echo '$(srcdir)/'`lib/syscall_kill.c
-
-lib/lib_libvserver_a-syscall_kill.obj: lib/syscall_kill.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_kill.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_kill.Tpo" -c -o lib/lib_libvserver_a-syscall_kill.obj `if test -f 'lib/syscall_kill.c'; then $(CYGPATH_W) 'lib/syscall_kill.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_kill.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_kill.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_kill.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_kill.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_kill.c' object='lib/lib_libvserver_a-syscall_kill.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='lib/$(DEPDIR)/lib_libvserver_a-syscall_kill.Po' tmpdepfile='lib/$(DEPDIR)/lib_libvserver_a-syscall_kill.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_kill.obj `if test -f 'lib/syscall_kill.c'; then $(CYGPATH_W) 'lib/syscall_kill.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_kill.c'; fi`
-
 lib/lib_libvserver_a-checkversion.o: lib/checkversion.c
 @am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-checkversion.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-checkversion.Tpo" -c -o lib/lib_libvserver_a-checkversion.o `test -f 'lib/checkversion.c' || echo '$(srcdir)/'`lib/checkversion.c; \
 @am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-checkversion.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-checkversion.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-checkversion.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/checkversion.c' object='lib/lib_libvserver_a-checkversion.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='lib/$(DEPDIR)/lib_libvserver_a-checkversion.Po' tmpdepfile='lib/$(DEPDIR)/lib_libvserver_a-checkversion.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-checkversion.o `test -f 'lib/checkversion.c' || echo '$(srcdir)/'`lib/checkversion.c
 
 lib/lib_libvserver_a-checkversion.obj: lib/checkversion.c
 @am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-checkversion.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-checkversion.Tpo" -c -o lib/lib_libvserver_a-checkversion.obj `if test -f 'lib/checkversion.c'; then $(CYGPATH_W) 'lib/checkversion.c'; else $(CYGPATH_W) '$(srcdir)/lib/checkversion.c'; fi`; \
 @am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-checkversion.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-checkversion.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-checkversion.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/checkversion.c' object='lib/lib_libvserver_a-checkversion.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='lib/$(DEPDIR)/lib_libvserver_a-checkversion.Po' tmpdepfile='lib/$(DEPDIR)/lib_libvserver_a-checkversion.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-checkversion.obj `if test -f 'lib/checkversion.c'; then $(CYGPATH_W) 'lib/checkversion.c'; else $(CYGPATH_W) '$(srcdir)/lib/checkversion.c'; fi`
 
-lib/lib_libvserver_a-getctx.o: lib/getctx.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getctx.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getctx.Tpo" -c -o lib/lib_libvserver_a-getctx.o `test -f 'lib/getctx.c' || echo '$(srcdir)/'`lib/getctx.c; \
-@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getctx.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getctx.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getctx.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getctx.c' object='lib/lib_libvserver_a-getctx.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='lib/$(DEPDIR)/lib_libvserver_a-getctx.Po' tmpdepfile='lib/$(DEPDIR)/lib_libvserver_a-getctx.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getctx.o `test -f 'lib/getctx.c' || echo '$(srcdir)/'`lib/getctx.c
-
-lib/lib_libvserver_a-getctx.obj: lib/getctx.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getctx.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getctx.Tpo" -c -o lib/lib_libvserver_a-getctx.obj `if test -f 'lib/getctx.c'; then $(CYGPATH_W) 'lib/getctx.c'; else $(CYGPATH_W) '$(srcdir)/lib/getctx.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getctx.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getctx.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getctx.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getctx.c' object='lib/lib_libvserver_a-getctx.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='lib/$(DEPDIR)/lib_libvserver_a-getctx.Po' tmpdepfile='lib/$(DEPDIR)/lib_libvserver_a-getctx.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getctx.obj `if test -f 'lib/getctx.c'; then $(CYGPATH_W) 'lib/getctx.c'; else $(CYGPATH_W) '$(srcdir)/lib/getctx.c'; fi`
+lib/lib_libvserver_a-isdirectory.o: lib/isdirectory.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-isdirectory.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-isdirectory.Tpo" -c -o lib/lib_libvserver_a-isdirectory.o `test -f 'lib/isdirectory.c' || echo '$(srcdir)/'`lib/isdirectory.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-isdirectory.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-isdirectory.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-isdirectory.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/isdirectory.c' object='lib/lib_libvserver_a-isdirectory.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-isdirectory.o `test -f 'lib/isdirectory.c' || echo '$(srcdir)/'`lib/isdirectory.c
+
+lib/lib_libvserver_a-isdirectory.obj: lib/isdirectory.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-isdirectory.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-isdirectory.Tpo" -c -o lib/lib_libvserver_a-isdirectory.obj `if test -f 'lib/isdirectory.c'; then $(CYGPATH_W) 'lib/isdirectory.c'; else $(CYGPATH_W) '$(srcdir)/lib/isdirectory.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-isdirectory.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-isdirectory.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-isdirectory.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/isdirectory.c' object='lib/lib_libvserver_a-isdirectory.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-isdirectory.obj `if test -f 'lib/isdirectory.c'; then $(CYGPATH_W) 'lib/isdirectory.c'; else $(CYGPATH_W) '$(srcdir)/lib/isdirectory.c'; fi`
+
+lib/lib_libvserver_a-isfile.o: lib/isfile.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-isfile.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-isfile.Tpo" -c -o lib/lib_libvserver_a-isfile.o `test -f 'lib/isfile.c' || echo '$(srcdir)/'`lib/isfile.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-isfile.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-isfile.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-isfile.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/isfile.c' object='lib/lib_libvserver_a-isfile.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-isfile.o `test -f 'lib/isfile.c' || echo '$(srcdir)/'`lib/isfile.c
+
+lib/lib_libvserver_a-isfile.obj: lib/isfile.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-isfile.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-isfile.Tpo" -c -o lib/lib_libvserver_a-isfile.obj `if test -f 'lib/isfile.c'; then $(CYGPATH_W) 'lib/isfile.c'; else $(CYGPATH_W) '$(srcdir)/lib/isfile.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-isfile.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-isfile.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-isfile.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/isfile.c' object='lib/lib_libvserver_a-isfile.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-isfile.obj `if test -f 'lib/isfile.c'; then $(CYGPATH_W) 'lib/isfile.c'; else $(CYGPATH_W) '$(srcdir)/lib/isfile.c'; fi`
+
+lib/lib_libvserver_a-islink.o: lib/islink.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-islink.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-islink.Tpo" -c -o lib/lib_libvserver_a-islink.o `test -f 'lib/islink.c' || echo '$(srcdir)/'`lib/islink.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-islink.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-islink.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-islink.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/islink.c' object='lib/lib_libvserver_a-islink.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-islink.o `test -f 'lib/islink.c' || echo '$(srcdir)/'`lib/islink.c
+
+lib/lib_libvserver_a-islink.obj: lib/islink.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-islink.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-islink.Tpo" -c -o lib/lib_libvserver_a-islink.obj `if test -f 'lib/islink.c'; then $(CYGPATH_W) 'lib/islink.c'; else $(CYGPATH_W) '$(srcdir)/lib/islink.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-islink.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-islink.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-islink.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/islink.c' object='lib/lib_libvserver_a-islink.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-islink.obj `if test -f 'lib/islink.c'; then $(CYGPATH_W) 'lib/islink.c'; else $(CYGPATH_W) '$(srcdir)/lib/islink.c'; fi`
+
+lib/lib_libvserver_a-getnbipv4root.o: lib/getnbipv4root.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getnbipv4root.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getnbipv4root.Tpo" -c -o lib/lib_libvserver_a-getnbipv4root.o `test -f 'lib/getnbipv4root.c' || echo '$(srcdir)/'`lib/getnbipv4root.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getnbipv4root.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getnbipv4root.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getnbipv4root.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getnbipv4root.c' object='lib/lib_libvserver_a-getnbipv4root.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getnbipv4root.o `test -f 'lib/getnbipv4root.c' || echo '$(srcdir)/'`lib/getnbipv4root.c
+
+lib/lib_libvserver_a-getnbipv4root.obj: lib/getnbipv4root.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getnbipv4root.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getnbipv4root.Tpo" -c -o lib/lib_libvserver_a-getnbipv4root.obj `if test -f 'lib/getnbipv4root.c'; then $(CYGPATH_W) 'lib/getnbipv4root.c'; else $(CYGPATH_W) '$(srcdir)/lib/getnbipv4root.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getnbipv4root.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getnbipv4root.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getnbipv4root.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getnbipv4root.c' object='lib/lib_libvserver_a-getnbipv4root.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getnbipv4root.obj `if test -f 'lib/getnbipv4root.c'; then $(CYGPATH_W) 'lib/getnbipv4root.c'; else $(CYGPATH_W) '$(srcdir)/lib/getnbipv4root.c'; fi`
 
 lib/lib_libvserver_a-getversion.o: lib/getversion.c
 @am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getversion.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getversion.Tpo" -c -o lib/lib_libvserver_a-getversion.o `test -f 'lib/getversion.c' || echo '$(srcdir)/'`lib/getversion.c; \
 @am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getversion.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getversion.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getversion.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getversion.c' object='lib/lib_libvserver_a-getversion.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='lib/$(DEPDIR)/lib_libvserver_a-getversion.Po' tmpdepfile='lib/$(DEPDIR)/lib_libvserver_a-getversion.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getversion.o `test -f 'lib/getversion.c' || echo '$(srcdir)/'`lib/getversion.c
 
 lib/lib_libvserver_a-getversion.obj: lib/getversion.c
 @am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getversion.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getversion.Tpo" -c -o lib/lib_libvserver_a-getversion.obj `if test -f 'lib/getversion.c'; then $(CYGPATH_W) 'lib/getversion.c'; else $(CYGPATH_W) '$(srcdir)/lib/getversion.c'; fi`; \
 @am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getversion.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getversion.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getversion.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getversion.c' object='lib/lib_libvserver_a-getversion.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='lib/$(DEPDIR)/lib_libvserver_a-getversion.Po' tmpdepfile='lib/$(DEPDIR)/lib_libvserver_a-getversion.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getversion.obj `if test -f 'lib/getversion.c'; then $(CYGPATH_W) 'lib/getversion.c'; else $(CYGPATH_W) '$(srcdir)/lib/getversion.c'; fi`
 
-lib/lib_libvserver_a-uint2str.o: lib/uint2str.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-uint2str.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-uint2str.Tpo" -c -o lib/lib_libvserver_a-uint2str.o `test -f 'lib/uint2str.c' || echo '$(srcdir)/'`lib/uint2str.c; \
-@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-uint2str.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-uint2str.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-uint2str.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/uint2str.c' object='lib/lib_libvserver_a-uint2str.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='lib/$(DEPDIR)/lib_libvserver_a-uint2str.Po' tmpdepfile='lib/$(DEPDIR)/lib_libvserver_a-uint2str.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-uint2str.o `test -f 'lib/uint2str.c' || echo '$(srcdir)/'`lib/uint2str.c
-
-lib/lib_libvserver_a-uint2str.obj: lib/uint2str.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-uint2str.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-uint2str.Tpo" -c -o lib/lib_libvserver_a-uint2str.obj `if test -f 'lib/uint2str.c'; then $(CYGPATH_W) 'lib/uint2str.c'; else $(CYGPATH_W) '$(srcdir)/lib/uint2str.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-uint2str.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-uint2str.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-uint2str.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/uint2str.c' object='lib/lib_libvserver_a-uint2str.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='lib/$(DEPDIR)/lib_libvserver_a-uint2str.Po' tmpdepfile='lib/$(DEPDIR)/lib_libvserver_a-uint2str.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-uint2str.obj `if test -f 'lib/uint2str.c'; then $(CYGPATH_W) 'lib/uint2str.c'; else $(CYGPATH_W) '$(srcdir)/lib/uint2str.c'; fi`
-
-src/capchroot.o: src/capchroot.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/capchroot.o -MD -MP -MF "src/$(DEPDIR)/capchroot.Tpo" -c -o src/capchroot.o `test -f 'src/capchroot.c' || echo '$(srcdir)/'`src/capchroot.c; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/capchroot.Tpo" "src/$(DEPDIR)/capchroot.Po"; else rm -f "src/$(DEPDIR)/capchroot.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/capchroot.c' object='src/capchroot.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/capchroot.Po' tmpdepfile='src/$(DEPDIR)/capchroot.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/capchroot.o `test -f 'src/capchroot.c' || echo '$(srcdir)/'`src/capchroot.c
-
-src/capchroot.obj: src/capchroot.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/capchroot.obj -MD -MP -MF "src/$(DEPDIR)/capchroot.Tpo" -c -o src/capchroot.obj `if test -f 'src/capchroot.c'; then $(CYGPATH_W) 'src/capchroot.c'; else $(CYGPATH_W) '$(srcdir)/src/capchroot.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/capchroot.Tpo" "src/$(DEPDIR)/capchroot.Po"; else rm -f "src/$(DEPDIR)/capchroot.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/capchroot.c' object='src/capchroot.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/capchroot.Po' tmpdepfile='src/$(DEPDIR)/capchroot.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/capchroot.obj `if test -f 'src/capchroot.c'; then $(CYGPATH_W) 'src/capchroot.c'; else $(CYGPATH_W) '$(srcdir)/src/capchroot.c'; fi`
-
-src/chbind.o: src/chbind.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/chbind.o -MD -MP -MF "src/$(DEPDIR)/chbind.Tpo" -c -o src/chbind.o `test -f 'src/chbind.c' || echo '$(srcdir)/'`src/chbind.c; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/chbind.Tpo" "src/$(DEPDIR)/chbind.Po"; else rm -f "src/$(DEPDIR)/chbind.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/chbind.c' object='src/chbind.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/chbind.Po' tmpdepfile='src/$(DEPDIR)/chbind.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/chbind.o `test -f 'src/chbind.c' || echo '$(srcdir)/'`src/chbind.c
-
-src/chbind.obj: src/chbind.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/chbind.obj -MD -MP -MF "src/$(DEPDIR)/chbind.Tpo" -c -o src/chbind.obj `if test -f 'src/chbind.c'; then $(CYGPATH_W) 'src/chbind.c'; else $(CYGPATH_W) '$(srcdir)/src/chbind.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/chbind.Tpo" "src/$(DEPDIR)/chbind.Po"; else rm -f "src/$(DEPDIR)/chbind.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/chbind.c' object='src/chbind.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/chbind.Po' tmpdepfile='src/$(DEPDIR)/chbind.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/chbind.obj `if test -f 'src/chbind.c'; then $(CYGPATH_W) 'src/chbind.c'; else $(CYGPATH_W) '$(srcdir)/src/chbind.c'; fi`
-
-src/chcontext.o: src/chcontext.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/chcontext.o -MD -MP -MF "src/$(DEPDIR)/chcontext.Tpo" -c -o src/chcontext.o `test -f 'src/chcontext.c' || echo '$(srcdir)/'`src/chcontext.c; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/chcontext.Tpo" "src/$(DEPDIR)/chcontext.Po"; else rm -f "src/$(DEPDIR)/chcontext.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/chcontext.c' object='src/chcontext.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/chcontext.Po' tmpdepfile='src/$(DEPDIR)/chcontext.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/chcontext.o `test -f 'src/chcontext.c' || echo '$(srcdir)/'`src/chcontext.c
-
-src/chcontext.obj: src/chcontext.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/chcontext.obj -MD -MP -MF "src/$(DEPDIR)/chcontext.Tpo" -c -o src/chcontext.obj `if test -f 'src/chcontext.c'; then $(CYGPATH_W) 'src/chcontext.c'; else $(CYGPATH_W) '$(srcdir)/src/chcontext.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/chcontext.Tpo" "src/$(DEPDIR)/chcontext.Po"; else rm -f "src/$(DEPDIR)/chcontext.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/chcontext.c' object='src/chcontext.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/chcontext.Po' tmpdepfile='src/$(DEPDIR)/chcontext.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/chcontext.obj `if test -f 'src/chcontext.c'; then $(CYGPATH_W) 'src/chcontext.c'; else $(CYGPATH_W) '$(srcdir)/src/chcontext.c'; fi`
-
-src/fakerunlevel.o: src/fakerunlevel.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/fakerunlevel.o -MD -MP -MF "src/$(DEPDIR)/fakerunlevel.Tpo" -c -o src/fakerunlevel.o `test -f 'src/fakerunlevel.c' || echo '$(srcdir)/'`src/fakerunlevel.c; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/fakerunlevel.Tpo" "src/$(DEPDIR)/fakerunlevel.Po"; else rm -f "src/$(DEPDIR)/fakerunlevel.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/fakerunlevel.c' object='src/fakerunlevel.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/fakerunlevel.Po' tmpdepfile='src/$(DEPDIR)/fakerunlevel.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/fakerunlevel.o `test -f 'src/fakerunlevel.c' || echo '$(srcdir)/'`src/fakerunlevel.c
-
-src/fakerunlevel.obj: src/fakerunlevel.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/fakerunlevel.obj -MD -MP -MF "src/$(DEPDIR)/fakerunlevel.Tpo" -c -o src/fakerunlevel.obj `if test -f 'src/fakerunlevel.c'; then $(CYGPATH_W) 'src/fakerunlevel.c'; else $(CYGPATH_W) '$(srcdir)/src/fakerunlevel.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/fakerunlevel.Tpo" "src/$(DEPDIR)/fakerunlevel.Po"; else rm -f "src/$(DEPDIR)/fakerunlevel.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/fakerunlevel.c' object='src/fakerunlevel.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/fakerunlevel.Po' tmpdepfile='src/$(DEPDIR)/fakerunlevel.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/fakerunlevel.obj `if test -f 'src/fakerunlevel.c'; then $(CYGPATH_W) 'src/fakerunlevel.c'; else $(CYGPATH_W) '$(srcdir)/src/fakerunlevel.c'; fi`
-
-src/filetime.o: src/filetime.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/filetime.o -MD -MP -MF "src/$(DEPDIR)/filetime.Tpo" -c -o src/filetime.o `test -f 'src/filetime.c' || echo '$(srcdir)/'`src/filetime.c; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/filetime.Tpo" "src/$(DEPDIR)/filetime.Po"; else rm -f "src/$(DEPDIR)/filetime.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/filetime.c' object='src/filetime.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/filetime.Po' tmpdepfile='src/$(DEPDIR)/filetime.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/filetime.o `test -f 'src/filetime.c' || echo '$(srcdir)/'`src/filetime.c
-
-src/filetime.obj: src/filetime.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/filetime.obj -MD -MP -MF "src/$(DEPDIR)/filetime.Tpo" -c -o src/filetime.obj `if test -f 'src/filetime.c'; then $(CYGPATH_W) 'src/filetime.c'; else $(CYGPATH_W) '$(srcdir)/src/filetime.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/filetime.Tpo" "src/$(DEPDIR)/filetime.Po"; else rm -f "src/$(DEPDIR)/filetime.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/filetime.c' object='src/filetime.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/filetime.Po' tmpdepfile='src/$(DEPDIR)/filetime.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/filetime.obj `if test -f 'src/filetime.c'; then $(CYGPATH_W) 'src/filetime.c'; else $(CYGPATH_W) '$(srcdir)/src/filetime.c'; fi`
-
-src/ifspec.o: src/ifspec.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/ifspec.o -MD -MP -MF "src/$(DEPDIR)/ifspec.Tpo" -c -o src/ifspec.o `test -f 'src/ifspec.c' || echo '$(srcdir)/'`src/ifspec.c; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/ifspec.Tpo" "src/$(DEPDIR)/ifspec.Po"; else rm -f "src/$(DEPDIR)/ifspec.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/ifspec.c' object='src/ifspec.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/ifspec.Po' tmpdepfile='src/$(DEPDIR)/ifspec.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/ifspec.o `test -f 'src/ifspec.c' || echo '$(srcdir)/'`src/ifspec.c
-
-src/ifspec.obj: src/ifspec.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/ifspec.obj -MD -MP -MF "src/$(DEPDIR)/ifspec.Tpo" -c -o src/ifspec.obj `if test -f 'src/ifspec.c'; then $(CYGPATH_W) 'src/ifspec.c'; else $(CYGPATH_W) '$(srcdir)/src/ifspec.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/ifspec.Tpo" "src/$(DEPDIR)/ifspec.Po"; else rm -f "src/$(DEPDIR)/ifspec.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/ifspec.c' object='src/ifspec.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/ifspec.Po' tmpdepfile='src/$(DEPDIR)/ifspec.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/ifspec.obj `if test -f 'src/ifspec.c'; then $(CYGPATH_W) 'src/ifspec.c'; else $(CYGPATH_W) '$(srcdir)/src/ifspec.c'; fi`
-
-src/listdevip.o: src/listdevip.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/listdevip.o -MD -MP -MF "src/$(DEPDIR)/listdevip.Tpo" -c -o src/listdevip.o `test -f 'src/listdevip.c' || echo '$(srcdir)/'`src/listdevip.c; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/listdevip.Tpo" "src/$(DEPDIR)/listdevip.Po"; else rm -f "src/$(DEPDIR)/listdevip.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/listdevip.c' object='src/listdevip.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/listdevip.Po' tmpdepfile='src/$(DEPDIR)/listdevip.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/listdevip.o `test -f 'src/listdevip.c' || echo '$(srcdir)/'`src/listdevip.c
-
-src/listdevip.obj: src/listdevip.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/listdevip.obj -MD -MP -MF "src/$(DEPDIR)/listdevip.Tpo" -c -o src/listdevip.obj `if test -f 'src/listdevip.c'; then $(CYGPATH_W) 'src/listdevip.c'; else $(CYGPATH_W) '$(srcdir)/src/listdevip.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/listdevip.Tpo" "src/$(DEPDIR)/listdevip.Po"; else rm -f "src/$(DEPDIR)/listdevip.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/listdevip.c' object='src/listdevip.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/listdevip.Po' tmpdepfile='src/$(DEPDIR)/listdevip.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/listdevip.obj `if test -f 'src/listdevip.c'; then $(CYGPATH_W) 'src/listdevip.c'; else $(CYGPATH_W) '$(srcdir)/src/listdevip.c'; fi`
-
-src/parserpmdump.o: src/parserpmdump.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/parserpmdump.o -MD -MP -MF "src/$(DEPDIR)/parserpmdump.Tpo" -c -o src/parserpmdump.o `test -f 'src/parserpmdump.c' || echo '$(srcdir)/'`src/parserpmdump.c; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/parserpmdump.Tpo" "src/$(DEPDIR)/parserpmdump.Po"; else rm -f "src/$(DEPDIR)/parserpmdump.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/parserpmdump.c' object='src/parserpmdump.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/parserpmdump.Po' tmpdepfile='src/$(DEPDIR)/parserpmdump.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/parserpmdump.o `test -f 'src/parserpmdump.c' || echo '$(srcdir)/'`src/parserpmdump.c
-
-src/parserpmdump.obj: src/parserpmdump.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/parserpmdump.obj -MD -MP -MF "src/$(DEPDIR)/parserpmdump.Tpo" -c -o src/parserpmdump.obj `if test -f 'src/parserpmdump.c'; then $(CYGPATH_W) 'src/parserpmdump.c'; else $(CYGPATH_W) '$(srcdir)/src/parserpmdump.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/parserpmdump.Tpo" "src/$(DEPDIR)/parserpmdump.Po"; else rm -f "src/$(DEPDIR)/parserpmdump.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/parserpmdump.c' object='src/parserpmdump.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/parserpmdump.Po' tmpdepfile='src/$(DEPDIR)/parserpmdump.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/parserpmdump.obj `if test -f 'src/parserpmdump.c'; then $(CYGPATH_W) 'src/parserpmdump.c'; else $(CYGPATH_W) '$(srcdir)/src/parserpmdump.c'; fi`
-
-src/readlink.o: src/readlink.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/readlink.o -MD -MP -MF "src/$(DEPDIR)/readlink.Tpo" -c -o src/readlink.o `test -f 'src/readlink.c' || echo '$(srcdir)/'`src/readlink.c; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/readlink.Tpo" "src/$(DEPDIR)/readlink.Po"; else rm -f "src/$(DEPDIR)/readlink.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/readlink.c' object='src/readlink.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/readlink.Po' tmpdepfile='src/$(DEPDIR)/readlink.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/readlink.o `test -f 'src/readlink.c' || echo '$(srcdir)/'`src/readlink.c
-
-src/readlink.obj: src/readlink.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/readlink.obj -MD -MP -MF "src/$(DEPDIR)/readlink.Tpo" -c -o src/readlink.obj `if test -f 'src/readlink.c'; then $(CYGPATH_W) 'src/readlink.c'; else $(CYGPATH_W) '$(srcdir)/src/readlink.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/readlink.Tpo" "src/$(DEPDIR)/readlink.Po"; else rm -f "src/$(DEPDIR)/readlink.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/readlink.c' object='src/readlink.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/readlink.Po' tmpdepfile='src/$(DEPDIR)/readlink.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/readlink.obj `if test -f 'src/readlink.c'; then $(CYGPATH_W) 'src/readlink.c'; else $(CYGPATH_W) '$(srcdir)/src/readlink.c'; fi`
-
-src/src_rebootmgr-rebootmgr.o: src/rebootmgr.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_rebootmgr_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/src_rebootmgr-rebootmgr.o -MD -MP -MF "src/$(DEPDIR)/src_rebootmgr-rebootmgr.Tpo" -c -o src/src_rebootmgr-rebootmgr.o `test -f 'src/rebootmgr.c' || echo '$(srcdir)/'`src/rebootmgr.c; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/src_rebootmgr-rebootmgr.Tpo" "src/$(DEPDIR)/src_rebootmgr-rebootmgr.Po"; else rm -f "src/$(DEPDIR)/src_rebootmgr-rebootmgr.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/rebootmgr.c' object='src/src_rebootmgr-rebootmgr.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/src_rebootmgr-rebootmgr.Po' tmpdepfile='src/$(DEPDIR)/src_rebootmgr-rebootmgr.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_rebootmgr_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/src_rebootmgr-rebootmgr.o `test -f 'src/rebootmgr.c' || echo '$(srcdir)/'`src/rebootmgr.c
-
-src/src_rebootmgr-rebootmgr.obj: src/rebootmgr.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_rebootmgr_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/src_rebootmgr-rebootmgr.obj -MD -MP -MF "src/$(DEPDIR)/src_rebootmgr-rebootmgr.Tpo" -c -o src/src_rebootmgr-rebootmgr.obj `if test -f 'src/rebootmgr.c'; then $(CYGPATH_W) 'src/rebootmgr.c'; else $(CYGPATH_W) '$(srcdir)/src/rebootmgr.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/src_rebootmgr-rebootmgr.Tpo" "src/$(DEPDIR)/src_rebootmgr-rebootmgr.Po"; else rm -f "src/$(DEPDIR)/src_rebootmgr-rebootmgr.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/rebootmgr.c' object='src/src_rebootmgr-rebootmgr.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/src_rebootmgr-rebootmgr.Po' tmpdepfile='src/$(DEPDIR)/src_rebootmgr-rebootmgr.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_rebootmgr_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/src_rebootmgr-rebootmgr.obj `if test -f 'src/rebootmgr.c'; then $(CYGPATH_W) 'src/rebootmgr.c'; else $(CYGPATH_W) '$(srcdir)/src/rebootmgr.c'; fi`
-
-src/reducecap.o: src/reducecap.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/reducecap.o -MD -MP -MF "src/$(DEPDIR)/reducecap.Tpo" -c -o src/reducecap.o `test -f 'src/reducecap.c' || echo '$(srcdir)/'`src/reducecap.c; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/reducecap.Tpo" "src/$(DEPDIR)/reducecap.Po"; else rm -f "src/$(DEPDIR)/reducecap.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/reducecap.c' object='src/reducecap.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/reducecap.Po' tmpdepfile='src/$(DEPDIR)/reducecap.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/reducecap.o `test -f 'src/reducecap.c' || echo '$(srcdir)/'`src/reducecap.c
-
-src/reducecap.obj: src/reducecap.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/reducecap.obj -MD -MP -MF "src/$(DEPDIR)/reducecap.Tpo" -c -o src/reducecap.obj `if test -f 'src/reducecap.c'; then $(CYGPATH_W) 'src/reducecap.c'; else $(CYGPATH_W) '$(srcdir)/src/reducecap.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/reducecap.Tpo" "src/$(DEPDIR)/reducecap.Po"; else rm -f "src/$(DEPDIR)/reducecap.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/reducecap.c' object='src/reducecap.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/reducecap.Po' tmpdepfile='src/$(DEPDIR)/reducecap.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/reducecap.obj `if test -f 'src/reducecap.c'; then $(CYGPATH_W) 'src/reducecap.c'; else $(CYGPATH_W) '$(srcdir)/src/reducecap.c'; fi`
-
-src/showattr.o: src/showattr.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/showattr.o -MD -MP -MF "src/$(DEPDIR)/showattr.Tpo" -c -o src/showattr.o `test -f 'src/showattr.c' || echo '$(srcdir)/'`src/showattr.c; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/showattr.Tpo" "src/$(DEPDIR)/showattr.Po"; else rm -f "src/$(DEPDIR)/showattr.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/showattr.c' object='src/showattr.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/showattr.Po' tmpdepfile='src/$(DEPDIR)/showattr.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/showattr.o `test -f 'src/showattr.c' || echo '$(srcdir)/'`src/showattr.c
-
-src/showattr.obj: src/showattr.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/showattr.obj -MD -MP -MF "src/$(DEPDIR)/showattr.Tpo" -c -o src/showattr.obj `if test -f 'src/showattr.c'; then $(CYGPATH_W) 'src/showattr.c'; else $(CYGPATH_W) '$(srcdir)/src/showattr.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/showattr.Tpo" "src/$(DEPDIR)/showattr.Po"; else rm -f "src/$(DEPDIR)/showattr.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/showattr.c' object='src/showattr.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/showattr.Po' tmpdepfile='src/$(DEPDIR)/showattr.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/showattr.obj `if test -f 'src/showattr.c'; then $(CYGPATH_W) 'src/showattr.c'; else $(CYGPATH_W) '$(srcdir)/src/showattr.c'; fi`
-
-src/showperm.o: src/showperm.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/showperm.o -MD -MP -MF "src/$(DEPDIR)/showperm.Tpo" -c -o src/showperm.o `test -f 'src/showperm.c' || echo '$(srcdir)/'`src/showperm.c; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/showperm.Tpo" "src/$(DEPDIR)/showperm.Po"; else rm -f "src/$(DEPDIR)/showperm.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/showperm.c' object='src/showperm.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/showperm.Po' tmpdepfile='src/$(DEPDIR)/showperm.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/showperm.o `test -f 'src/showperm.c' || echo '$(srcdir)/'`src/showperm.c
-
-src/showperm.obj: src/showperm.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/showperm.obj -MD -MP -MF "src/$(DEPDIR)/showperm.Tpo" -c -o src/showperm.obj `if test -f 'src/showperm.c'; then $(CYGPATH_W) 'src/showperm.c'; else $(CYGPATH_W) '$(srcdir)/src/showperm.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/showperm.Tpo" "src/$(DEPDIR)/showperm.Po"; else rm -f "src/$(DEPDIR)/showperm.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/showperm.c' object='src/showperm.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/showperm.Po' tmpdepfile='src/$(DEPDIR)/showperm.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/showperm.obj `if test -f 'src/showperm.c'; then $(CYGPATH_W) 'src/showperm.c'; else $(CYGPATH_W) '$(srcdir)/src/showperm.c'; fi`
-
-src/vdu.o: src/vdu.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/vdu.o -MD -MP -MF "src/$(DEPDIR)/vdu.Tpo" -c -o src/vdu.o `test -f 'src/vdu.c' || echo '$(srcdir)/'`src/vdu.c; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/vdu.Tpo" "src/$(DEPDIR)/vdu.Po"; else rm -f "src/$(DEPDIR)/vdu.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/vdu.c' object='src/vdu.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/vdu.Po' tmpdepfile='src/$(DEPDIR)/vdu.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/vdu.o `test -f 'src/vdu.c' || echo '$(srcdir)/'`src/vdu.c
-
-src/vdu.obj: src/vdu.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/vdu.obj -MD -MP -MF "src/$(DEPDIR)/vdu.Tpo" -c -o src/vdu.obj `if test -f 'src/vdu.c'; then $(CYGPATH_W) 'src/vdu.c'; else $(CYGPATH_W) '$(srcdir)/src/vdu.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/vdu.Tpo" "src/$(DEPDIR)/vdu.Po"; else rm -f "src/$(DEPDIR)/vdu.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/vdu.c' object='src/vdu.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/vdu.Po' tmpdepfile='src/$(DEPDIR)/vdu.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/vdu.obj `if test -f 'src/vdu.c'; then $(CYGPATH_W) 'src/vdu.c'; else $(CYGPATH_W) '$(srcdir)/src/vdu.c'; fi`
+lib/lib_libvserver_a-capabilities.o: lib/capabilities.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-capabilities.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-capabilities.Tpo" -c -o lib/lib_libvserver_a-capabilities.o `test -f 'lib/capabilities.c' || echo '$(srcdir)/'`lib/capabilities.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-capabilities.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-capabilities.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-capabilities.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/capabilities.c' object='lib/lib_libvserver_a-capabilities.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-capabilities.o `test -f 'lib/capabilities.c' || echo '$(srcdir)/'`lib/capabilities.c
+
+lib/lib_libvserver_a-capabilities.obj: lib/capabilities.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-capabilities.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-capabilities.Tpo" -c -o lib/lib_libvserver_a-capabilities.obj `if test -f 'lib/capabilities.c'; then $(CYGPATH_W) 'lib/capabilities.c'; else $(CYGPATH_W) '$(srcdir)/lib/capabilities.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-capabilities.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-capabilities.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-capabilities.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/capabilities.c' object='lib/lib_libvserver_a-capabilities.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-capabilities.obj `if test -f 'lib/capabilities.c'; then $(CYGPATH_W) 'lib/capabilities.c'; else $(CYGPATH_W) '$(srcdir)/lib/capabilities.c'; fi`
+
+lib/lib_libvserver_a-getfilecontext.o: lib/getfilecontext.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getfilecontext.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getfilecontext.Tpo" -c -o lib/lib_libvserver_a-getfilecontext.o `test -f 'lib/getfilecontext.c' || echo '$(srcdir)/'`lib/getfilecontext.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getfilecontext.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getfilecontext.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getfilecontext.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getfilecontext.c' object='lib/lib_libvserver_a-getfilecontext.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getfilecontext.o `test -f 'lib/getfilecontext.c' || echo '$(srcdir)/'`lib/getfilecontext.c
+
+lib/lib_libvserver_a-getfilecontext.obj: lib/getfilecontext.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getfilecontext.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getfilecontext.Tpo" -c -o lib/lib_libvserver_a-getfilecontext.obj `if test -f 'lib/getfilecontext.c'; then $(CYGPATH_W) 'lib/getfilecontext.c'; else $(CYGPATH_W) '$(srcdir)/lib/getfilecontext.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getfilecontext.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getfilecontext.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getfilecontext.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getfilecontext.c' object='lib/lib_libvserver_a-getfilecontext.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getfilecontext.obj `if test -f 'lib/getfilecontext.c'; then $(CYGPATH_W) 'lib/getfilecontext.c'; else $(CYGPATH_W) '$(srcdir)/lib/getfilecontext.c'; fi`
+
+lib/lib_libvserver_a-getinsecurebcaps.o: lib/getinsecurebcaps.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getinsecurebcaps.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getinsecurebcaps.Tpo" -c -o lib/lib_libvserver_a-getinsecurebcaps.o `test -f 'lib/getinsecurebcaps.c' || echo '$(srcdir)/'`lib/getinsecurebcaps.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getinsecurebcaps.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getinsecurebcaps.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getinsecurebcaps.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getinsecurebcaps.c' object='lib/lib_libvserver_a-getinsecurebcaps.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getinsecurebcaps.o `test -f 'lib/getinsecurebcaps.c' || echo '$(srcdir)/'`lib/getinsecurebcaps.c
+
+lib/lib_libvserver_a-getinsecurebcaps.obj: lib/getinsecurebcaps.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getinsecurebcaps.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getinsecurebcaps.Tpo" -c -o lib/lib_libvserver_a-getinsecurebcaps.obj `if test -f 'lib/getinsecurebcaps.c'; then $(CYGPATH_W) 'lib/getinsecurebcaps.c'; else $(CYGPATH_W) '$(srcdir)/lib/getinsecurebcaps.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getinsecurebcaps.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getinsecurebcaps.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getinsecurebcaps.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getinsecurebcaps.c' object='lib/lib_libvserver_a-getinsecurebcaps.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getinsecurebcaps.obj `if test -f 'lib/getinsecurebcaps.c'; then $(CYGPATH_W) 'lib/getinsecurebcaps.c'; else $(CYGPATH_W) '$(srcdir)/lib/getinsecurebcaps.c'; fi`
+
+lib/lib_libvserver_a-getxidtype.o: lib/getxidtype.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getxidtype.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getxidtype.Tpo" -c -o lib/lib_libvserver_a-getxidtype.o `test -f 'lib/getxidtype.c' || echo '$(srcdir)/'`lib/getxidtype.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getxidtype.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getxidtype.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getxidtype.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getxidtype.c' object='lib/lib_libvserver_a-getxidtype.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getxidtype.o `test -f 'lib/getxidtype.c' || echo '$(srcdir)/'`lib/getxidtype.c
+
+lib/lib_libvserver_a-getxidtype.obj: lib/getxidtype.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getxidtype.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getxidtype.Tpo" -c -o lib/lib_libvserver_a-getxidtype.obj `if test -f 'lib/getxidtype.c'; then $(CYGPATH_W) 'lib/getxidtype.c'; else $(CYGPATH_W) '$(srcdir)/lib/getxidtype.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getxidtype.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getxidtype.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getxidtype.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getxidtype.c' object='lib/lib_libvserver_a-getxidtype.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getxidtype.obj `if test -f 'lib/getxidtype.c'; then $(CYGPATH_W) 'lib/getxidtype.c'; else $(CYGPATH_W) '$(srcdir)/lib/getxidtype.c'; fi`
+
+lib/lib_libvserver_a-isdynamicxid.o: lib/isdynamicxid.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-isdynamicxid.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-isdynamicxid.Tpo" -c -o lib/lib_libvserver_a-isdynamicxid.o `test -f 'lib/isdynamicxid.c' || echo '$(srcdir)/'`lib/isdynamicxid.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-isdynamicxid.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-isdynamicxid.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-isdynamicxid.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/isdynamicxid.c' object='lib/lib_libvserver_a-isdynamicxid.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-isdynamicxid.o `test -f 'lib/isdynamicxid.c' || echo '$(srcdir)/'`lib/isdynamicxid.c
+
+lib/lib_libvserver_a-isdynamicxid.obj: lib/isdynamicxid.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-isdynamicxid.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-isdynamicxid.Tpo" -c -o lib/lib_libvserver_a-isdynamicxid.obj `if test -f 'lib/isdynamicxid.c'; then $(CYGPATH_W) 'lib/isdynamicxid.c'; else $(CYGPATH_W) '$(srcdir)/lib/isdynamicxid.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-isdynamicxid.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-isdynamicxid.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-isdynamicxid.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/isdynamicxid.c' object='lib/lib_libvserver_a-isdynamicxid.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-isdynamicxid.obj `if test -f 'lib/isdynamicxid.c'; then $(CYGPATH_W) 'lib/isdynamicxid.c'; else $(CYGPATH_W) '$(srcdir)/lib/isdynamicxid.c'; fi`
+
+lib/lib_libvserver_a-issupported.o: lib/issupported.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-issupported.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-issupported.Tpo" -c -o lib/lib_libvserver_a-issupported.o `test -f 'lib/issupported.c' || echo '$(srcdir)/'`lib/issupported.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-issupported.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-issupported.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-issupported.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/issupported.c' object='lib/lib_libvserver_a-issupported.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-issupported.o `test -f 'lib/issupported.c' || echo '$(srcdir)/'`lib/issupported.c
+
+lib/lib_libvserver_a-issupported.obj: lib/issupported.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-issupported.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-issupported.Tpo" -c -o lib/lib_libvserver_a-issupported.obj `if test -f 'lib/issupported.c'; then $(CYGPATH_W) 'lib/issupported.c'; else $(CYGPATH_W) '$(srcdir)/lib/issupported.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-issupported.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-issupported.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-issupported.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/issupported.c' object='lib/lib_libvserver_a-issupported.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-issupported.obj `if test -f 'lib/issupported.c'; then $(CYGPATH_W) 'lib/issupported.c'; else $(CYGPATH_W) '$(srcdir)/lib/issupported.c'; fi`
+
+lib/lib_libvserver_a-issupportedstring.o: lib/issupportedstring.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-issupportedstring.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-issupportedstring.Tpo" -c -o lib/lib_libvserver_a-issupportedstring.o `test -f 'lib/issupportedstring.c' || echo '$(srcdir)/'`lib/issupportedstring.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-issupportedstring.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-issupportedstring.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-issupportedstring.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/issupportedstring.c' object='lib/lib_libvserver_a-issupportedstring.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-issupportedstring.o `test -f 'lib/issupportedstring.c' || echo '$(srcdir)/'`lib/issupportedstring.c
+
+lib/lib_libvserver_a-issupportedstring.obj: lib/issupportedstring.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-issupportedstring.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-issupportedstring.Tpo" -c -o lib/lib_libvserver_a-issupportedstring.obj `if test -f 'lib/issupportedstring.c'; then $(CYGPATH_W) 'lib/issupportedstring.c'; else $(CYGPATH_W) '$(srcdir)/lib/issupportedstring.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-issupportedstring.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-issupportedstring.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-issupportedstring.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/issupportedstring.c' object='lib/lib_libvserver_a-issupportedstring.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-issupportedstring.obj `if test -f 'lib/issupportedstring.c'; then $(CYGPATH_W) 'lib/issupportedstring.c'; else $(CYGPATH_W) '$(srcdir)/lib/issupportedstring.c'; fi`
+
+lib/lib_libvserver_a-listparser_uint32.o: lib/listparser_uint32.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-listparser_uint32.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-listparser_uint32.Tpo" -c -o lib/lib_libvserver_a-listparser_uint32.o `test -f 'lib/listparser_uint32.c' || echo '$(srcdir)/'`lib/listparser_uint32.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-listparser_uint32.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-listparser_uint32.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-listparser_uint32.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/listparser_uint32.c' object='lib/lib_libvserver_a-listparser_uint32.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-listparser_uint32.o `test -f 'lib/listparser_uint32.c' || echo '$(srcdir)/'`lib/listparser_uint32.c
+
+lib/lib_libvserver_a-listparser_uint32.obj: lib/listparser_uint32.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-listparser_uint32.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-listparser_uint32.Tpo" -c -o lib/lib_libvserver_a-listparser_uint32.obj `if test -f 'lib/listparser_uint32.c'; then $(CYGPATH_W) 'lib/listparser_uint32.c'; else $(CYGPATH_W) '$(srcdir)/lib/listparser_uint32.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-listparser_uint32.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-listparser_uint32.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-listparser_uint32.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/listparser_uint32.c' object='lib/lib_libvserver_a-listparser_uint32.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-listparser_uint32.obj `if test -f 'lib/listparser_uint32.c'; then $(CYGPATH_W) 'lib/listparser_uint32.c'; else $(CYGPATH_W) '$(srcdir)/lib/listparser_uint32.c'; fi`
+
+lib/lib_libvserver_a-listparser_uint64.o: lib/listparser_uint64.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-listparser_uint64.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-listparser_uint64.Tpo" -c -o lib/lib_libvserver_a-listparser_uint64.o `test -f 'lib/listparser_uint64.c' || echo '$(srcdir)/'`lib/listparser_uint64.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-listparser_uint64.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-listparser_uint64.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-listparser_uint64.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/listparser_uint64.c' object='lib/lib_libvserver_a-listparser_uint64.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-listparser_uint64.o `test -f 'lib/listparser_uint64.c' || echo '$(srcdir)/'`lib/listparser_uint64.c
+
+lib/lib_libvserver_a-listparser_uint64.obj: lib/listparser_uint64.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-listparser_uint64.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-listparser_uint64.Tpo" -c -o lib/lib_libvserver_a-listparser_uint64.obj `if test -f 'lib/listparser_uint64.c'; then $(CYGPATH_W) 'lib/listparser_uint64.c'; else $(CYGPATH_W) '$(srcdir)/lib/listparser_uint64.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-listparser_uint64.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-listparser_uint64.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-listparser_uint64.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/listparser_uint64.c' object='lib/lib_libvserver_a-listparser_uint64.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-listparser_uint64.obj `if test -f 'lib/listparser_uint64.c'; then $(CYGPATH_W) 'lib/listparser_uint64.c'; else $(CYGPATH_W) '$(srcdir)/lib/listparser_uint64.c'; fi`
+
+lib/lib_libvserver_a-personalityflag.o: lib/personalityflag.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-personalityflag.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-personalityflag.Tpo" -c -o lib/lib_libvserver_a-personalityflag.o `test -f 'lib/personalityflag.c' || echo '$(srcdir)/'`lib/personalityflag.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-personalityflag.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-personalityflag.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-personalityflag.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/personalityflag.c' object='lib/lib_libvserver_a-personalityflag.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-personalityflag.o `test -f 'lib/personalityflag.c' || echo '$(srcdir)/'`lib/personalityflag.c
+
+lib/lib_libvserver_a-personalityflag.obj: lib/personalityflag.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-personalityflag.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-personalityflag.Tpo" -c -o lib/lib_libvserver_a-personalityflag.obj `if test -f 'lib/personalityflag.c'; then $(CYGPATH_W) 'lib/personalityflag.c'; else $(CYGPATH_W) '$(srcdir)/lib/personalityflag.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-personalityflag.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-personalityflag.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-personalityflag.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/personalityflag.c' object='lib/lib_libvserver_a-personalityflag.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-personalityflag.obj `if test -f 'lib/personalityflag.c'; then $(CYGPATH_W) 'lib/personalityflag.c'; else $(CYGPATH_W) '$(srcdir)/lib/personalityflag.c'; fi`
+
+lib/lib_libvserver_a-personalityflag_list.o: lib/personalityflag_list.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-personalityflag_list.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-personalityflag_list.Tpo" -c -o lib/lib_libvserver_a-personalityflag_list.o `test -f 'lib/personalityflag_list.c' || echo '$(srcdir)/'`lib/personalityflag_list.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-personalityflag_list.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-personalityflag_list.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-personalityflag_list.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/personalityflag_list.c' object='lib/lib_libvserver_a-personalityflag_list.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-personalityflag_list.o `test -f 'lib/personalityflag_list.c' || echo '$(srcdir)/'`lib/personalityflag_list.c
+
+lib/lib_libvserver_a-personalityflag_list.obj: lib/personalityflag_list.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-personalityflag_list.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-personalityflag_list.Tpo" -c -o lib/lib_libvserver_a-personalityflag_list.obj `if test -f 'lib/personalityflag_list.c'; then $(CYGPATH_W) 'lib/personalityflag_list.c'; else $(CYGPATH_W) '$(srcdir)/lib/personalityflag_list.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-personalityflag_list.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-personalityflag_list.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-personalityflag_list.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/personalityflag_list.c' object='lib/lib_libvserver_a-personalityflag_list.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-personalityflag_list.obj `if test -f 'lib/personalityflag_list.c'; then $(CYGPATH_W) 'lib/personalityflag_list.c'; else $(CYGPATH_W) '$(srcdir)/lib/personalityflag_list.c'; fi`
+
+lib/lib_libvserver_a-personalitytype.o: lib/personalitytype.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-personalitytype.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-personalitytype.Tpo" -c -o lib/lib_libvserver_a-personalitytype.o `test -f 'lib/personalitytype.c' || echo '$(srcdir)/'`lib/personalitytype.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-personalitytype.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-personalitytype.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-personalitytype.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/personalitytype.c' object='lib/lib_libvserver_a-personalitytype.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-personalitytype.o `test -f 'lib/personalitytype.c' || echo '$(srcdir)/'`lib/personalitytype.c
+
+lib/lib_libvserver_a-personalitytype.obj: lib/personalitytype.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-personalitytype.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-personalitytype.Tpo" -c -o lib/lib_libvserver_a-personalitytype.obj `if test -f 'lib/personalitytype.c'; then $(CYGPATH_W) 'lib/personalitytype.c'; else $(CYGPATH_W) '$(srcdir)/lib/personalitytype.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-personalitytype.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-personalitytype.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-personalitytype.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/personalitytype.c' object='lib/lib_libvserver_a-personalitytype.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-personalitytype.obj `if test -f 'lib/personalitytype.c'; then $(CYGPATH_W) 'lib/personalitytype.c'; else $(CYGPATH_W) '$(srcdir)/lib/personalitytype.c'; fi`
+
+lib/lib_libvserver_a-syscall-syscall.o: lib/syscall-syscall.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall-syscall.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall-syscall.Tpo" -c -o lib/lib_libvserver_a-syscall-syscall.o `test -f 'lib/syscall-syscall.c' || echo '$(srcdir)/'`lib/syscall-syscall.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall-syscall.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall-syscall.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall-syscall.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall-syscall.c' object='lib/lib_libvserver_a-syscall-syscall.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall-syscall.o `test -f 'lib/syscall-syscall.c' || echo '$(srcdir)/'`lib/syscall-syscall.c
+
+lib/lib_libvserver_a-syscall-syscall.obj: lib/syscall-syscall.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall-syscall.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall-syscall.Tpo" -c -o lib/lib_libvserver_a-syscall-syscall.obj `if test -f 'lib/syscall-syscall.c'; then $(CYGPATH_W) 'lib/syscall-syscall.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall-syscall.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall-syscall.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall-syscall.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall-syscall.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall-syscall.c' object='lib/lib_libvserver_a-syscall-syscall.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall-syscall.obj `if test -f 'lib/syscall-syscall.c'; then $(CYGPATH_W) 'lib/syscall-syscall.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall-syscall.c'; fi`
+
+lib/lib_libvserver_a-val2text-t2v-uint32.o: lib/val2text-t2v-uint32.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-val2text-t2v-uint32.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-val2text-t2v-uint32.Tpo" -c -o lib/lib_libvserver_a-val2text-t2v-uint32.o `test -f 'lib/val2text-t2v-uint32.c' || echo '$(srcdir)/'`lib/val2text-t2v-uint32.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-val2text-t2v-uint32.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-val2text-t2v-uint32.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-val2text-t2v-uint32.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/val2text-t2v-uint32.c' object='lib/lib_libvserver_a-val2text-t2v-uint32.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-val2text-t2v-uint32.o `test -f 'lib/val2text-t2v-uint32.c' || echo '$(srcdir)/'`lib/val2text-t2v-uint32.c
+
+lib/lib_libvserver_a-val2text-t2v-uint32.obj: lib/val2text-t2v-uint32.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-val2text-t2v-uint32.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-val2text-t2v-uint32.Tpo" -c -o lib/lib_libvserver_a-val2text-t2v-uint32.obj `if test -f 'lib/val2text-t2v-uint32.c'; then $(CYGPATH_W) 'lib/val2text-t2v-uint32.c'; else $(CYGPATH_W) '$(srcdir)/lib/val2text-t2v-uint32.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-val2text-t2v-uint32.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-val2text-t2v-uint32.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-val2text-t2v-uint32.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/val2text-t2v-uint32.c' object='lib/lib_libvserver_a-val2text-t2v-uint32.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-val2text-t2v-uint32.obj `if test -f 'lib/val2text-t2v-uint32.c'; then $(CYGPATH_W) 'lib/val2text-t2v-uint32.c'; else $(CYGPATH_W) '$(srcdir)/lib/val2text-t2v-uint32.c'; fi`
+
+lib/lib_libvserver_a-val2text-t2v-uint64.o: lib/val2text-t2v-uint64.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-val2text-t2v-uint64.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-val2text-t2v-uint64.Tpo" -c -o lib/lib_libvserver_a-val2text-t2v-uint64.o `test -f 'lib/val2text-t2v-uint64.c' || echo '$(srcdir)/'`lib/val2text-t2v-uint64.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-val2text-t2v-uint64.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-val2text-t2v-uint64.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-val2text-t2v-uint64.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/val2text-t2v-uint64.c' object='lib/lib_libvserver_a-val2text-t2v-uint64.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-val2text-t2v-uint64.o `test -f 'lib/val2text-t2v-uint64.c' || echo '$(srcdir)/'`lib/val2text-t2v-uint64.c
+
+lib/lib_libvserver_a-val2text-t2v-uint64.obj: lib/val2text-t2v-uint64.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-val2text-t2v-uint64.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-val2text-t2v-uint64.Tpo" -c -o lib/lib_libvserver_a-val2text-t2v-uint64.obj `if test -f 'lib/val2text-t2v-uint64.c'; then $(CYGPATH_W) 'lib/val2text-t2v-uint64.c'; else $(CYGPATH_W) '$(srcdir)/lib/val2text-t2v-uint64.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-val2text-t2v-uint64.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-val2text-t2v-uint64.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-val2text-t2v-uint64.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/val2text-t2v-uint64.c' object='lib/lib_libvserver_a-val2text-t2v-uint64.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-val2text-t2v-uint64.obj `if test -f 'lib/val2text-t2v-uint64.c'; then $(CYGPATH_W) 'lib/val2text-t2v-uint64.c'; else $(CYGPATH_W) '$(srcdir)/lib/val2text-t2v-uint64.c'; fi`
+
+lib/lib_libvserver_a-val2text-v2t-uint32.o: lib/val2text-v2t-uint32.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-val2text-v2t-uint32.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-val2text-v2t-uint32.Tpo" -c -o lib/lib_libvserver_a-val2text-v2t-uint32.o `test -f 'lib/val2text-v2t-uint32.c' || echo '$(srcdir)/'`lib/val2text-v2t-uint32.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-val2text-v2t-uint32.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-val2text-v2t-uint32.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-val2text-v2t-uint32.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/val2text-v2t-uint32.c' object='lib/lib_libvserver_a-val2text-v2t-uint32.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-val2text-v2t-uint32.o `test -f 'lib/val2text-v2t-uint32.c' || echo '$(srcdir)/'`lib/val2text-v2t-uint32.c
+
+lib/lib_libvserver_a-val2text-v2t-uint32.obj: lib/val2text-v2t-uint32.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-val2text-v2t-uint32.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-val2text-v2t-uint32.Tpo" -c -o lib/lib_libvserver_a-val2text-v2t-uint32.obj `if test -f 'lib/val2text-v2t-uint32.c'; then $(CYGPATH_W) 'lib/val2text-v2t-uint32.c'; else $(CYGPATH_W) '$(srcdir)/lib/val2text-v2t-uint32.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-val2text-v2t-uint32.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-val2text-v2t-uint32.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-val2text-v2t-uint32.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/val2text-v2t-uint32.c' object='lib/lib_libvserver_a-val2text-v2t-uint32.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-val2text-v2t-uint32.obj `if test -f 'lib/val2text-v2t-uint32.c'; then $(CYGPATH_W) 'lib/val2text-v2t-uint32.c'; else $(CYGPATH_W) '$(srcdir)/lib/val2text-v2t-uint32.c'; fi`
+
+lib/lib_libvserver_a-val2text-v2t-uint64.o: lib/val2text-v2t-uint64.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-val2text-v2t-uint64.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-val2text-v2t-uint64.Tpo" -c -o lib/lib_libvserver_a-val2text-v2t-uint64.o `test -f 'lib/val2text-v2t-uint64.c' || echo '$(srcdir)/'`lib/val2text-v2t-uint64.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-val2text-v2t-uint64.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-val2text-v2t-uint64.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-val2text-v2t-uint64.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/val2text-v2t-uint64.c' object='lib/lib_libvserver_a-val2text-v2t-uint64.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-val2text-v2t-uint64.o `test -f 'lib/val2text-v2t-uint64.c' || echo '$(srcdir)/'`lib/val2text-v2t-uint64.c
+
+lib/lib_libvserver_a-val2text-v2t-uint64.obj: lib/val2text-v2t-uint64.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-val2text-v2t-uint64.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-val2text-v2t-uint64.Tpo" -c -o lib/lib_libvserver_a-val2text-v2t-uint64.obj `if test -f 'lib/val2text-v2t-uint64.c'; then $(CYGPATH_W) 'lib/val2text-v2t-uint64.c'; else $(CYGPATH_W) '$(srcdir)/lib/val2text-v2t-uint64.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-val2text-v2t-uint64.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-val2text-v2t-uint64.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-val2text-v2t-uint64.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/val2text-v2t-uint64.c' object='lib/lib_libvserver_a-val2text-v2t-uint64.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-val2text-v2t-uint64.obj `if test -f 'lib/val2text-v2t-uint64.c'; then $(CYGPATH_W) 'lib/val2text-v2t-uint64.c'; else $(CYGPATH_W) '$(srcdir)/lib/val2text-v2t-uint64.c'; fi`
+
+lib/lib_libvserver_a-parselimit.o: lib/parselimit.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-parselimit.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-parselimit.Tpo" -c -o lib/lib_libvserver_a-parselimit.o `test -f 'lib/parselimit.c' || echo '$(srcdir)/'`lib/parselimit.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-parselimit.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-parselimit.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-parselimit.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/parselimit.c' object='lib/lib_libvserver_a-parselimit.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-parselimit.o `test -f 'lib/parselimit.c' || echo '$(srcdir)/'`lib/parselimit.c
+
+lib/lib_libvserver_a-parselimit.obj: lib/parselimit.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-parselimit.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-parselimit.Tpo" -c -o lib/lib_libvserver_a-parselimit.obj `if test -f 'lib/parselimit.c'; then $(CYGPATH_W) 'lib/parselimit.c'; else $(CYGPATH_W) '$(srcdir)/lib/parselimit.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-parselimit.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-parselimit.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-parselimit.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/parselimit.c' object='lib/lib_libvserver_a-parselimit.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-parselimit.obj `if test -f 'lib/parselimit.c'; then $(CYGPATH_W) 'lib/parselimit.c'; else $(CYGPATH_W) '$(srcdir)/lib/parselimit.c'; fi`
+
+lib/lib_libvserver_a-getprocentry-legacy.o: lib/getprocentry-legacy.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getprocentry-legacy.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getprocentry-legacy.Tpo" -c -o lib/lib_libvserver_a-getprocentry-legacy.o `test -f 'lib/getprocentry-legacy.c' || echo '$(srcdir)/'`lib/getprocentry-legacy.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getprocentry-legacy.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getprocentry-legacy.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getprocentry-legacy.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getprocentry-legacy.c' object='lib/lib_libvserver_a-getprocentry-legacy.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getprocentry-legacy.o `test -f 'lib/getprocentry-legacy.c' || echo '$(srcdir)/'`lib/getprocentry-legacy.c
+
+lib/lib_libvserver_a-getprocentry-legacy.obj: lib/getprocentry-legacy.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getprocentry-legacy.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getprocentry-legacy.Tpo" -c -o lib/lib_libvserver_a-getprocentry-legacy.obj `if test -f 'lib/getprocentry-legacy.c'; then $(CYGPATH_W) 'lib/getprocentry-legacy.c'; else $(CYGPATH_W) '$(srcdir)/lib/getprocentry-legacy.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getprocentry-legacy.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getprocentry-legacy.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getprocentry-legacy.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getprocentry-legacy.c' object='lib/lib_libvserver_a-getprocentry-legacy.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getprocentry-legacy.obj `if test -f 'lib/getprocentry-legacy.c'; then $(CYGPATH_W) 'lib/getprocentry-legacy.c'; else $(CYGPATH_W) '$(srcdir)/lib/getprocentry-legacy.c'; fi`
+
+lib/lib_libvserver_a-cflags-compat.o: lib/cflags-compat.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-cflags-compat.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-cflags-compat.Tpo" -c -o lib/lib_libvserver_a-cflags-compat.o `test -f 'lib/cflags-compat.c' || echo '$(srcdir)/'`lib/cflags-compat.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-cflags-compat.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-cflags-compat.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-cflags-compat.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/cflags-compat.c' object='lib/lib_libvserver_a-cflags-compat.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-cflags-compat.o `test -f 'lib/cflags-compat.c' || echo '$(srcdir)/'`lib/cflags-compat.c
+
+lib/lib_libvserver_a-cflags-compat.obj: lib/cflags-compat.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-cflags-compat.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-cflags-compat.Tpo" -c -o lib/lib_libvserver_a-cflags-compat.obj `if test -f 'lib/cflags-compat.c'; then $(CYGPATH_W) 'lib/cflags-compat.c'; else $(CYGPATH_W) '$(srcdir)/lib/cflags-compat.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-cflags-compat.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-cflags-compat.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-cflags-compat.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/cflags-compat.c' object='lib/lib_libvserver_a-cflags-compat.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-cflags-compat.obj `if test -f 'lib/cflags-compat.c'; then $(CYGPATH_W) 'lib/cflags-compat.c'; else $(CYGPATH_W) '$(srcdir)/lib/cflags-compat.c'; fi`
+
+lib/lib_libvserver_a-cflags_list-compat.o: lib/cflags_list-compat.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-cflags_list-compat.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-cflags_list-compat.Tpo" -c -o lib/lib_libvserver_a-cflags_list-compat.o `test -f 'lib/cflags_list-compat.c' || echo '$(srcdir)/'`lib/cflags_list-compat.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-cflags_list-compat.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-cflags_list-compat.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-cflags_list-compat.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/cflags_list-compat.c' object='lib/lib_libvserver_a-cflags_list-compat.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-cflags_list-compat.o `test -f 'lib/cflags_list-compat.c' || echo '$(srcdir)/'`lib/cflags_list-compat.c
+
+lib/lib_libvserver_a-cflags_list-compat.obj: lib/cflags_list-compat.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-cflags_list-compat.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-cflags_list-compat.Tpo" -c -o lib/lib_libvserver_a-cflags_list-compat.obj `if test -f 'lib/cflags_list-compat.c'; then $(CYGPATH_W) 'lib/cflags_list-compat.c'; else $(CYGPATH_W) '$(srcdir)/lib/cflags_list-compat.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-cflags_list-compat.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-cflags_list-compat.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-cflags_list-compat.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/cflags_list-compat.c' object='lib/lib_libvserver_a-cflags_list-compat.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-cflags_list-compat.obj `if test -f 'lib/cflags_list-compat.c'; then $(CYGPATH_W) 'lib/cflags_list-compat.c'; else $(CYGPATH_W) '$(srcdir)/lib/cflags_list-compat.c'; fi`
+
+lib/lib_libvserver_a-createskeleton.o: lib/createskeleton.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-createskeleton.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-createskeleton.Tpo" -c -o lib/lib_libvserver_a-createskeleton.o `test -f 'lib/createskeleton.c' || echo '$(srcdir)/'`lib/createskeleton.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-createskeleton.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-createskeleton.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-createskeleton.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/createskeleton.c' object='lib/lib_libvserver_a-createskeleton.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-createskeleton.o `test -f 'lib/createskeleton.c' || echo '$(srcdir)/'`lib/createskeleton.c
+
+lib/lib_libvserver_a-createskeleton.obj: lib/createskeleton.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-createskeleton.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-createskeleton.Tpo" -c -o lib/lib_libvserver_a-createskeleton.obj `if test -f 'lib/createskeleton.c'; then $(CYGPATH_W) 'lib/createskeleton.c'; else $(CYGPATH_W) '$(srcdir)/lib/createskeleton.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-createskeleton.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-createskeleton.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-createskeleton.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/createskeleton.c' object='lib/lib_libvserver_a-createskeleton.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-createskeleton.obj `if test -f 'lib/createskeleton.c'; then $(CYGPATH_W) 'lib/createskeleton.c'; else $(CYGPATH_W) '$(srcdir)/lib/createskeleton.c'; fi`
+
+lib/lib_libvserver_a-getvserverbyctx.o: lib/getvserverbyctx.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getvserverbyctx.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getvserverbyctx.Tpo" -c -o lib/lib_libvserver_a-getvserverbyctx.o `test -f 'lib/getvserverbyctx.c' || echo '$(srcdir)/'`lib/getvserverbyctx.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getvserverbyctx.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getvserverbyctx.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getvserverbyctx.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getvserverbyctx.c' object='lib/lib_libvserver_a-getvserverbyctx.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getvserverbyctx.o `test -f 'lib/getvserverbyctx.c' || echo '$(srcdir)/'`lib/getvserverbyctx.c
+
+lib/lib_libvserver_a-getvserverbyctx.obj: lib/getvserverbyctx.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getvserverbyctx.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getvserverbyctx.Tpo" -c -o lib/lib_libvserver_a-getvserverbyctx.obj `if test -f 'lib/getvserverbyctx.c'; then $(CYGPATH_W) 'lib/getvserverbyctx.c'; else $(CYGPATH_W) '$(srcdir)/lib/getvserverbyctx.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getvserverbyctx.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getvserverbyctx.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getvserverbyctx.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getvserverbyctx.c' object='lib/lib_libvserver_a-getvserverbyctx.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getvserverbyctx.obj `if test -f 'lib/getvserverbyctx.c'; then $(CYGPATH_W) 'lib/getvserverbyctx.c'; else $(CYGPATH_W) '$(srcdir)/lib/getvserverbyctx.c'; fi`
+
+lib/lib_libvserver_a-getvservercfgstyle.o: lib/getvservercfgstyle.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getvservercfgstyle.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getvservercfgstyle.Tpo" -c -o lib/lib_libvserver_a-getvservercfgstyle.o `test -f 'lib/getvservercfgstyle.c' || echo '$(srcdir)/'`lib/getvservercfgstyle.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getvservercfgstyle.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getvservercfgstyle.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getvservercfgstyle.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getvservercfgstyle.c' object='lib/lib_libvserver_a-getvservercfgstyle.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getvservercfgstyle.o `test -f 'lib/getvservercfgstyle.c' || echo '$(srcdir)/'`lib/getvservercfgstyle.c
+
+lib/lib_libvserver_a-getvservercfgstyle.obj: lib/getvservercfgstyle.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getvservercfgstyle.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getvservercfgstyle.Tpo" -c -o lib/lib_libvserver_a-getvservercfgstyle.obj `if test -f 'lib/getvservercfgstyle.c'; then $(CYGPATH_W) 'lib/getvservercfgstyle.c'; else $(CYGPATH_W) '$(srcdir)/lib/getvservercfgstyle.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getvservercfgstyle.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getvservercfgstyle.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getvservercfgstyle.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getvservercfgstyle.c' object='lib/lib_libvserver_a-getvservercfgstyle.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getvservercfgstyle.obj `if test -f 'lib/getvservercfgstyle.c'; then $(CYGPATH_W) 'lib/getvservercfgstyle.c'; else $(CYGPATH_W) '$(srcdir)/lib/getvservercfgstyle.c'; fi`
+
+lib/lib_libvserver_a-getvserverappdir.o: lib/getvserverappdir.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getvserverappdir.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getvserverappdir.Tpo" -c -o lib/lib_libvserver_a-getvserverappdir.o `test -f 'lib/getvserverappdir.c' || echo '$(srcdir)/'`lib/getvserverappdir.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getvserverappdir.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getvserverappdir.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getvserverappdir.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getvserverappdir.c' object='lib/lib_libvserver_a-getvserverappdir.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getvserverappdir.o `test -f 'lib/getvserverappdir.c' || echo '$(srcdir)/'`lib/getvserverappdir.c
+
+lib/lib_libvserver_a-getvserverappdir.obj: lib/getvserverappdir.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getvserverappdir.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getvserverappdir.Tpo" -c -o lib/lib_libvserver_a-getvserverappdir.obj `if test -f 'lib/getvserverappdir.c'; then $(CYGPATH_W) 'lib/getvserverappdir.c'; else $(CYGPATH_W) '$(srcdir)/lib/getvserverappdir.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getvserverappdir.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getvserverappdir.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getvserverappdir.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getvserverappdir.c' object='lib/lib_libvserver_a-getvserverappdir.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getvserverappdir.obj `if test -f 'lib/getvserverappdir.c'; then $(CYGPATH_W) 'lib/getvserverappdir.c'; else $(CYGPATH_W) '$(srcdir)/lib/getvserverappdir.c'; fi`
+
+lib/lib_libvserver_a-getvservercfgdir.o: lib/getvservercfgdir.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getvservercfgdir.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getvservercfgdir.Tpo" -c -o lib/lib_libvserver_a-getvservercfgdir.o `test -f 'lib/getvservercfgdir.c' || echo '$(srcdir)/'`lib/getvservercfgdir.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getvservercfgdir.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getvservercfgdir.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getvservercfgdir.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getvservercfgdir.c' object='lib/lib_libvserver_a-getvservercfgdir.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getvservercfgdir.o `test -f 'lib/getvservercfgdir.c' || echo '$(srcdir)/'`lib/getvservercfgdir.c
+
+lib/lib_libvserver_a-getvservercfgdir.obj: lib/getvservercfgdir.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getvservercfgdir.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getvservercfgdir.Tpo" -c -o lib/lib_libvserver_a-getvservercfgdir.obj `if test -f 'lib/getvservercfgdir.c'; then $(CYGPATH_W) 'lib/getvservercfgdir.c'; else $(CYGPATH_W) '$(srcdir)/lib/getvservercfgdir.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getvservercfgdir.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getvservercfgdir.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getvservercfgdir.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getvservercfgdir.c' object='lib/lib_libvserver_a-getvservercfgdir.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getvservercfgdir.obj `if test -f 'lib/getvservercfgdir.c'; then $(CYGPATH_W) 'lib/getvservercfgdir.c'; else $(CYGPATH_W) '$(srcdir)/lib/getvservercfgdir.c'; fi`
+
+lib/lib_libvserver_a-getvserverctx.o: lib/getvserverctx.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getvserverctx.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getvserverctx.Tpo" -c -o lib/lib_libvserver_a-getvserverctx.o `test -f 'lib/getvserverctx.c' || echo '$(srcdir)/'`lib/getvserverctx.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getvserverctx.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getvserverctx.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getvserverctx.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getvserverctx.c' object='lib/lib_libvserver_a-getvserverctx.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getvserverctx.o `test -f 'lib/getvserverctx.c' || echo '$(srcdir)/'`lib/getvserverctx.c
+
+lib/lib_libvserver_a-getvserverctx.obj: lib/getvserverctx.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getvserverctx.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getvserverctx.Tpo" -c -o lib/lib_libvserver_a-getvserverctx.obj `if test -f 'lib/getvserverctx.c'; then $(CYGPATH_W) 'lib/getvserverctx.c'; else $(CYGPATH_W) '$(srcdir)/lib/getvserverctx.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getvserverctx.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getvserverctx.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getvserverctx.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getvserverctx.c' object='lib/lib_libvserver_a-getvserverctx.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getvserverctx.obj `if test -f 'lib/getvserverctx.c'; then $(CYGPATH_W) 'lib/getvserverctx.c'; else $(CYGPATH_W) '$(srcdir)/lib/getvserverctx.c'; fi`
+
+lib/lib_libvserver_a-getvservername.o: lib/getvservername.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getvservername.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getvservername.Tpo" -c -o lib/lib_libvserver_a-getvservername.o `test -f 'lib/getvservername.c' || echo '$(srcdir)/'`lib/getvservername.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getvservername.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getvservername.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getvservername.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getvservername.c' object='lib/lib_libvserver_a-getvservername.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getvservername.o `test -f 'lib/getvservername.c' || echo '$(srcdir)/'`lib/getvservername.c
+
+lib/lib_libvserver_a-getvservername.obj: lib/getvservername.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getvservername.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getvservername.Tpo" -c -o lib/lib_libvserver_a-getvservername.obj `if test -f 'lib/getvservername.c'; then $(CYGPATH_W) 'lib/getvservername.c'; else $(CYGPATH_W) '$(srcdir)/lib/getvservername.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getvservername.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getvservername.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getvservername.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getvservername.c' object='lib/lib_libvserver_a-getvservername.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getvservername.obj `if test -f 'lib/getvservername.c'; then $(CYGPATH_W) 'lib/getvservername.c'; else $(CYGPATH_W) '$(srcdir)/lib/getvservername.c'; fi`
+
+lib/lib_libvserver_a-getvservervdir.o: lib/getvservervdir.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getvservervdir.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getvservervdir.Tpo" -c -o lib/lib_libvserver_a-getvservervdir.o `test -f 'lib/getvservervdir.c' || echo '$(srcdir)/'`lib/getvservervdir.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getvservervdir.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getvservervdir.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getvservervdir.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getvservervdir.c' object='lib/lib_libvserver_a-getvservervdir.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getvservervdir.o `test -f 'lib/getvservervdir.c' || echo '$(srcdir)/'`lib/getvservervdir.c
+
+lib/lib_libvserver_a-getvservervdir.obj: lib/getvservervdir.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-getvservervdir.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-getvservervdir.Tpo" -c -o lib/lib_libvserver_a-getvservervdir.obj `if test -f 'lib/getvservervdir.c'; then $(CYGPATH_W) 'lib/getvservervdir.c'; else $(CYGPATH_W) '$(srcdir)/lib/getvservervdir.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-getvservervdir.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-getvservervdir.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-getvservervdir.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getvservervdir.c' object='lib/lib_libvserver_a-getvservervdir.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-getvservervdir.obj `if test -f 'lib/getvservervdir.c'; then $(CYGPATH_W) 'lib/getvservervdir.c'; else $(CYGPATH_W) '$(srcdir)/lib/getvservervdir.c'; fi`
+
+lib/lib_libvserver_a-xidopt2xid.o: lib/xidopt2xid.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-xidopt2xid.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-xidopt2xid.Tpo" -c -o lib/lib_libvserver_a-xidopt2xid.o `test -f 'lib/xidopt2xid.c' || echo '$(srcdir)/'`lib/xidopt2xid.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-xidopt2xid.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-xidopt2xid.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-xidopt2xid.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/xidopt2xid.c' object='lib/lib_libvserver_a-xidopt2xid.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-xidopt2xid.o `test -f 'lib/xidopt2xid.c' || echo '$(srcdir)/'`lib/xidopt2xid.c
+
+lib/lib_libvserver_a-xidopt2xid.obj: lib/xidopt2xid.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-xidopt2xid.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-xidopt2xid.Tpo" -c -o lib/lib_libvserver_a-xidopt2xid.obj `if test -f 'lib/xidopt2xid.c'; then $(CYGPATH_W) 'lib/xidopt2xid.c'; else $(CYGPATH_W) '$(srcdir)/lib/xidopt2xid.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-xidopt2xid.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-xidopt2xid.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-xidopt2xid.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/xidopt2xid.c' object='lib/lib_libvserver_a-xidopt2xid.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-xidopt2xid.obj `if test -f 'lib/xidopt2xid.c'; then $(CYGPATH_W) 'lib/xidopt2xid.c'; else $(CYGPATH_W) '$(srcdir)/lib/xidopt2xid.c'; fi`
+
+lib/lib_libvserver_a-syscall_rlimit.o: lib/syscall_rlimit.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_rlimit.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_rlimit.Tpo" -c -o lib/lib_libvserver_a-syscall_rlimit.o `test -f 'lib/syscall_rlimit.c' || echo '$(srcdir)/'`lib/syscall_rlimit.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_rlimit.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_rlimit.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_rlimit.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_rlimit.c' object='lib/lib_libvserver_a-syscall_rlimit.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_rlimit.o `test -f 'lib/syscall_rlimit.c' || echo '$(srcdir)/'`lib/syscall_rlimit.c
+
+lib/lib_libvserver_a-syscall_rlimit.obj: lib/syscall_rlimit.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_rlimit.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_rlimit.Tpo" -c -o lib/lib_libvserver_a-syscall_rlimit.obj `if test -f 'lib/syscall_rlimit.c'; then $(CYGPATH_W) 'lib/syscall_rlimit.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_rlimit.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_rlimit.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_rlimit.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_rlimit.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_rlimit.c' object='lib/lib_libvserver_a-syscall_rlimit.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_rlimit.obj `if test -f 'lib/syscall_rlimit.c'; then $(CYGPATH_W) 'lib/syscall_rlimit.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_rlimit.c'; fi`
+
+lib/lib_libvserver_a-syscall_kill.o: lib/syscall_kill.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_kill.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_kill.Tpo" -c -o lib/lib_libvserver_a-syscall_kill.o `test -f 'lib/syscall_kill.c' || echo '$(srcdir)/'`lib/syscall_kill.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_kill.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_kill.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_kill.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_kill.c' object='lib/lib_libvserver_a-syscall_kill.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_kill.o `test -f 'lib/syscall_kill.c' || echo '$(srcdir)/'`lib/syscall_kill.c
+
+lib/lib_libvserver_a-syscall_kill.obj: lib/syscall_kill.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_kill.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_kill.Tpo" -c -o lib/lib_libvserver_a-syscall_kill.obj `if test -f 'lib/syscall_kill.c'; then $(CYGPATH_W) 'lib/syscall_kill.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_kill.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_kill.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_kill.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_kill.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_kill.c' object='lib/lib_libvserver_a-syscall_kill.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_kill.obj `if test -f 'lib/syscall_kill.c'; then $(CYGPATH_W) 'lib/syscall_kill.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_kill.c'; fi`
+
+lib/lib_libvserver_a-syscall_ctxcreate.o: lib/syscall_ctxcreate.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_ctxcreate.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_ctxcreate.Tpo" -c -o lib/lib_libvserver_a-syscall_ctxcreate.o `test -f 'lib/syscall_ctxcreate.c' || echo '$(srcdir)/'`lib/syscall_ctxcreate.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_ctxcreate.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_ctxcreate.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_ctxcreate.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_ctxcreate.c' object='lib/lib_libvserver_a-syscall_ctxcreate.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_ctxcreate.o `test -f 'lib/syscall_ctxcreate.c' || echo '$(srcdir)/'`lib/syscall_ctxcreate.c
+
+lib/lib_libvserver_a-syscall_ctxcreate.obj: lib/syscall_ctxcreate.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_ctxcreate.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_ctxcreate.Tpo" -c -o lib/lib_libvserver_a-syscall_ctxcreate.obj `if test -f 'lib/syscall_ctxcreate.c'; then $(CYGPATH_W) 'lib/syscall_ctxcreate.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_ctxcreate.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_ctxcreate.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_ctxcreate.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_ctxcreate.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_ctxcreate.c' object='lib/lib_libvserver_a-syscall_ctxcreate.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_ctxcreate.obj `if test -f 'lib/syscall_ctxcreate.c'; then $(CYGPATH_W) 'lib/syscall_ctxcreate.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_ctxcreate.c'; fi`
+
+lib/lib_libvserver_a-syscall_ctxmigrate.o: lib/syscall_ctxmigrate.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_ctxmigrate.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_ctxmigrate.Tpo" -c -o lib/lib_libvserver_a-syscall_ctxmigrate.o `test -f 'lib/syscall_ctxmigrate.c' || echo '$(srcdir)/'`lib/syscall_ctxmigrate.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_ctxmigrate.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_ctxmigrate.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_ctxmigrate.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_ctxmigrate.c' object='lib/lib_libvserver_a-syscall_ctxmigrate.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_ctxmigrate.o `test -f 'lib/syscall_ctxmigrate.c' || echo '$(srcdir)/'`lib/syscall_ctxmigrate.c
+
+lib/lib_libvserver_a-syscall_ctxmigrate.obj: lib/syscall_ctxmigrate.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_ctxmigrate.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_ctxmigrate.Tpo" -c -o lib/lib_libvserver_a-syscall_ctxmigrate.obj `if test -f 'lib/syscall_ctxmigrate.c'; then $(CYGPATH_W) 'lib/syscall_ctxmigrate.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_ctxmigrate.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_ctxmigrate.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_ctxmigrate.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_ctxmigrate.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_ctxmigrate.c' object='lib/lib_libvserver_a-syscall_ctxmigrate.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_ctxmigrate.obj `if test -f 'lib/syscall_ctxmigrate.c'; then $(CYGPATH_W) 'lib/syscall_ctxmigrate.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_ctxmigrate.c'; fi`
+
+lib/lib_libvserver_a-syscall_cleanupnamespace.o: lib/syscall_cleanupnamespace.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_cleanupnamespace.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_cleanupnamespace.Tpo" -c -o lib/lib_libvserver_a-syscall_cleanupnamespace.o `test -f 'lib/syscall_cleanupnamespace.c' || echo '$(srcdir)/'`lib/syscall_cleanupnamespace.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_cleanupnamespace.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_cleanupnamespace.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_cleanupnamespace.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_cleanupnamespace.c' object='lib/lib_libvserver_a-syscall_cleanupnamespace.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_cleanupnamespace.o `test -f 'lib/syscall_cleanupnamespace.c' || echo '$(srcdir)/'`lib/syscall_cleanupnamespace.c
+
+lib/lib_libvserver_a-syscall_cleanupnamespace.obj: lib/syscall_cleanupnamespace.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_cleanupnamespace.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_cleanupnamespace.Tpo" -c -o lib/lib_libvserver_a-syscall_cleanupnamespace.obj `if test -f 'lib/syscall_cleanupnamespace.c'; then $(CYGPATH_W) 'lib/syscall_cleanupnamespace.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_cleanupnamespace.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_cleanupnamespace.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_cleanupnamespace.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_cleanupnamespace.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_cleanupnamespace.c' object='lib/lib_libvserver_a-syscall_cleanupnamespace.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_cleanupnamespace.obj `if test -f 'lib/syscall_cleanupnamespace.c'; then $(CYGPATH_W) 'lib/syscall_cleanupnamespace.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_cleanupnamespace.c'; fi`
+
+lib/lib_libvserver_a-syscall_enternamespace.o: lib/syscall_enternamespace.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_enternamespace.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_enternamespace.Tpo" -c -o lib/lib_libvserver_a-syscall_enternamespace.o `test -f 'lib/syscall_enternamespace.c' || echo '$(srcdir)/'`lib/syscall_enternamespace.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_enternamespace.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_enternamespace.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_enternamespace.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_enternamespace.c' object='lib/lib_libvserver_a-syscall_enternamespace.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_enternamespace.o `test -f 'lib/syscall_enternamespace.c' || echo '$(srcdir)/'`lib/syscall_enternamespace.c
+
+lib/lib_libvserver_a-syscall_enternamespace.obj: lib/syscall_enternamespace.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_enternamespace.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_enternamespace.Tpo" -c -o lib/lib_libvserver_a-syscall_enternamespace.obj `if test -f 'lib/syscall_enternamespace.c'; then $(CYGPATH_W) 'lib/syscall_enternamespace.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_enternamespace.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_enternamespace.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_enternamespace.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_enternamespace.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_enternamespace.c' object='lib/lib_libvserver_a-syscall_enternamespace.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_enternamespace.obj `if test -f 'lib/syscall_enternamespace.c'; then $(CYGPATH_W) 'lib/syscall_enternamespace.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_enternamespace.c'; fi`
+
+lib/lib_libvserver_a-syscall_getccaps.o: lib/syscall_getccaps.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_getccaps.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_getccaps.Tpo" -c -o lib/lib_libvserver_a-syscall_getccaps.o `test -f 'lib/syscall_getccaps.c' || echo '$(srcdir)/'`lib/syscall_getccaps.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getccaps.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_getccaps.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getccaps.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getccaps.c' object='lib/lib_libvserver_a-syscall_getccaps.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_getccaps.o `test -f 'lib/syscall_getccaps.c' || echo '$(srcdir)/'`lib/syscall_getccaps.c
+
+lib/lib_libvserver_a-syscall_getccaps.obj: lib/syscall_getccaps.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_getccaps.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_getccaps.Tpo" -c -o lib/lib_libvserver_a-syscall_getccaps.obj `if test -f 'lib/syscall_getccaps.c'; then $(CYGPATH_W) 'lib/syscall_getccaps.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_getccaps.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getccaps.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_getccaps.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getccaps.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getccaps.c' object='lib/lib_libvserver_a-syscall_getccaps.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_getccaps.obj `if test -f 'lib/syscall_getccaps.c'; then $(CYGPATH_W) 'lib/syscall_getccaps.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_getccaps.c'; fi`
+
+lib/lib_libvserver_a-syscall_getcflags.o: lib/syscall_getcflags.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_getcflags.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_getcflags.Tpo" -c -o lib/lib_libvserver_a-syscall_getcflags.o `test -f 'lib/syscall_getcflags.c' || echo '$(srcdir)/'`lib/syscall_getcflags.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getcflags.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_getcflags.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getcflags.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getcflags.c' object='lib/lib_libvserver_a-syscall_getcflags.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_getcflags.o `test -f 'lib/syscall_getcflags.c' || echo '$(srcdir)/'`lib/syscall_getcflags.c
+
+lib/lib_libvserver_a-syscall_getcflags.obj: lib/syscall_getcflags.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_getcflags.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_getcflags.Tpo" -c -o lib/lib_libvserver_a-syscall_getcflags.obj `if test -f 'lib/syscall_getcflags.c'; then $(CYGPATH_W) 'lib/syscall_getcflags.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_getcflags.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getcflags.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_getcflags.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getcflags.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getcflags.c' object='lib/lib_libvserver_a-syscall_getcflags.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_getcflags.obj `if test -f 'lib/syscall_getcflags.c'; then $(CYGPATH_W) 'lib/syscall_getcflags.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_getcflags.c'; fi`
+
+lib/lib_libvserver_a-syscall_getiattr.o: lib/syscall_getiattr.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_getiattr.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_getiattr.Tpo" -c -o lib/lib_libvserver_a-syscall_getiattr.o `test -f 'lib/syscall_getiattr.c' || echo '$(srcdir)/'`lib/syscall_getiattr.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getiattr.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_getiattr.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getiattr.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getiattr.c' object='lib/lib_libvserver_a-syscall_getiattr.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_getiattr.o `test -f 'lib/syscall_getiattr.c' || echo '$(srcdir)/'`lib/syscall_getiattr.c
+
+lib/lib_libvserver_a-syscall_getiattr.obj: lib/syscall_getiattr.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_getiattr.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_getiattr.Tpo" -c -o lib/lib_libvserver_a-syscall_getiattr.obj `if test -f 'lib/syscall_getiattr.c'; then $(CYGPATH_W) 'lib/syscall_getiattr.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_getiattr.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getiattr.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_getiattr.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getiattr.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getiattr.c' object='lib/lib_libvserver_a-syscall_getiattr.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_getiattr.obj `if test -f 'lib/syscall_getiattr.c'; then $(CYGPATH_W) 'lib/syscall_getiattr.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_getiattr.c'; fi`
+
+lib/lib_libvserver_a-syscall_getncaps.o: lib/syscall_getncaps.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_getncaps.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_getncaps.Tpo" -c -o lib/lib_libvserver_a-syscall_getncaps.o `test -f 'lib/syscall_getncaps.c' || echo '$(srcdir)/'`lib/syscall_getncaps.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getncaps.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_getncaps.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getncaps.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getncaps.c' object='lib/lib_libvserver_a-syscall_getncaps.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_getncaps.o `test -f 'lib/syscall_getncaps.c' || echo '$(srcdir)/'`lib/syscall_getncaps.c
+
+lib/lib_libvserver_a-syscall_getncaps.obj: lib/syscall_getncaps.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_getncaps.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_getncaps.Tpo" -c -o lib/lib_libvserver_a-syscall_getncaps.obj `if test -f 'lib/syscall_getncaps.c'; then $(CYGPATH_W) 'lib/syscall_getncaps.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_getncaps.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getncaps.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_getncaps.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getncaps.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getncaps.c' object='lib/lib_libvserver_a-syscall_getncaps.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_getncaps.obj `if test -f 'lib/syscall_getncaps.c'; then $(CYGPATH_W) 'lib/syscall_getncaps.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_getncaps.c'; fi`
+
+lib/lib_libvserver_a-syscall_getnflags.o: lib/syscall_getnflags.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_getnflags.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_getnflags.Tpo" -c -o lib/lib_libvserver_a-syscall_getnflags.o `test -f 'lib/syscall_getnflags.c' || echo '$(srcdir)/'`lib/syscall_getnflags.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getnflags.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_getnflags.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getnflags.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getnflags.c' object='lib/lib_libvserver_a-syscall_getnflags.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_getnflags.o `test -f 'lib/syscall_getnflags.c' || echo '$(srcdir)/'`lib/syscall_getnflags.c
+
+lib/lib_libvserver_a-syscall_getnflags.obj: lib/syscall_getnflags.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_getnflags.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_getnflags.Tpo" -c -o lib/lib_libvserver_a-syscall_getnflags.obj `if test -f 'lib/syscall_getnflags.c'; then $(CYGPATH_W) 'lib/syscall_getnflags.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_getnflags.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getnflags.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_getnflags.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getnflags.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getnflags.c' object='lib/lib_libvserver_a-syscall_getnflags.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_getnflags.obj `if test -f 'lib/syscall_getnflags.c'; then $(CYGPATH_W) 'lib/syscall_getnflags.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_getnflags.c'; fi`
+
+lib/lib_libvserver_a-syscall_getnxinfo.o: lib/syscall_getnxinfo.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_getnxinfo.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_getnxinfo.Tpo" -c -o lib/lib_libvserver_a-syscall_getnxinfo.o `test -f 'lib/syscall_getnxinfo.c' || echo '$(srcdir)/'`lib/syscall_getnxinfo.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getnxinfo.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_getnxinfo.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getnxinfo.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getnxinfo.c' object='lib/lib_libvserver_a-syscall_getnxinfo.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_getnxinfo.o `test -f 'lib/syscall_getnxinfo.c' || echo '$(srcdir)/'`lib/syscall_getnxinfo.c
+
+lib/lib_libvserver_a-syscall_getnxinfo.obj: lib/syscall_getnxinfo.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_getnxinfo.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_getnxinfo.Tpo" -c -o lib/lib_libvserver_a-syscall_getnxinfo.obj `if test -f 'lib/syscall_getnxinfo.c'; then $(CYGPATH_W) 'lib/syscall_getnxinfo.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_getnxinfo.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getnxinfo.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_getnxinfo.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getnxinfo.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getnxinfo.c' object='lib/lib_libvserver_a-syscall_getnxinfo.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_getnxinfo.obj `if test -f 'lib/syscall_getnxinfo.c'; then $(CYGPATH_W) 'lib/syscall_getnxinfo.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_getnxinfo.c'; fi`
+
+lib/lib_libvserver_a-syscall_gettasknid.o: lib/syscall_gettasknid.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_gettasknid.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_gettasknid.Tpo" -c -o lib/lib_libvserver_a-syscall_gettasknid.o `test -f 'lib/syscall_gettasknid.c' || echo '$(srcdir)/'`lib/syscall_gettasknid.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_gettasknid.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_gettasknid.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_gettasknid.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_gettasknid.c' object='lib/lib_libvserver_a-syscall_gettasknid.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_gettasknid.o `test -f 'lib/syscall_gettasknid.c' || echo '$(srcdir)/'`lib/syscall_gettasknid.c
+
+lib/lib_libvserver_a-syscall_gettasknid.obj: lib/syscall_gettasknid.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_gettasknid.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_gettasknid.Tpo" -c -o lib/lib_libvserver_a-syscall_gettasknid.obj `if test -f 'lib/syscall_gettasknid.c'; then $(CYGPATH_W) 'lib/syscall_gettasknid.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_gettasknid.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_gettasknid.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_gettasknid.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_gettasknid.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_gettasknid.c' object='lib/lib_libvserver_a-syscall_gettasknid.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_gettasknid.obj `if test -f 'lib/syscall_gettasknid.c'; then $(CYGPATH_W) 'lib/syscall_gettasknid.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_gettasknid.c'; fi`
+
+lib/lib_libvserver_a-syscall_gettaskxid.o: lib/syscall_gettaskxid.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_gettaskxid.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_gettaskxid.Tpo" -c -o lib/lib_libvserver_a-syscall_gettaskxid.o `test -f 'lib/syscall_gettaskxid.c' || echo '$(srcdir)/'`lib/syscall_gettaskxid.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_gettaskxid.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_gettaskxid.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_gettaskxid.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_gettaskxid.c' object='lib/lib_libvserver_a-syscall_gettaskxid.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_gettaskxid.o `test -f 'lib/syscall_gettaskxid.c' || echo '$(srcdir)/'`lib/syscall_gettaskxid.c
+
+lib/lib_libvserver_a-syscall_gettaskxid.obj: lib/syscall_gettaskxid.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_gettaskxid.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_gettaskxid.Tpo" -c -o lib/lib_libvserver_a-syscall_gettaskxid.obj `if test -f 'lib/syscall_gettaskxid.c'; then $(CYGPATH_W) 'lib/syscall_gettaskxid.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_gettaskxid.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_gettaskxid.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_gettaskxid.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_gettaskxid.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_gettaskxid.c' object='lib/lib_libvserver_a-syscall_gettaskxid.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_gettaskxid.obj `if test -f 'lib/syscall_gettaskxid.c'; then $(CYGPATH_W) 'lib/syscall_gettaskxid.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_gettaskxid.c'; fi`
+
+lib/lib_libvserver_a-syscall_getvhiname.o: lib/syscall_getvhiname.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_getvhiname.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_getvhiname.Tpo" -c -o lib/lib_libvserver_a-syscall_getvhiname.o `test -f 'lib/syscall_getvhiname.c' || echo '$(srcdir)/'`lib/syscall_getvhiname.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getvhiname.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_getvhiname.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getvhiname.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getvhiname.c' object='lib/lib_libvserver_a-syscall_getvhiname.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_getvhiname.o `test -f 'lib/syscall_getvhiname.c' || echo '$(srcdir)/'`lib/syscall_getvhiname.c
+
+lib/lib_libvserver_a-syscall_getvhiname.obj: lib/syscall_getvhiname.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_getvhiname.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_getvhiname.Tpo" -c -o lib/lib_libvserver_a-syscall_getvhiname.obj `if test -f 'lib/syscall_getvhiname.c'; then $(CYGPATH_W) 'lib/syscall_getvhiname.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_getvhiname.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getvhiname.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_getvhiname.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getvhiname.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getvhiname.c' object='lib/lib_libvserver_a-syscall_getvhiname.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_getvhiname.obj `if test -f 'lib/syscall_getvhiname.c'; then $(CYGPATH_W) 'lib/syscall_getvhiname.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_getvhiname.c'; fi`
+
+lib/lib_libvserver_a-syscall_getvxinfo.o: lib/syscall_getvxinfo.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_getvxinfo.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_getvxinfo.Tpo" -c -o lib/lib_libvserver_a-syscall_getvxinfo.o `test -f 'lib/syscall_getvxinfo.c' || echo '$(srcdir)/'`lib/syscall_getvxinfo.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getvxinfo.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_getvxinfo.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getvxinfo.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getvxinfo.c' object='lib/lib_libvserver_a-syscall_getvxinfo.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_getvxinfo.o `test -f 'lib/syscall_getvxinfo.c' || echo '$(srcdir)/'`lib/syscall_getvxinfo.c
+
+lib/lib_libvserver_a-syscall_getvxinfo.obj: lib/syscall_getvxinfo.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_getvxinfo.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_getvxinfo.Tpo" -c -o lib/lib_libvserver_a-syscall_getvxinfo.obj `if test -f 'lib/syscall_getvxinfo.c'; then $(CYGPATH_W) 'lib/syscall_getvxinfo.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_getvxinfo.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getvxinfo.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_getvxinfo.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getvxinfo.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getvxinfo.c' object='lib/lib_libvserver_a-syscall_getvxinfo.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_getvxinfo.obj `if test -f 'lib/syscall_getvxinfo.c'; then $(CYGPATH_W) 'lib/syscall_getvxinfo.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_getvxinfo.c'; fi`
+
+lib/lib_libvserver_a-syscall_netadd.o: lib/syscall_netadd.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_netadd.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_netadd.Tpo" -c -o lib/lib_libvserver_a-syscall_netadd.o `test -f 'lib/syscall_netadd.c' || echo '$(srcdir)/'`lib/syscall_netadd.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_netadd.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_netadd.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_netadd.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_netadd.c' object='lib/lib_libvserver_a-syscall_netadd.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_netadd.o `test -f 'lib/syscall_netadd.c' || echo '$(srcdir)/'`lib/syscall_netadd.c
+
+lib/lib_libvserver_a-syscall_netadd.obj: lib/syscall_netadd.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_netadd.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_netadd.Tpo" -c -o lib/lib_libvserver_a-syscall_netadd.obj `if test -f 'lib/syscall_netadd.c'; then $(CYGPATH_W) 'lib/syscall_netadd.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_netadd.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_netadd.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_netadd.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_netadd.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_netadd.c' object='lib/lib_libvserver_a-syscall_netadd.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_netadd.obj `if test -f 'lib/syscall_netadd.c'; then $(CYGPATH_W) 'lib/syscall_netadd.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_netadd.c'; fi`
+
+lib/lib_libvserver_a-syscall_netcreate.o: lib/syscall_netcreate.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_netcreate.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_netcreate.Tpo" -c -o lib/lib_libvserver_a-syscall_netcreate.o `test -f 'lib/syscall_netcreate.c' || echo '$(srcdir)/'`lib/syscall_netcreate.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_netcreate.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_netcreate.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_netcreate.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_netcreate.c' object='lib/lib_libvserver_a-syscall_netcreate.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_netcreate.o `test -f 'lib/syscall_netcreate.c' || echo '$(srcdir)/'`lib/syscall_netcreate.c
+
+lib/lib_libvserver_a-syscall_netcreate.obj: lib/syscall_netcreate.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_netcreate.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_netcreate.Tpo" -c -o lib/lib_libvserver_a-syscall_netcreate.obj `if test -f 'lib/syscall_netcreate.c'; then $(CYGPATH_W) 'lib/syscall_netcreate.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_netcreate.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_netcreate.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_netcreate.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_netcreate.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_netcreate.c' object='lib/lib_libvserver_a-syscall_netcreate.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_netcreate.obj `if test -f 'lib/syscall_netcreate.c'; then $(CYGPATH_W) 'lib/syscall_netcreate.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_netcreate.c'; fi`
+
+lib/lib_libvserver_a-syscall_netmigrate.o: lib/syscall_netmigrate.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_netmigrate.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_netmigrate.Tpo" -c -o lib/lib_libvserver_a-syscall_netmigrate.o `test -f 'lib/syscall_netmigrate.c' || echo '$(srcdir)/'`lib/syscall_netmigrate.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_netmigrate.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_netmigrate.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_netmigrate.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_netmigrate.c' object='lib/lib_libvserver_a-syscall_netmigrate.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_netmigrate.o `test -f 'lib/syscall_netmigrate.c' || echo '$(srcdir)/'`lib/syscall_netmigrate.c
+
+lib/lib_libvserver_a-syscall_netmigrate.obj: lib/syscall_netmigrate.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_netmigrate.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_netmigrate.Tpo" -c -o lib/lib_libvserver_a-syscall_netmigrate.obj `if test -f 'lib/syscall_netmigrate.c'; then $(CYGPATH_W) 'lib/syscall_netmigrate.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_netmigrate.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_netmigrate.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_netmigrate.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_netmigrate.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_netmigrate.c' object='lib/lib_libvserver_a-syscall_netmigrate.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_netmigrate.obj `if test -f 'lib/syscall_netmigrate.c'; then $(CYGPATH_W) 'lib/syscall_netmigrate.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_netmigrate.c'; fi`
+
+lib/lib_libvserver_a-syscall_netremove.o: lib/syscall_netremove.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_netremove.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_netremove.Tpo" -c -o lib/lib_libvserver_a-syscall_netremove.o `test -f 'lib/syscall_netremove.c' || echo '$(srcdir)/'`lib/syscall_netremove.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_netremove.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_netremove.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_netremove.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_netremove.c' object='lib/lib_libvserver_a-syscall_netremove.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_netremove.o `test -f 'lib/syscall_netremove.c' || echo '$(srcdir)/'`lib/syscall_netremove.c
+
+lib/lib_libvserver_a-syscall_netremove.obj: lib/syscall_netremove.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_netremove.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_netremove.Tpo" -c -o lib/lib_libvserver_a-syscall_netremove.obj `if test -f 'lib/syscall_netremove.c'; then $(CYGPATH_W) 'lib/syscall_netremove.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_netremove.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_netremove.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_netremove.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_netremove.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_netremove.c' object='lib/lib_libvserver_a-syscall_netremove.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_netremove.obj `if test -f 'lib/syscall_netremove.c'; then $(CYGPATH_W) 'lib/syscall_netremove.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_netremove.c'; fi`
+
+lib/lib_libvserver_a-syscall_setccaps.o: lib/syscall_setccaps.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_setccaps.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_setccaps.Tpo" -c -o lib/lib_libvserver_a-syscall_setccaps.o `test -f 'lib/syscall_setccaps.c' || echo '$(srcdir)/'`lib/syscall_setccaps.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setccaps.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_setccaps.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setccaps.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setccaps.c' object='lib/lib_libvserver_a-syscall_setccaps.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_setccaps.o `test -f 'lib/syscall_setccaps.c' || echo '$(srcdir)/'`lib/syscall_setccaps.c
+
+lib/lib_libvserver_a-syscall_setccaps.obj: lib/syscall_setccaps.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_setccaps.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_setccaps.Tpo" -c -o lib/lib_libvserver_a-syscall_setccaps.obj `if test -f 'lib/syscall_setccaps.c'; then $(CYGPATH_W) 'lib/syscall_setccaps.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_setccaps.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setccaps.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_setccaps.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setccaps.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setccaps.c' object='lib/lib_libvserver_a-syscall_setccaps.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_setccaps.obj `if test -f 'lib/syscall_setccaps.c'; then $(CYGPATH_W) 'lib/syscall_setccaps.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_setccaps.c'; fi`
+
+lib/lib_libvserver_a-syscall_setcflags.o: lib/syscall_setcflags.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_setcflags.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_setcflags.Tpo" -c -o lib/lib_libvserver_a-syscall_setcflags.o `test -f 'lib/syscall_setcflags.c' || echo '$(srcdir)/'`lib/syscall_setcflags.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setcflags.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_setcflags.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setcflags.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setcflags.c' object='lib/lib_libvserver_a-syscall_setcflags.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_setcflags.o `test -f 'lib/syscall_setcflags.c' || echo '$(srcdir)/'`lib/syscall_setcflags.c
+
+lib/lib_libvserver_a-syscall_setcflags.obj: lib/syscall_setcflags.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_setcflags.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_setcflags.Tpo" -c -o lib/lib_libvserver_a-syscall_setcflags.obj `if test -f 'lib/syscall_setcflags.c'; then $(CYGPATH_W) 'lib/syscall_setcflags.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_setcflags.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setcflags.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_setcflags.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setcflags.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setcflags.c' object='lib/lib_libvserver_a-syscall_setcflags.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_setcflags.obj `if test -f 'lib/syscall_setcflags.c'; then $(CYGPATH_W) 'lib/syscall_setcflags.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_setcflags.c'; fi`
+
+lib/lib_libvserver_a-syscall_setiattr.o: lib/syscall_setiattr.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_setiattr.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_setiattr.Tpo" -c -o lib/lib_libvserver_a-syscall_setiattr.o `test -f 'lib/syscall_setiattr.c' || echo '$(srcdir)/'`lib/syscall_setiattr.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setiattr.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_setiattr.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setiattr.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setiattr.c' object='lib/lib_libvserver_a-syscall_setiattr.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_setiattr.o `test -f 'lib/syscall_setiattr.c' || echo '$(srcdir)/'`lib/syscall_setiattr.c
+
+lib/lib_libvserver_a-syscall_setiattr.obj: lib/syscall_setiattr.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_setiattr.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_setiattr.Tpo" -c -o lib/lib_libvserver_a-syscall_setiattr.obj `if test -f 'lib/syscall_setiattr.c'; then $(CYGPATH_W) 'lib/syscall_setiattr.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_setiattr.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setiattr.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_setiattr.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setiattr.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setiattr.c' object='lib/lib_libvserver_a-syscall_setiattr.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_setiattr.obj `if test -f 'lib/syscall_setiattr.c'; then $(CYGPATH_W) 'lib/syscall_setiattr.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_setiattr.c'; fi`
+
+lib/lib_libvserver_a-syscall_setnamespace.o: lib/syscall_setnamespace.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_setnamespace.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_setnamespace.Tpo" -c -o lib/lib_libvserver_a-syscall_setnamespace.o `test -f 'lib/syscall_setnamespace.c' || echo '$(srcdir)/'`lib/syscall_setnamespace.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setnamespace.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_setnamespace.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setnamespace.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setnamespace.c' object='lib/lib_libvserver_a-syscall_setnamespace.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_setnamespace.o `test -f 'lib/syscall_setnamespace.c' || echo '$(srcdir)/'`lib/syscall_setnamespace.c
+
+lib/lib_libvserver_a-syscall_setnamespace.obj: lib/syscall_setnamespace.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_setnamespace.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_setnamespace.Tpo" -c -o lib/lib_libvserver_a-syscall_setnamespace.obj `if test -f 'lib/syscall_setnamespace.c'; then $(CYGPATH_W) 'lib/syscall_setnamespace.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_setnamespace.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setnamespace.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_setnamespace.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setnamespace.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setnamespace.c' object='lib/lib_libvserver_a-syscall_setnamespace.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_setnamespace.obj `if test -f 'lib/syscall_setnamespace.c'; then $(CYGPATH_W) 'lib/syscall_setnamespace.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_setnamespace.c'; fi`
+
+lib/lib_libvserver_a-syscall_setncaps.o: lib/syscall_setncaps.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_setncaps.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_setncaps.Tpo" -c -o lib/lib_libvserver_a-syscall_setncaps.o `test -f 'lib/syscall_setncaps.c' || echo '$(srcdir)/'`lib/syscall_setncaps.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setncaps.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_setncaps.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setncaps.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setncaps.c' object='lib/lib_libvserver_a-syscall_setncaps.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_setncaps.o `test -f 'lib/syscall_setncaps.c' || echo '$(srcdir)/'`lib/syscall_setncaps.c
+
+lib/lib_libvserver_a-syscall_setncaps.obj: lib/syscall_setncaps.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_setncaps.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_setncaps.Tpo" -c -o lib/lib_libvserver_a-syscall_setncaps.obj `if test -f 'lib/syscall_setncaps.c'; then $(CYGPATH_W) 'lib/syscall_setncaps.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_setncaps.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setncaps.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_setncaps.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setncaps.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setncaps.c' object='lib/lib_libvserver_a-syscall_setncaps.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_setncaps.obj `if test -f 'lib/syscall_setncaps.c'; then $(CYGPATH_W) 'lib/syscall_setncaps.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_setncaps.c'; fi`
+
+lib/lib_libvserver_a-syscall_setnflags.o: lib/syscall_setnflags.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_setnflags.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_setnflags.Tpo" -c -o lib/lib_libvserver_a-syscall_setnflags.o `test -f 'lib/syscall_setnflags.c' || echo '$(srcdir)/'`lib/syscall_setnflags.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setnflags.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_setnflags.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setnflags.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setnflags.c' object='lib/lib_libvserver_a-syscall_setnflags.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_setnflags.o `test -f 'lib/syscall_setnflags.c' || echo '$(srcdir)/'`lib/syscall_setnflags.c
+
+lib/lib_libvserver_a-syscall_setnflags.obj: lib/syscall_setnflags.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_setnflags.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_setnflags.Tpo" -c -o lib/lib_libvserver_a-syscall_setnflags.obj `if test -f 'lib/syscall_setnflags.c'; then $(CYGPATH_W) 'lib/syscall_setnflags.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_setnflags.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setnflags.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_setnflags.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setnflags.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setnflags.c' object='lib/lib_libvserver_a-syscall_setnflags.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_setnflags.obj `if test -f 'lib/syscall_setnflags.c'; then $(CYGPATH_W) 'lib/syscall_setnflags.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_setnflags.c'; fi`
+
+lib/lib_libvserver_a-syscall_setsched.o: lib/syscall_setsched.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_setsched.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_setsched.Tpo" -c -o lib/lib_libvserver_a-syscall_setsched.o `test -f 'lib/syscall_setsched.c' || echo '$(srcdir)/'`lib/syscall_setsched.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setsched.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_setsched.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setsched.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setsched.c' object='lib/lib_libvserver_a-syscall_setsched.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_setsched.o `test -f 'lib/syscall_setsched.c' || echo '$(srcdir)/'`lib/syscall_setsched.c
+
+lib/lib_libvserver_a-syscall_setsched.obj: lib/syscall_setsched.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_setsched.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_setsched.Tpo" -c -o lib/lib_libvserver_a-syscall_setsched.obj `if test -f 'lib/syscall_setsched.c'; then $(CYGPATH_W) 'lib/syscall_setsched.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_setsched.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setsched.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_setsched.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setsched.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setsched.c' object='lib/lib_libvserver_a-syscall_setsched.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_setsched.obj `if test -f 'lib/syscall_setsched.c'; then $(CYGPATH_W) 'lib/syscall_setsched.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_setsched.c'; fi`
+
+lib/lib_libvserver_a-syscall_setvhiname.o: lib/syscall_setvhiname.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_setvhiname.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_setvhiname.Tpo" -c -o lib/lib_libvserver_a-syscall_setvhiname.o `test -f 'lib/syscall_setvhiname.c' || echo '$(srcdir)/'`lib/syscall_setvhiname.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setvhiname.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_setvhiname.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setvhiname.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setvhiname.c' object='lib/lib_libvserver_a-syscall_setvhiname.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_setvhiname.o `test -f 'lib/syscall_setvhiname.c' || echo '$(srcdir)/'`lib/syscall_setvhiname.c
+
+lib/lib_libvserver_a-syscall_setvhiname.obj: lib/syscall_setvhiname.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_setvhiname.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_setvhiname.Tpo" -c -o lib/lib_libvserver_a-syscall_setvhiname.obj `if test -f 'lib/syscall_setvhiname.c'; then $(CYGPATH_W) 'lib/syscall_setvhiname.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_setvhiname.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setvhiname.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_setvhiname.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setvhiname.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setvhiname.c' object='lib/lib_libvserver_a-syscall_setvhiname.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_setvhiname.obj `if test -f 'lib/syscall_setvhiname.c'; then $(CYGPATH_W) 'lib/syscall_setvhiname.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_setvhiname.c'; fi`
+
+lib/lib_libvserver_a-syscall_waitexit.o: lib/syscall_waitexit.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_waitexit.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_waitexit.Tpo" -c -o lib/lib_libvserver_a-syscall_waitexit.o `test -f 'lib/syscall_waitexit.c' || echo '$(srcdir)/'`lib/syscall_waitexit.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_waitexit.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_waitexit.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_waitexit.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_waitexit.c' object='lib/lib_libvserver_a-syscall_waitexit.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_waitexit.o `test -f 'lib/syscall_waitexit.c' || echo '$(srcdir)/'`lib/syscall_waitexit.c
+
+lib/lib_libvserver_a-syscall_waitexit.obj: lib/syscall_waitexit.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_waitexit.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_waitexit.Tpo" -c -o lib/lib_libvserver_a-syscall_waitexit.obj `if test -f 'lib/syscall_waitexit.c'; then $(CYGPATH_W) 'lib/syscall_waitexit.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_waitexit.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_waitexit.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_waitexit.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_waitexit.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_waitexit.c' object='lib/lib_libvserver_a-syscall_waitexit.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_waitexit.obj `if test -f 'lib/syscall_waitexit.c'; then $(CYGPATH_W) 'lib/syscall_waitexit.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_waitexit.c'; fi`
+
+lib/lib_libvserver_a-bcaps-v13.o: lib/bcaps-v13.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-bcaps-v13.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-bcaps-v13.Tpo" -c -o lib/lib_libvserver_a-bcaps-v13.o `test -f 'lib/bcaps-v13.c' || echo '$(srcdir)/'`lib/bcaps-v13.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-bcaps-v13.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-bcaps-v13.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-bcaps-v13.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/bcaps-v13.c' object='lib/lib_libvserver_a-bcaps-v13.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-bcaps-v13.o `test -f 'lib/bcaps-v13.c' || echo '$(srcdir)/'`lib/bcaps-v13.c
+
+lib/lib_libvserver_a-bcaps-v13.obj: lib/bcaps-v13.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-bcaps-v13.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-bcaps-v13.Tpo" -c -o lib/lib_libvserver_a-bcaps-v13.obj `if test -f 'lib/bcaps-v13.c'; then $(CYGPATH_W) 'lib/bcaps-v13.c'; else $(CYGPATH_W) '$(srcdir)/lib/bcaps-v13.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-bcaps-v13.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-bcaps-v13.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-bcaps-v13.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/bcaps-v13.c' object='lib/lib_libvserver_a-bcaps-v13.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-bcaps-v13.obj `if test -f 'lib/bcaps-v13.c'; then $(CYGPATH_W) 'lib/bcaps-v13.c'; else $(CYGPATH_W) '$(srcdir)/lib/bcaps-v13.c'; fi`
+
+lib/lib_libvserver_a-bcaps_list-v13.o: lib/bcaps_list-v13.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-bcaps_list-v13.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-bcaps_list-v13.Tpo" -c -o lib/lib_libvserver_a-bcaps_list-v13.o `test -f 'lib/bcaps_list-v13.c' || echo '$(srcdir)/'`lib/bcaps_list-v13.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-bcaps_list-v13.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-bcaps_list-v13.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-bcaps_list-v13.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/bcaps_list-v13.c' object='lib/lib_libvserver_a-bcaps_list-v13.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-bcaps_list-v13.o `test -f 'lib/bcaps_list-v13.c' || echo '$(srcdir)/'`lib/bcaps_list-v13.c
+
+lib/lib_libvserver_a-bcaps_list-v13.obj: lib/bcaps_list-v13.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-bcaps_list-v13.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-bcaps_list-v13.Tpo" -c -o lib/lib_libvserver_a-bcaps_list-v13.obj `if test -f 'lib/bcaps_list-v13.c'; then $(CYGPATH_W) 'lib/bcaps_list-v13.c'; else $(CYGPATH_W) '$(srcdir)/lib/bcaps_list-v13.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-bcaps_list-v13.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-bcaps_list-v13.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-bcaps_list-v13.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/bcaps_list-v13.c' object='lib/lib_libvserver_a-bcaps_list-v13.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-bcaps_list-v13.obj `if test -f 'lib/bcaps_list-v13.c'; then $(CYGPATH_W) 'lib/bcaps_list-v13.c'; else $(CYGPATH_W) '$(srcdir)/lib/bcaps_list-v13.c'; fi`
+
+lib/lib_libvserver_a-ccaps-v13.o: lib/ccaps-v13.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-ccaps-v13.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-ccaps-v13.Tpo" -c -o lib/lib_libvserver_a-ccaps-v13.o `test -f 'lib/ccaps-v13.c' || echo '$(srcdir)/'`lib/ccaps-v13.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-ccaps-v13.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-ccaps-v13.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-ccaps-v13.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/ccaps-v13.c' object='lib/lib_libvserver_a-ccaps-v13.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-ccaps-v13.o `test -f 'lib/ccaps-v13.c' || echo '$(srcdir)/'`lib/ccaps-v13.c
+
+lib/lib_libvserver_a-ccaps-v13.obj: lib/ccaps-v13.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-ccaps-v13.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-ccaps-v13.Tpo" -c -o lib/lib_libvserver_a-ccaps-v13.obj `if test -f 'lib/ccaps-v13.c'; then $(CYGPATH_W) 'lib/ccaps-v13.c'; else $(CYGPATH_W) '$(srcdir)/lib/ccaps-v13.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-ccaps-v13.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-ccaps-v13.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-ccaps-v13.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/ccaps-v13.c' object='lib/lib_libvserver_a-ccaps-v13.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-ccaps-v13.obj `if test -f 'lib/ccaps-v13.c'; then $(CYGPATH_W) 'lib/ccaps-v13.c'; else $(CYGPATH_W) '$(srcdir)/lib/ccaps-v13.c'; fi`
+
+lib/lib_libvserver_a-ccaps_list-v13.o: lib/ccaps_list-v13.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-ccaps_list-v13.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-ccaps_list-v13.Tpo" -c -o lib/lib_libvserver_a-ccaps_list-v13.o `test -f 'lib/ccaps_list-v13.c' || echo '$(srcdir)/'`lib/ccaps_list-v13.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-ccaps_list-v13.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-ccaps_list-v13.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-ccaps_list-v13.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/ccaps_list-v13.c' object='lib/lib_libvserver_a-ccaps_list-v13.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-ccaps_list-v13.o `test -f 'lib/ccaps_list-v13.c' || echo '$(srcdir)/'`lib/ccaps_list-v13.c
+
+lib/lib_libvserver_a-ccaps_list-v13.obj: lib/ccaps_list-v13.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-ccaps_list-v13.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-ccaps_list-v13.Tpo" -c -o lib/lib_libvserver_a-ccaps_list-v13.obj `if test -f 'lib/ccaps_list-v13.c'; then $(CYGPATH_W) 'lib/ccaps_list-v13.c'; else $(CYGPATH_W) '$(srcdir)/lib/ccaps_list-v13.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-ccaps_list-v13.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-ccaps_list-v13.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-ccaps_list-v13.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/ccaps_list-v13.c' object='lib/lib_libvserver_a-ccaps_list-v13.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-ccaps_list-v13.obj `if test -f 'lib/ccaps_list-v13.c'; then $(CYGPATH_W) 'lib/ccaps_list-v13.c'; else $(CYGPATH_W) '$(srcdir)/lib/ccaps_list-v13.c'; fi`
+
+lib/lib_libvserver_a-cflags-v13.o: lib/cflags-v13.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-cflags-v13.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-cflags-v13.Tpo" -c -o lib/lib_libvserver_a-cflags-v13.o `test -f 'lib/cflags-v13.c' || echo '$(srcdir)/'`lib/cflags-v13.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-cflags-v13.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-cflags-v13.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-cflags-v13.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/cflags-v13.c' object='lib/lib_libvserver_a-cflags-v13.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-cflags-v13.o `test -f 'lib/cflags-v13.c' || echo '$(srcdir)/'`lib/cflags-v13.c
+
+lib/lib_libvserver_a-cflags-v13.obj: lib/cflags-v13.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-cflags-v13.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-cflags-v13.Tpo" -c -o lib/lib_libvserver_a-cflags-v13.obj `if test -f 'lib/cflags-v13.c'; then $(CYGPATH_W) 'lib/cflags-v13.c'; else $(CYGPATH_W) '$(srcdir)/lib/cflags-v13.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-cflags-v13.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-cflags-v13.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-cflags-v13.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/cflags-v13.c' object='lib/lib_libvserver_a-cflags-v13.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-cflags-v13.obj `if test -f 'lib/cflags-v13.c'; then $(CYGPATH_W) 'lib/cflags-v13.c'; else $(CYGPATH_W) '$(srcdir)/lib/cflags-v13.c'; fi`
+
+lib/lib_libvserver_a-cflags_list-v13.o: lib/cflags_list-v13.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-cflags_list-v13.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-cflags_list-v13.Tpo" -c -o lib/lib_libvserver_a-cflags_list-v13.o `test -f 'lib/cflags_list-v13.c' || echo '$(srcdir)/'`lib/cflags_list-v13.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-cflags_list-v13.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-cflags_list-v13.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-cflags_list-v13.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/cflags_list-v13.c' object='lib/lib_libvserver_a-cflags_list-v13.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-cflags_list-v13.o `test -f 'lib/cflags_list-v13.c' || echo '$(srcdir)/'`lib/cflags_list-v13.c
+
+lib/lib_libvserver_a-cflags_list-v13.obj: lib/cflags_list-v13.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-cflags_list-v13.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-cflags_list-v13.Tpo" -c -o lib/lib_libvserver_a-cflags_list-v13.obj `if test -f 'lib/cflags_list-v13.c'; then $(CYGPATH_W) 'lib/cflags_list-v13.c'; else $(CYGPATH_W) '$(srcdir)/lib/cflags_list-v13.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-cflags_list-v13.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-cflags_list-v13.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-cflags_list-v13.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/cflags_list-v13.c' object='lib/lib_libvserver_a-cflags_list-v13.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-cflags_list-v13.obj `if test -f 'lib/cflags_list-v13.c'; then $(CYGPATH_W) 'lib/cflags_list-v13.c'; else $(CYGPATH_W) '$(srcdir)/lib/cflags_list-v13.c'; fi`
+
+lib/lib_libvserver_a-ncaps-net.o: lib/ncaps-net.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-ncaps-net.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-ncaps-net.Tpo" -c -o lib/lib_libvserver_a-ncaps-net.o `test -f 'lib/ncaps-net.c' || echo '$(srcdir)/'`lib/ncaps-net.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-ncaps-net.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-ncaps-net.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-ncaps-net.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/ncaps-net.c' object='lib/lib_libvserver_a-ncaps-net.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-ncaps-net.o `test -f 'lib/ncaps-net.c' || echo '$(srcdir)/'`lib/ncaps-net.c
+
+lib/lib_libvserver_a-ncaps-net.obj: lib/ncaps-net.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-ncaps-net.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-ncaps-net.Tpo" -c -o lib/lib_libvserver_a-ncaps-net.obj `if test -f 'lib/ncaps-net.c'; then $(CYGPATH_W) 'lib/ncaps-net.c'; else $(CYGPATH_W) '$(srcdir)/lib/ncaps-net.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-ncaps-net.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-ncaps-net.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-ncaps-net.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/ncaps-net.c' object='lib/lib_libvserver_a-ncaps-net.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-ncaps-net.obj `if test -f 'lib/ncaps-net.c'; then $(CYGPATH_W) 'lib/ncaps-net.c'; else $(CYGPATH_W) '$(srcdir)/lib/ncaps-net.c'; fi`
+
+lib/lib_libvserver_a-ncaps_list-net.o: lib/ncaps_list-net.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-ncaps_list-net.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-ncaps_list-net.Tpo" -c -o lib/lib_libvserver_a-ncaps_list-net.o `test -f 'lib/ncaps_list-net.c' || echo '$(srcdir)/'`lib/ncaps_list-net.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-ncaps_list-net.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-ncaps_list-net.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-ncaps_list-net.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/ncaps_list-net.c' object='lib/lib_libvserver_a-ncaps_list-net.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-ncaps_list-net.o `test -f 'lib/ncaps_list-net.c' || echo '$(srcdir)/'`lib/ncaps_list-net.c
+
+lib/lib_libvserver_a-ncaps_list-net.obj: lib/ncaps_list-net.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-ncaps_list-net.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-ncaps_list-net.Tpo" -c -o lib/lib_libvserver_a-ncaps_list-net.obj `if test -f 'lib/ncaps_list-net.c'; then $(CYGPATH_W) 'lib/ncaps_list-net.c'; else $(CYGPATH_W) '$(srcdir)/lib/ncaps_list-net.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-ncaps_list-net.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-ncaps_list-net.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-ncaps_list-net.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/ncaps_list-net.c' object='lib/lib_libvserver_a-ncaps_list-net.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-ncaps_list-net.obj `if test -f 'lib/ncaps_list-net.c'; then $(CYGPATH_W) 'lib/ncaps_list-net.c'; else $(CYGPATH_W) '$(srcdir)/lib/ncaps_list-net.c'; fi`
+
+lib/lib_libvserver_a-nflags-net.o: lib/nflags-net.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-nflags-net.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-nflags-net.Tpo" -c -o lib/lib_libvserver_a-nflags-net.o `test -f 'lib/nflags-net.c' || echo '$(srcdir)/'`lib/nflags-net.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-nflags-net.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-nflags-net.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-nflags-net.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/nflags-net.c' object='lib/lib_libvserver_a-nflags-net.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-nflags-net.o `test -f 'lib/nflags-net.c' || echo '$(srcdir)/'`lib/nflags-net.c
+
+lib/lib_libvserver_a-nflags-net.obj: lib/nflags-net.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-nflags-net.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-nflags-net.Tpo" -c -o lib/lib_libvserver_a-nflags-net.obj `if test -f 'lib/nflags-net.c'; then $(CYGPATH_W) 'lib/nflags-net.c'; else $(CYGPATH_W) '$(srcdir)/lib/nflags-net.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-nflags-net.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-nflags-net.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-nflags-net.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/nflags-net.c' object='lib/lib_libvserver_a-nflags-net.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-nflags-net.obj `if test -f 'lib/nflags-net.c'; then $(CYGPATH_W) 'lib/nflags-net.c'; else $(CYGPATH_W) '$(srcdir)/lib/nflags-net.c'; fi`
+
+lib/lib_libvserver_a-nflags_list-net.o: lib/nflags_list-net.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-nflags_list-net.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-nflags_list-net.Tpo" -c -o lib/lib_libvserver_a-nflags_list-net.o `test -f 'lib/nflags_list-net.c' || echo '$(srcdir)/'`lib/nflags_list-net.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-nflags_list-net.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-nflags_list-net.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-nflags_list-net.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/nflags_list-net.c' object='lib/lib_libvserver_a-nflags_list-net.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-nflags_list-net.o `test -f 'lib/nflags_list-net.c' || echo '$(srcdir)/'`lib/nflags_list-net.c
+
+lib/lib_libvserver_a-nflags_list-net.obj: lib/nflags_list-net.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-nflags_list-net.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-nflags_list-net.Tpo" -c -o lib/lib_libvserver_a-nflags_list-net.obj `if test -f 'lib/nflags_list-net.c'; then $(CYGPATH_W) 'lib/nflags_list-net.c'; else $(CYGPATH_W) '$(srcdir)/lib/nflags_list-net.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-nflags_list-net.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-nflags_list-net.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-nflags_list-net.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/nflags_list-net.c' object='lib/lib_libvserver_a-nflags_list-net.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-nflags_list-net.obj `if test -f 'lib/nflags_list-net.c'; then $(CYGPATH_W) 'lib/nflags_list-net.c'; else $(CYGPATH_W) '$(srcdir)/lib/nflags_list-net.c'; fi`
+
+lib/lib_libvserver_a-syscall_adddlimit.o: lib/syscall_adddlimit.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_adddlimit.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_adddlimit.Tpo" -c -o lib/lib_libvserver_a-syscall_adddlimit.o `test -f 'lib/syscall_adddlimit.c' || echo '$(srcdir)/'`lib/syscall_adddlimit.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_adddlimit.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_adddlimit.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_adddlimit.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_adddlimit.c' object='lib/lib_libvserver_a-syscall_adddlimit.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_adddlimit.o `test -f 'lib/syscall_adddlimit.c' || echo '$(srcdir)/'`lib/syscall_adddlimit.c
+
+lib/lib_libvserver_a-syscall_adddlimit.obj: lib/syscall_adddlimit.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_adddlimit.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_adddlimit.Tpo" -c -o lib/lib_libvserver_a-syscall_adddlimit.obj `if test -f 'lib/syscall_adddlimit.c'; then $(CYGPATH_W) 'lib/syscall_adddlimit.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_adddlimit.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_adddlimit.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_adddlimit.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_adddlimit.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_adddlimit.c' object='lib/lib_libvserver_a-syscall_adddlimit.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_adddlimit.obj `if test -f 'lib/syscall_adddlimit.c'; then $(CYGPATH_W) 'lib/syscall_adddlimit.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_adddlimit.c'; fi`
+
+lib/lib_libvserver_a-syscall_getdlimit.o: lib/syscall_getdlimit.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_getdlimit.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_getdlimit.Tpo" -c -o lib/lib_libvserver_a-syscall_getdlimit.o `test -f 'lib/syscall_getdlimit.c' || echo '$(srcdir)/'`lib/syscall_getdlimit.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getdlimit.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_getdlimit.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getdlimit.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getdlimit.c' object='lib/lib_libvserver_a-syscall_getdlimit.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_getdlimit.o `test -f 'lib/syscall_getdlimit.c' || echo '$(srcdir)/'`lib/syscall_getdlimit.c
+
+lib/lib_libvserver_a-syscall_getdlimit.obj: lib/syscall_getdlimit.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_getdlimit.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_getdlimit.Tpo" -c -o lib/lib_libvserver_a-syscall_getdlimit.obj `if test -f 'lib/syscall_getdlimit.c'; then $(CYGPATH_W) 'lib/syscall_getdlimit.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_getdlimit.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getdlimit.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_getdlimit.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_getdlimit.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getdlimit.c' object='lib/lib_libvserver_a-syscall_getdlimit.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_getdlimit.obj `if test -f 'lib/syscall_getdlimit.c'; then $(CYGPATH_W) 'lib/syscall_getdlimit.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_getdlimit.c'; fi`
+
+lib/lib_libvserver_a-syscall_remdlimit.o: lib/syscall_remdlimit.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_remdlimit.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_remdlimit.Tpo" -c -o lib/lib_libvserver_a-syscall_remdlimit.o `test -f 'lib/syscall_remdlimit.c' || echo '$(srcdir)/'`lib/syscall_remdlimit.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_remdlimit.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_remdlimit.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_remdlimit.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_remdlimit.c' object='lib/lib_libvserver_a-syscall_remdlimit.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_remdlimit.o `test -f 'lib/syscall_remdlimit.c' || echo '$(srcdir)/'`lib/syscall_remdlimit.c
+
+lib/lib_libvserver_a-syscall_remdlimit.obj: lib/syscall_remdlimit.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_remdlimit.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_remdlimit.Tpo" -c -o lib/lib_libvserver_a-syscall_remdlimit.obj `if test -f 'lib/syscall_remdlimit.c'; then $(CYGPATH_W) 'lib/syscall_remdlimit.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_remdlimit.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_remdlimit.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_remdlimit.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_remdlimit.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_remdlimit.c' object='lib/lib_libvserver_a-syscall_remdlimit.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_remdlimit.obj `if test -f 'lib/syscall_remdlimit.c'; then $(CYGPATH_W) 'lib/syscall_remdlimit.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_remdlimit.c'; fi`
+
+lib/lib_libvserver_a-syscall_setdlimit.o: lib/syscall_setdlimit.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_setdlimit.o -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_setdlimit.Tpo" -c -o lib/lib_libvserver_a-syscall_setdlimit.o `test -f 'lib/syscall_setdlimit.c' || echo '$(srcdir)/'`lib/syscall_setdlimit.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setdlimit.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_setdlimit.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setdlimit.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setdlimit.c' object='lib/lib_libvserver_a-syscall_setdlimit.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_setdlimit.o `test -f 'lib/syscall_setdlimit.c' || echo '$(srcdir)/'`lib/syscall_setdlimit.c
+
+lib/lib_libvserver_a-syscall_setdlimit.obj: lib/syscall_setdlimit.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_a-syscall_setdlimit.obj -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_a-syscall_setdlimit.Tpo" -c -o lib/lib_libvserver_a-syscall_setdlimit.obj `if test -f 'lib/syscall_setdlimit.c'; then $(CYGPATH_W) 'lib/syscall_setdlimit.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_setdlimit.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setdlimit.Tpo" "lib/$(DEPDIR)/lib_libvserver_a-syscall_setdlimit.Po"; else rm -f "lib/$(DEPDIR)/lib_libvserver_a-syscall_setdlimit.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setdlimit.c' object='lib/lib_libvserver_a-syscall_setdlimit.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_a-syscall_setdlimit.obj `if test -f 'lib/syscall_setdlimit.c'; then $(CYGPATH_W) 'lib/syscall_setdlimit.c'; else $(CYGPATH_W) '$(srcdir)/lib/syscall_setdlimit.c'; fi`
+
+ensc_fmt/lib_libvserver_a-fmt-32.o: ensc_fmt/fmt-32.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_fmt/lib_libvserver_a-fmt-32.o -MD -MP -MF "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-32.Tpo" -c -o ensc_fmt/lib_libvserver_a-fmt-32.o `test -f 'ensc_fmt/fmt-32.c' || echo '$(srcdir)/'`ensc_fmt/fmt-32.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-32.Tpo" "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-32.Po"; else rm -f "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-32.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_fmt/fmt-32.c' object='ensc_fmt/lib_libvserver_a-fmt-32.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_fmt/lib_libvserver_a-fmt-32.o `test -f 'ensc_fmt/fmt-32.c' || echo '$(srcdir)/'`ensc_fmt/fmt-32.c
+
+ensc_fmt/lib_libvserver_a-fmt-32.obj: ensc_fmt/fmt-32.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_fmt/lib_libvserver_a-fmt-32.obj -MD -MP -MF "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-32.Tpo" -c -o ensc_fmt/lib_libvserver_a-fmt-32.obj `if test -f 'ensc_fmt/fmt-32.c'; then $(CYGPATH_W) 'ensc_fmt/fmt-32.c'; else $(CYGPATH_W) '$(srcdir)/ensc_fmt/fmt-32.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-32.Tpo" "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-32.Po"; else rm -f "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-32.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_fmt/fmt-32.c' object='ensc_fmt/lib_libvserver_a-fmt-32.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_fmt/lib_libvserver_a-fmt-32.obj `if test -f 'ensc_fmt/fmt-32.c'; then $(CYGPATH_W) 'ensc_fmt/fmt-32.c'; else $(CYGPATH_W) '$(srcdir)/ensc_fmt/fmt-32.c'; fi`
+
+ensc_fmt/lib_libvserver_a-fmt-64.o: ensc_fmt/fmt-64.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_fmt/lib_libvserver_a-fmt-64.o -MD -MP -MF "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-64.Tpo" -c -o ensc_fmt/lib_libvserver_a-fmt-64.o `test -f 'ensc_fmt/fmt-64.c' || echo '$(srcdir)/'`ensc_fmt/fmt-64.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-64.Tpo" "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-64.Po"; else rm -f "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-64.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_fmt/fmt-64.c' object='ensc_fmt/lib_libvserver_a-fmt-64.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_fmt/lib_libvserver_a-fmt-64.o `test -f 'ensc_fmt/fmt-64.c' || echo '$(srcdir)/'`ensc_fmt/fmt-64.c
+
+ensc_fmt/lib_libvserver_a-fmt-64.obj: ensc_fmt/fmt-64.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_fmt/lib_libvserver_a-fmt-64.obj -MD -MP -MF "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-64.Tpo" -c -o ensc_fmt/lib_libvserver_a-fmt-64.obj `if test -f 'ensc_fmt/fmt-64.c'; then $(CYGPATH_W) 'ensc_fmt/fmt-64.c'; else $(CYGPATH_W) '$(srcdir)/ensc_fmt/fmt-64.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-64.Tpo" "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-64.Po"; else rm -f "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-64.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_fmt/fmt-64.c' object='ensc_fmt/lib_libvserver_a-fmt-64.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_fmt/lib_libvserver_a-fmt-64.obj `if test -f 'ensc_fmt/fmt-64.c'; then $(CYGPATH_W) 'ensc_fmt/fmt-64.c'; else $(CYGPATH_W) '$(srcdir)/ensc_fmt/fmt-64.c'; fi`
+
+ensc_fmt/lib_libvserver_a-fmtx-32.o: ensc_fmt/fmtx-32.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_fmt/lib_libvserver_a-fmtx-32.o -MD -MP -MF "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmtx-32.Tpo" -c -o ensc_fmt/lib_libvserver_a-fmtx-32.o `test -f 'ensc_fmt/fmtx-32.c' || echo '$(srcdir)/'`ensc_fmt/fmtx-32.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmtx-32.Tpo" "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmtx-32.Po"; else rm -f "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmtx-32.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_fmt/fmtx-32.c' object='ensc_fmt/lib_libvserver_a-fmtx-32.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_fmt/lib_libvserver_a-fmtx-32.o `test -f 'ensc_fmt/fmtx-32.c' || echo '$(srcdir)/'`ensc_fmt/fmtx-32.c
+
+ensc_fmt/lib_libvserver_a-fmtx-32.obj: ensc_fmt/fmtx-32.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_fmt/lib_libvserver_a-fmtx-32.obj -MD -MP -MF "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmtx-32.Tpo" -c -o ensc_fmt/lib_libvserver_a-fmtx-32.obj `if test -f 'ensc_fmt/fmtx-32.c'; then $(CYGPATH_W) 'ensc_fmt/fmtx-32.c'; else $(CYGPATH_W) '$(srcdir)/ensc_fmt/fmtx-32.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmtx-32.Tpo" "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmtx-32.Po"; else rm -f "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmtx-32.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_fmt/fmtx-32.c' object='ensc_fmt/lib_libvserver_a-fmtx-32.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_fmt/lib_libvserver_a-fmtx-32.obj `if test -f 'ensc_fmt/fmtx-32.c'; then $(CYGPATH_W) 'ensc_fmt/fmtx-32.c'; else $(CYGPATH_W) '$(srcdir)/ensc_fmt/fmtx-32.c'; fi`
+
+ensc_fmt/lib_libvserver_a-fmtx-64.o: ensc_fmt/fmtx-64.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_fmt/lib_libvserver_a-fmtx-64.o -MD -MP -MF "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmtx-64.Tpo" -c -o ensc_fmt/lib_libvserver_a-fmtx-64.o `test -f 'ensc_fmt/fmtx-64.c' || echo '$(srcdir)/'`ensc_fmt/fmtx-64.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmtx-64.Tpo" "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmtx-64.Po"; else rm -f "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmtx-64.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_fmt/fmtx-64.c' object='ensc_fmt/lib_libvserver_a-fmtx-64.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_fmt/lib_libvserver_a-fmtx-64.o `test -f 'ensc_fmt/fmtx-64.c' || echo '$(srcdir)/'`ensc_fmt/fmtx-64.c
+
+ensc_fmt/lib_libvserver_a-fmtx-64.obj: ensc_fmt/fmtx-64.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_fmt/lib_libvserver_a-fmtx-64.obj -MD -MP -MF "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmtx-64.Tpo" -c -o ensc_fmt/lib_libvserver_a-fmtx-64.obj `if test -f 'ensc_fmt/fmtx-64.c'; then $(CYGPATH_W) 'ensc_fmt/fmtx-64.c'; else $(CYGPATH_W) '$(srcdir)/ensc_fmt/fmtx-64.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmtx-64.Tpo" "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmtx-64.Po"; else rm -f "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmtx-64.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_fmt/fmtx-64.c' object='ensc_fmt/lib_libvserver_a-fmtx-64.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_fmt/lib_libvserver_a-fmtx-64.obj `if test -f 'ensc_fmt/fmtx-64.c'; then $(CYGPATH_W) 'ensc_fmt/fmtx-64.c'; else $(CYGPATH_W) '$(srcdir)/ensc_fmt/fmtx-64.c'; fi`
+
+ensc_fmt/lib_libvserver_a-fmt-tai64n.o: ensc_fmt/fmt-tai64n.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_fmt/lib_libvserver_a-fmt-tai64n.o -MD -MP -MF "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-tai64n.Tpo" -c -o ensc_fmt/lib_libvserver_a-fmt-tai64n.o `test -f 'ensc_fmt/fmt-tai64n.c' || echo '$(srcdir)/'`ensc_fmt/fmt-tai64n.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-tai64n.Tpo" "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-tai64n.Po"; else rm -f "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-tai64n.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_fmt/fmt-tai64n.c' object='ensc_fmt/lib_libvserver_a-fmt-tai64n.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_fmt/lib_libvserver_a-fmt-tai64n.o `test -f 'ensc_fmt/fmt-tai64n.c' || echo '$(srcdir)/'`ensc_fmt/fmt-tai64n.c
+
+ensc_fmt/lib_libvserver_a-fmt-tai64n.obj: ensc_fmt/fmt-tai64n.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_fmt/lib_libvserver_a-fmt-tai64n.obj -MD -MP -MF "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-tai64n.Tpo" -c -o ensc_fmt/lib_libvserver_a-fmt-tai64n.obj `if test -f 'ensc_fmt/fmt-tai64n.c'; then $(CYGPATH_W) 'ensc_fmt/fmt-tai64n.c'; else $(CYGPATH_W) '$(srcdir)/ensc_fmt/fmt-tai64n.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-tai64n.Tpo" "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-tai64n.Po"; else rm -f "ensc_fmt/$(DEPDIR)/lib_libvserver_a-fmt-tai64n.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_fmt/fmt-tai64n.c' object='ensc_fmt/lib_libvserver_a-fmt-tai64n.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_fmt/lib_libvserver_a-fmt-tai64n.obj `if test -f 'ensc_fmt/fmt-tai64n.c'; then $(CYGPATH_W) 'ensc_fmt/fmt-tai64n.c'; else $(CYGPATH_W) '$(srcdir)/ensc_fmt/fmt-tai64n.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-errinfo-writeerrno.o: lib_internal/errinfo-writeerrno.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-errinfo-writeerrno.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-errinfo-writeerrno.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-errinfo-writeerrno.o `test -f 'lib_internal/errinfo-writeerrno.c' || echo '$(srcdir)/'`lib_internal/errinfo-writeerrno.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-errinfo-writeerrno.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-errinfo-writeerrno.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-errinfo-writeerrno.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/errinfo-writeerrno.c' object='lib_internal/lib_internal_libinternal_diet_a-errinfo-writeerrno.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-errinfo-writeerrno.o `test -f 'lib_internal/errinfo-writeerrno.c' || echo '$(srcdir)/'`lib_internal/errinfo-writeerrno.c
+
+lib_internal/lib_internal_libinternal_diet_a-errinfo-writeerrno.obj: lib_internal/errinfo-writeerrno.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-errinfo-writeerrno.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-errinfo-writeerrno.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-errinfo-writeerrno.obj `if test -f 'lib_internal/errinfo-writeerrno.c'; then $(CYGPATH_W) 'lib_internal/errinfo-writeerrno.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/errinfo-writeerrno.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-errinfo-writeerrno.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-errinfo-writeerrno.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-errinfo-writeerrno.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/errinfo-writeerrno.c' object='lib_internal/lib_internal_libinternal_diet_a-errinfo-writeerrno.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-errinfo-writeerrno.obj `if test -f 'lib_internal/errinfo-writeerrno.c'; then $(CYGPATH_W) 'lib_internal/errinfo-writeerrno.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/errinfo-writeerrno.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-jailintotempdir.o: lib_internal/jailintotempdir.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-jailintotempdir.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-jailintotempdir.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-jailintotempdir.o `test -f 'lib_internal/jailintotempdir.c' || echo '$(srcdir)/'`lib_internal/jailintotempdir.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-jailintotempdir.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-jailintotempdir.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-jailintotempdir.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/jailintotempdir.c' object='lib_internal/lib_internal_libinternal_diet_a-jailintotempdir.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-jailintotempdir.o `test -f 'lib_internal/jailintotempdir.c' || echo '$(srcdir)/'`lib_internal/jailintotempdir.c
+
+lib_internal/lib_internal_libinternal_diet_a-jailintotempdir.obj: lib_internal/jailintotempdir.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-jailintotempdir.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-jailintotempdir.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-jailintotempdir.obj `if test -f 'lib_internal/jailintotempdir.c'; then $(CYGPATH_W) 'lib_internal/jailintotempdir.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/jailintotempdir.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-jailintotempdir.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-jailintotempdir.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-jailintotempdir.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/jailintotempdir.c' object='lib_internal/lib_internal_libinternal_diet_a-jailintotempdir.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-jailintotempdir.obj `if test -f 'lib_internal/jailintotempdir.c'; then $(CYGPATH_W) 'lib_internal/jailintotempdir.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/jailintotempdir.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-matchlist-appendfiles.o: lib_internal/matchlist-appendfiles.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-matchlist-appendfiles.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-appendfiles.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-appendfiles.o `test -f 'lib_internal/matchlist-appendfiles.c' || echo '$(srcdir)/'`lib_internal/matchlist-appendfiles.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-appendfiles.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-appendfiles.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-appendfiles.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-appendfiles.c' object='lib_internal/lib_internal_libinternal_diet_a-matchlist-appendfiles.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-appendfiles.o `test -f 'lib_internal/matchlist-appendfiles.c' || echo '$(srcdir)/'`lib_internal/matchlist-appendfiles.c
+
+lib_internal/lib_internal_libinternal_diet_a-matchlist-appendfiles.obj: lib_internal/matchlist-appendfiles.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-matchlist-appendfiles.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-appendfiles.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-appendfiles.obj `if test -f 'lib_internal/matchlist-appendfiles.c'; then $(CYGPATH_W) 'lib_internal/matchlist-appendfiles.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-appendfiles.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-appendfiles.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-appendfiles.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-appendfiles.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-appendfiles.c' object='lib_internal/lib_internal_libinternal_diet_a-matchlist-appendfiles.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-appendfiles.obj `if test -f 'lib_internal/matchlist-appendfiles.c'; then $(CYGPATH_W) 'lib_internal/matchlist-appendfiles.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-appendfiles.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-matchlist-compare.o: lib_internal/matchlist-compare.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-matchlist-compare.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-compare.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-compare.o `test -f 'lib_internal/matchlist-compare.c' || echo '$(srcdir)/'`lib_internal/matchlist-compare.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-compare.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-compare.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-compare.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-compare.c' object='lib_internal/lib_internal_libinternal_diet_a-matchlist-compare.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-compare.o `test -f 'lib_internal/matchlist-compare.c' || echo '$(srcdir)/'`lib_internal/matchlist-compare.c
+
+lib_internal/lib_internal_libinternal_diet_a-matchlist-compare.obj: lib_internal/matchlist-compare.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-matchlist-compare.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-compare.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-compare.obj `if test -f 'lib_internal/matchlist-compare.c'; then $(CYGPATH_W) 'lib_internal/matchlist-compare.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-compare.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-compare.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-compare.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-compare.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-compare.c' object='lib_internal/lib_internal_libinternal_diet_a-matchlist-compare.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-compare.obj `if test -f 'lib_internal/matchlist-compare.c'; then $(CYGPATH_W) 'lib_internal/matchlist-compare.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-compare.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-matchlist-destroy.o: lib_internal/matchlist-destroy.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-matchlist-destroy.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-destroy.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-destroy.o `test -f 'lib_internal/matchlist-destroy.c' || echo '$(srcdir)/'`lib_internal/matchlist-destroy.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-destroy.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-destroy.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-destroy.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-destroy.c' object='lib_internal/lib_internal_libinternal_diet_a-matchlist-destroy.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-destroy.o `test -f 'lib_internal/matchlist-destroy.c' || echo '$(srcdir)/'`lib_internal/matchlist-destroy.c
+
+lib_internal/lib_internal_libinternal_diet_a-matchlist-destroy.obj: lib_internal/matchlist-destroy.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-matchlist-destroy.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-destroy.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-destroy.obj `if test -f 'lib_internal/matchlist-destroy.c'; then $(CYGPATH_W) 'lib_internal/matchlist-destroy.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-destroy.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-destroy.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-destroy.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-destroy.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-destroy.c' object='lib_internal/lib_internal_libinternal_diet_a-matchlist-destroy.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-destroy.obj `if test -f 'lib_internal/matchlist-destroy.c'; then $(CYGPATH_W) 'lib_internal/matchlist-destroy.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-destroy.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-matchlist-init.o: lib_internal/matchlist-init.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-matchlist-init.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-init.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-init.o `test -f 'lib_internal/matchlist-init.c' || echo '$(srcdir)/'`lib_internal/matchlist-init.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-init.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-init.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-init.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-init.c' object='lib_internal/lib_internal_libinternal_diet_a-matchlist-init.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-init.o `test -f 'lib_internal/matchlist-init.c' || echo '$(srcdir)/'`lib_internal/matchlist-init.c
+
+lib_internal/lib_internal_libinternal_diet_a-matchlist-init.obj: lib_internal/matchlist-init.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-matchlist-init.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-init.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-init.obj `if test -f 'lib_internal/matchlist-init.c'; then $(CYGPATH_W) 'lib_internal/matchlist-init.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-init.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-init.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-init.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-init.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-init.c' object='lib_internal/lib_internal_libinternal_diet_a-matchlist-init.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-init.obj `if test -f 'lib_internal/matchlist-init.c'; then $(CYGPATH_W) 'lib_internal/matchlist-init.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-init.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-matchlist-initmanually.o: lib_internal/matchlist-initmanually.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-matchlist-initmanually.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initmanually.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-initmanually.o `test -f 'lib_internal/matchlist-initmanually.c' || echo '$(srcdir)/'`lib_internal/matchlist-initmanually.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initmanually.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initmanually.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initmanually.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-initmanually.c' object='lib_internal/lib_internal_libinternal_diet_a-matchlist-initmanually.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-initmanually.o `test -f 'lib_internal/matchlist-initmanually.c' || echo '$(srcdir)/'`lib_internal/matchlist-initmanually.c
+
+lib_internal/lib_internal_libinternal_diet_a-matchlist-initmanually.obj: lib_internal/matchlist-initmanually.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-matchlist-initmanually.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initmanually.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-initmanually.obj `if test -f 'lib_internal/matchlist-initmanually.c'; then $(CYGPATH_W) 'lib_internal/matchlist-initmanually.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-initmanually.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initmanually.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initmanually.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initmanually.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-initmanually.c' object='lib_internal/lib_internal_libinternal_diet_a-matchlist-initmanually.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-initmanually.obj `if test -f 'lib_internal/matchlist-initmanually.c'; then $(CYGPATH_W) 'lib_internal/matchlist-initmanually.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-initmanually.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-matchlist-initrefserverlist.o: lib_internal/matchlist-initrefserverlist.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-matchlist-initrefserverlist.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initrefserverlist.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-initrefserverlist.o `test -f 'lib_internal/matchlist-initrefserverlist.c' || echo '$(srcdir)/'`lib_internal/matchlist-initrefserverlist.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initrefserverlist.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initrefserverlist.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initrefserverlist.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-initrefserverlist.c' object='lib_internal/lib_internal_libinternal_diet_a-matchlist-initrefserverlist.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-initrefserverlist.o `test -f 'lib_internal/matchlist-initrefserverlist.c' || echo '$(srcdir)/'`lib_internal/matchlist-initrefserverlist.c
+
+lib_internal/lib_internal_libinternal_diet_a-matchlist-initrefserverlist.obj: lib_internal/matchlist-initrefserverlist.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-matchlist-initrefserverlist.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initrefserverlist.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-initrefserverlist.obj `if test -f 'lib_internal/matchlist-initrefserverlist.c'; then $(CYGPATH_W) 'lib_internal/matchlist-initrefserverlist.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-initrefserverlist.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initrefserverlist.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initrefserverlist.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initrefserverlist.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-initrefserverlist.c' object='lib_internal/lib_internal_libinternal_diet_a-matchlist-initrefserverlist.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-initrefserverlist.obj `if test -f 'lib_internal/matchlist-initrefserverlist.c'; then $(CYGPATH_W) 'lib_internal/matchlist-initrefserverlist.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-initrefserverlist.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-matchlist-printid.o: lib_internal/matchlist-printid.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-matchlist-printid.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-printid.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-printid.o `test -f 'lib_internal/matchlist-printid.c' || echo '$(srcdir)/'`lib_internal/matchlist-printid.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-printid.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-printid.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-printid.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-printid.c' object='lib_internal/lib_internal_libinternal_diet_a-matchlist-printid.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-printid.o `test -f 'lib_internal/matchlist-printid.c' || echo '$(srcdir)/'`lib_internal/matchlist-printid.c
+
+lib_internal/lib_internal_libinternal_diet_a-matchlist-printid.obj: lib_internal/matchlist-printid.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-matchlist-printid.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-printid.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-printid.obj `if test -f 'lib_internal/matchlist-printid.c'; then $(CYGPATH_W) 'lib_internal/matchlist-printid.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-printid.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-printid.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-printid.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-printid.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-printid.c' object='lib_internal/lib_internal_libinternal_diet_a-matchlist-printid.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-printid.obj `if test -f 'lib_internal/matchlist-printid.c'; then $(CYGPATH_W) 'lib_internal/matchlist-printid.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-printid.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-matchvserverinfo-free.o: lib_internal/matchvserverinfo-free.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-matchvserverinfo-free.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchvserverinfo-free.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-matchvserverinfo-free.o `test -f 'lib_internal/matchvserverinfo-free.c' || echo '$(srcdir)/'`lib_internal/matchvserverinfo-free.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchvserverinfo-free.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchvserverinfo-free.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchvserverinfo-free.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchvserverinfo-free.c' object='lib_internal/lib_internal_libinternal_diet_a-matchvserverinfo-free.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-matchvserverinfo-free.o `test -f 'lib_internal/matchvserverinfo-free.c' || echo '$(srcdir)/'`lib_internal/matchvserverinfo-free.c
+
+lib_internal/lib_internal_libinternal_diet_a-matchvserverinfo-free.obj: lib_internal/matchvserverinfo-free.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-matchvserverinfo-free.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchvserverinfo-free.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-matchvserverinfo-free.obj `if test -f 'lib_internal/matchvserverinfo-free.c'; then $(CYGPATH_W) 'lib_internal/matchvserverinfo-free.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchvserverinfo-free.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchvserverinfo-free.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchvserverinfo-free.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchvserverinfo-free.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchvserverinfo-free.c' object='lib_internal/lib_internal_libinternal_diet_a-matchvserverinfo-free.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-matchvserverinfo-free.obj `if test -f 'lib_internal/matchvserverinfo-free.c'; then $(CYGPATH_W) 'lib_internal/matchvserverinfo-free.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchvserverinfo-free.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-pathinfo-append.o: lib_internal/pathinfo-append.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-pathinfo-append.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-pathinfo-append.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-pathinfo-append.o `test -f 'lib_internal/pathinfo-append.c' || echo '$(srcdir)/'`lib_internal/pathinfo-append.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-pathinfo-append.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-pathinfo-append.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-pathinfo-append.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/pathinfo-append.c' object='lib_internal/lib_internal_libinternal_diet_a-pathinfo-append.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-pathinfo-append.o `test -f 'lib_internal/pathinfo-append.c' || echo '$(srcdir)/'`lib_internal/pathinfo-append.c
+
+lib_internal/lib_internal_libinternal_diet_a-pathinfo-append.obj: lib_internal/pathinfo-append.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-pathinfo-append.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-pathinfo-append.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-pathinfo-append.obj `if test -f 'lib_internal/pathinfo-append.c'; then $(CYGPATH_W) 'lib_internal/pathinfo-append.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/pathinfo-append.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-pathinfo-append.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-pathinfo-append.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-pathinfo-append.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/pathinfo-append.c' object='lib_internal/lib_internal_libinternal_diet_a-pathinfo-append.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-pathinfo-append.obj `if test -f 'lib_internal/pathinfo-append.c'; then $(CYGPATH_W) 'lib_internal/pathinfo-append.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/pathinfo-append.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-pathinfo-test.o: lib_internal/pathinfo-test.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-pathinfo-test.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-pathinfo-test.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-pathinfo-test.o `test -f 'lib_internal/pathinfo-test.c' || echo '$(srcdir)/'`lib_internal/pathinfo-test.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-pathinfo-test.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-pathinfo-test.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-pathinfo-test.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/pathinfo-test.c' object='lib_internal/lib_internal_libinternal_diet_a-pathinfo-test.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-pathinfo-test.o `test -f 'lib_internal/pathinfo-test.c' || echo '$(srcdir)/'`lib_internal/pathinfo-test.c
+
+lib_internal/lib_internal_libinternal_diet_a-pathinfo-test.obj: lib_internal/pathinfo-test.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-pathinfo-test.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-pathinfo-test.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-pathinfo-test.obj `if test -f 'lib_internal/pathinfo-test.c'; then $(CYGPATH_W) 'lib_internal/pathinfo-test.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/pathinfo-test.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-pathinfo-test.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-pathinfo-test.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-pathinfo-test.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/pathinfo-test.c' object='lib_internal/lib_internal_libinternal_diet_a-pathinfo-test.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-pathinfo-test.obj `if test -f 'lib_internal/pathinfo-test.c'; then $(CYGPATH_W) 'lib_internal/pathinfo-test.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/pathinfo-test.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-switchtowatchxid.o: lib_internal/switchtowatchxid.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-switchtowatchxid.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-switchtowatchxid.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-switchtowatchxid.o `test -f 'lib_internal/switchtowatchxid.c' || echo '$(srcdir)/'`lib_internal/switchtowatchxid.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-switchtowatchxid.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-switchtowatchxid.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-switchtowatchxid.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/switchtowatchxid.c' object='lib_internal/lib_internal_libinternal_diet_a-switchtowatchxid.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-switchtowatchxid.o `test -f 'lib_internal/switchtowatchxid.c' || echo '$(srcdir)/'`lib_internal/switchtowatchxid.c
+
+lib_internal/lib_internal_libinternal_diet_a-switchtowatchxid.obj: lib_internal/switchtowatchxid.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-switchtowatchxid.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-switchtowatchxid.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-switchtowatchxid.obj `if test -f 'lib_internal/switchtowatchxid.c'; then $(CYGPATH_W) 'lib_internal/switchtowatchxid.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/switchtowatchxid.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-switchtowatchxid.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-switchtowatchxid.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-switchtowatchxid.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/switchtowatchxid.c' object='lib_internal/lib_internal_libinternal_diet_a-switchtowatchxid.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-switchtowatchxid.obj `if test -f 'lib_internal/switchtowatchxid.c'; then $(CYGPATH_W) 'lib_internal/switchtowatchxid.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/switchtowatchxid.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-unify-deunify.o: lib_internal/unify-deunify.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-unify-deunify.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-deunify.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-unify-deunify.o `test -f 'lib_internal/unify-deunify.c' || echo '$(srcdir)/'`lib_internal/unify-deunify.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-deunify.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-deunify.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-deunify.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/unify-deunify.c' object='lib_internal/lib_internal_libinternal_diet_a-unify-deunify.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-unify-deunify.o `test -f 'lib_internal/unify-deunify.c' || echo '$(srcdir)/'`lib_internal/unify-deunify.c
+
+lib_internal/lib_internal_libinternal_diet_a-unify-deunify.obj: lib_internal/unify-deunify.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-unify-deunify.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-deunify.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-unify-deunify.obj `if test -f 'lib_internal/unify-deunify.c'; then $(CYGPATH_W) 'lib_internal/unify-deunify.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/unify-deunify.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-deunify.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-deunify.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-deunify.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/unify-deunify.c' object='lib_internal/lib_internal_libinternal_diet_a-unify-deunify.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-unify-deunify.obj `if test -f 'lib_internal/unify-deunify.c'; then $(CYGPATH_W) 'lib_internal/unify-deunify.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/unify-deunify.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-unify-settime.o: lib_internal/unify-settime.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-unify-settime.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-settime.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-unify-settime.o `test -f 'lib_internal/unify-settime.c' || echo '$(srcdir)/'`lib_internal/unify-settime.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-settime.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-settime.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-settime.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/unify-settime.c' object='lib_internal/lib_internal_libinternal_diet_a-unify-settime.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-unify-settime.o `test -f 'lib_internal/unify-settime.c' || echo '$(srcdir)/'`lib_internal/unify-settime.c
+
+lib_internal/lib_internal_libinternal_diet_a-unify-settime.obj: lib_internal/unify-settime.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-unify-settime.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-settime.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-unify-settime.obj `if test -f 'lib_internal/unify-settime.c'; then $(CYGPATH_W) 'lib_internal/unify-settime.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/unify-settime.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-settime.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-settime.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-settime.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/unify-settime.c' object='lib_internal/lib_internal_libinternal_diet_a-unify-settime.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-unify-settime.obj `if test -f 'lib_internal/unify-settime.c'; then $(CYGPATH_W) 'lib_internal/unify-settime.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/unify-settime.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-unify-unify.o: lib_internal/unify-unify.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-unify-unify.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-unify.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-unify-unify.o `test -f 'lib_internal/unify-unify.c' || echo '$(srcdir)/'`lib_internal/unify-unify.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-unify.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-unify.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-unify.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/unify-unify.c' object='lib_internal/lib_internal_libinternal_diet_a-unify-unify.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-unify-unify.o `test -f 'lib_internal/unify-unify.c' || echo '$(srcdir)/'`lib_internal/unify-unify.c
+
+lib_internal/lib_internal_libinternal_diet_a-unify-unify.obj: lib_internal/unify-unify.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-unify-unify.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-unify.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-unify-unify.obj `if test -f 'lib_internal/unify-unify.c'; then $(CYGPATH_W) 'lib_internal/unify-unify.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/unify-unify.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-unify.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-unify.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-unify.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/unify-unify.c' object='lib_internal/lib_internal_libinternal_diet_a-unify-unify.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-unify-unify.obj `if test -f 'lib_internal/unify-unify.c'; then $(CYGPATH_W) 'lib_internal/unify-unify.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/unify-unify.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-unify-isiunlinkable.o: lib_internal/unify-isiunlinkable.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-unify-isiunlinkable.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-isiunlinkable.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-unify-isiunlinkable.o `test -f 'lib_internal/unify-isiunlinkable.c' || echo '$(srcdir)/'`lib_internal/unify-isiunlinkable.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-isiunlinkable.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-isiunlinkable.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-isiunlinkable.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/unify-isiunlinkable.c' object='lib_internal/lib_internal_libinternal_diet_a-unify-isiunlinkable.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-unify-isiunlinkable.o `test -f 'lib_internal/unify-isiunlinkable.c' || echo '$(srcdir)/'`lib_internal/unify-isiunlinkable.c
+
+lib_internal/lib_internal_libinternal_diet_a-unify-isiunlinkable.obj: lib_internal/unify-isiunlinkable.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-unify-isiunlinkable.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-isiunlinkable.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-unify-isiunlinkable.obj `if test -f 'lib_internal/unify-isiunlinkable.c'; then $(CYGPATH_W) 'lib_internal/unify-isiunlinkable.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/unify-isiunlinkable.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-isiunlinkable.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-isiunlinkable.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-isiunlinkable.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/unify-isiunlinkable.c' object='lib_internal/lib_internal_libinternal_diet_a-unify-isiunlinkable.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-unify-isiunlinkable.obj `if test -f 'lib_internal/unify-isiunlinkable.c'; then $(CYGPATH_W) 'lib_internal/unify-isiunlinkable.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/unify-isiunlinkable.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-util-canonify.o: lib_internal/util-canonify.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-util-canonify.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-canonify.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-util-canonify.o `test -f 'lib_internal/util-canonify.c' || echo '$(srcdir)/'`lib_internal/util-canonify.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-canonify.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-canonify.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-canonify.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/util-canonify.c' object='lib_internal/lib_internal_libinternal_diet_a-util-canonify.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-util-canonify.o `test -f 'lib_internal/util-canonify.c' || echo '$(srcdir)/'`lib_internal/util-canonify.c
+
+lib_internal/lib_internal_libinternal_diet_a-util-canonify.obj: lib_internal/util-canonify.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-util-canonify.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-canonify.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-util-canonify.obj `if test -f 'lib_internal/util-canonify.c'; then $(CYGPATH_W) 'lib_internal/util-canonify.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/util-canonify.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-canonify.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-canonify.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-canonify.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/util-canonify.c' object='lib_internal/lib_internal_libinternal_diet_a-util-canonify.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-util-canonify.obj `if test -f 'lib_internal/util-canonify.c'; then $(CYGPATH_W) 'lib_internal/util-canonify.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/util-canonify.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-util-exitlikeprocess.o: lib_internal/util-exitlikeprocess.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-util-exitlikeprocess.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-exitlikeprocess.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-util-exitlikeprocess.o `test -f 'lib_internal/util-exitlikeprocess.c' || echo '$(srcdir)/'`lib_internal/util-exitlikeprocess.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-exitlikeprocess.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-exitlikeprocess.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-exitlikeprocess.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/util-exitlikeprocess.c' object='lib_internal/lib_internal_libinternal_diet_a-util-exitlikeprocess.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-util-exitlikeprocess.o `test -f 'lib_internal/util-exitlikeprocess.c' || echo '$(srcdir)/'`lib_internal/util-exitlikeprocess.c
+
+lib_internal/lib_internal_libinternal_diet_a-util-exitlikeprocess.obj: lib_internal/util-exitlikeprocess.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-util-exitlikeprocess.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-exitlikeprocess.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-util-exitlikeprocess.obj `if test -f 'lib_internal/util-exitlikeprocess.c'; then $(CYGPATH_W) 'lib_internal/util-exitlikeprocess.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/util-exitlikeprocess.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-exitlikeprocess.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-exitlikeprocess.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-exitlikeprocess.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/util-exitlikeprocess.c' object='lib_internal/lib_internal_libinternal_diet_a-util-exitlikeprocess.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-util-exitlikeprocess.obj `if test -f 'lib_internal/util-exitlikeprocess.c'; then $(CYGPATH_W) 'lib_internal/util-exitlikeprocess.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/util-exitlikeprocess.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-util-isnumber.o: lib_internal/util-isnumber.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-util-isnumber.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-isnumber.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-util-isnumber.o `test -f 'lib_internal/util-isnumber.c' || echo '$(srcdir)/'`lib_internal/util-isnumber.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-isnumber.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-isnumber.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-isnumber.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/util-isnumber.c' object='lib_internal/lib_internal_libinternal_diet_a-util-isnumber.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-util-isnumber.o `test -f 'lib_internal/util-isnumber.c' || echo '$(srcdir)/'`lib_internal/util-isnumber.c
+
+lib_internal/lib_internal_libinternal_diet_a-util-isnumber.obj: lib_internal/util-isnumber.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-util-isnumber.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-isnumber.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-util-isnumber.obj `if test -f 'lib_internal/util-isnumber.c'; then $(CYGPATH_W) 'lib_internal/util-isnumber.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/util-isnumber.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-isnumber.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-isnumber.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-isnumber.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/util-isnumber.c' object='lib_internal/lib_internal_libinternal_diet_a-util-isnumber.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-util-isnumber.obj `if test -f 'lib_internal/util-isnumber.c'; then $(CYGPATH_W) 'lib_internal/util-isnumber.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/util-isnumber.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-util-lockfile.o: lib_internal/util-lockfile.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-util-lockfile.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-lockfile.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-util-lockfile.o `test -f 'lib_internal/util-lockfile.c' || echo '$(srcdir)/'`lib_internal/util-lockfile.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-lockfile.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-lockfile.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-lockfile.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/util-lockfile.c' object='lib_internal/lib_internal_libinternal_diet_a-util-lockfile.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-util-lockfile.o `test -f 'lib_internal/util-lockfile.c' || echo '$(srcdir)/'`lib_internal/util-lockfile.c
+
+lib_internal/lib_internal_libinternal_diet_a-util-lockfile.obj: lib_internal/util-lockfile.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-util-lockfile.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-lockfile.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-util-lockfile.obj `if test -f 'lib_internal/util-lockfile.c'; then $(CYGPATH_W) 'lib_internal/util-lockfile.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/util-lockfile.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-lockfile.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-lockfile.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-lockfile.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/util-lockfile.c' object='lib_internal/lib_internal_libinternal_diet_a-util-lockfile.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-util-lockfile.obj `if test -f 'lib_internal/util-lockfile.c'; then $(CYGPATH_W) 'lib_internal/util-lockfile.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/util-lockfile.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-util-safechdir.o: lib_internal/util-safechdir.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-util-safechdir.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-safechdir.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-util-safechdir.o `test -f 'lib_internal/util-safechdir.c' || echo '$(srcdir)/'`lib_internal/util-safechdir.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-safechdir.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-safechdir.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-safechdir.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/util-safechdir.c' object='lib_internal/lib_internal_libinternal_diet_a-util-safechdir.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-util-safechdir.o `test -f 'lib_internal/util-safechdir.c' || echo '$(srcdir)/'`lib_internal/util-safechdir.c
+
+lib_internal/lib_internal_libinternal_diet_a-util-safechdir.obj: lib_internal/util-safechdir.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-util-safechdir.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-safechdir.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-util-safechdir.obj `if test -f 'lib_internal/util-safechdir.c'; then $(CYGPATH_W) 'lib_internal/util-safechdir.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/util-safechdir.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-safechdir.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-safechdir.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-util-safechdir.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/util-safechdir.c' object='lib_internal/lib_internal_libinternal_diet_a-util-safechdir.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-util-safechdir.obj `if test -f 'lib_internal/util-safechdir.c'; then $(CYGPATH_W) 'lib_internal/util-safechdir.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/util-safechdir.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-command-appendparameter.o: lib_internal/command-appendparameter.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-command-appendparameter.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-appendparameter.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-command-appendparameter.o `test -f 'lib_internal/command-appendparameter.c' || echo '$(srcdir)/'`lib_internal/command-appendparameter.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-appendparameter.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-appendparameter.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-appendparameter.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-appendparameter.c' object='lib_internal/lib_internal_libinternal_diet_a-command-appendparameter.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-command-appendparameter.o `test -f 'lib_internal/command-appendparameter.c' || echo '$(srcdir)/'`lib_internal/command-appendparameter.c
+
+lib_internal/lib_internal_libinternal_diet_a-command-appendparameter.obj: lib_internal/command-appendparameter.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-command-appendparameter.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-appendparameter.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-command-appendparameter.obj `if test -f 'lib_internal/command-appendparameter.c'; then $(CYGPATH_W) 'lib_internal/command-appendparameter.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-appendparameter.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-appendparameter.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-appendparameter.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-appendparameter.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-appendparameter.c' object='lib_internal/lib_internal_libinternal_diet_a-command-appendparameter.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-command-appendparameter.obj `if test -f 'lib_internal/command-appendparameter.c'; then $(CYGPATH_W) 'lib_internal/command-appendparameter.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-appendparameter.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-command-setparams.o: lib_internal/command-setparams.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-command-setparams.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-setparams.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-command-setparams.o `test -f 'lib_internal/command-setparams.c' || echo '$(srcdir)/'`lib_internal/command-setparams.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-setparams.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-setparams.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-setparams.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-setparams.c' object='lib_internal/lib_internal_libinternal_diet_a-command-setparams.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-command-setparams.o `test -f 'lib_internal/command-setparams.c' || echo '$(srcdir)/'`lib_internal/command-setparams.c
+
+lib_internal/lib_internal_libinternal_diet_a-command-setparams.obj: lib_internal/command-setparams.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-command-setparams.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-setparams.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-command-setparams.obj `if test -f 'lib_internal/command-setparams.c'; then $(CYGPATH_W) 'lib_internal/command-setparams.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-setparams.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-setparams.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-setparams.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-setparams.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-setparams.c' object='lib_internal/lib_internal_libinternal_diet_a-command-setparams.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-command-setparams.obj `if test -f 'lib_internal/command-setparams.c'; then $(CYGPATH_W) 'lib_internal/command-setparams.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-setparams.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-command-exec.o: lib_internal/command-exec.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-command-exec.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-exec.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-command-exec.o `test -f 'lib_internal/command-exec.c' || echo '$(srcdir)/'`lib_internal/command-exec.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-exec.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-exec.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-exec.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-exec.c' object='lib_internal/lib_internal_libinternal_diet_a-command-exec.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-command-exec.o `test -f 'lib_internal/command-exec.c' || echo '$(srcdir)/'`lib_internal/command-exec.c
+
+lib_internal/lib_internal_libinternal_diet_a-command-exec.obj: lib_internal/command-exec.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-command-exec.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-exec.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-command-exec.obj `if test -f 'lib_internal/command-exec.c'; then $(CYGPATH_W) 'lib_internal/command-exec.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-exec.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-exec.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-exec.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-exec.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-exec.c' object='lib_internal/lib_internal_libinternal_diet_a-command-exec.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-command-exec.obj `if test -f 'lib_internal/command-exec.c'; then $(CYGPATH_W) 'lib_internal/command-exec.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-exec.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-command-free.o: lib_internal/command-free.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-command-free.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-free.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-command-free.o `test -f 'lib_internal/command-free.c' || echo '$(srcdir)/'`lib_internal/command-free.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-free.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-free.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-free.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-free.c' object='lib_internal/lib_internal_libinternal_diet_a-command-free.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-command-free.o `test -f 'lib_internal/command-free.c' || echo '$(srcdir)/'`lib_internal/command-free.c
+
+lib_internal/lib_internal_libinternal_diet_a-command-free.obj: lib_internal/command-free.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-command-free.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-free.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-command-free.obj `if test -f 'lib_internal/command-free.c'; then $(CYGPATH_W) 'lib_internal/command-free.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-free.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-free.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-free.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-free.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-free.c' object='lib_internal/lib_internal_libinternal_diet_a-command-free.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-command-free.obj `if test -f 'lib_internal/command-free.c'; then $(CYGPATH_W) 'lib_internal/command-free.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-free.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-command-init.o: lib_internal/command-init.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-command-init.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-init.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-command-init.o `test -f 'lib_internal/command-init.c' || echo '$(srcdir)/'`lib_internal/command-init.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-init.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-init.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-init.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-init.c' object='lib_internal/lib_internal_libinternal_diet_a-command-init.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-command-init.o `test -f 'lib_internal/command-init.c' || echo '$(srcdir)/'`lib_internal/command-init.c
+
+lib_internal/lib_internal_libinternal_diet_a-command-init.obj: lib_internal/command-init.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-command-init.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-init.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-command-init.obj `if test -f 'lib_internal/command-init.c'; then $(CYGPATH_W) 'lib_internal/command-init.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-init.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-init.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-init.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-init.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-init.c' object='lib_internal/lib_internal_libinternal_diet_a-command-init.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-command-init.obj `if test -f 'lib_internal/command-init.c'; then $(CYGPATH_W) 'lib_internal/command-init.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-init.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-command-reset.o: lib_internal/command-reset.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-command-reset.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-reset.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-command-reset.o `test -f 'lib_internal/command-reset.c' || echo '$(srcdir)/'`lib_internal/command-reset.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-reset.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-reset.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-reset.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-reset.c' object='lib_internal/lib_internal_libinternal_diet_a-command-reset.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-command-reset.o `test -f 'lib_internal/command-reset.c' || echo '$(srcdir)/'`lib_internal/command-reset.c
+
+lib_internal/lib_internal_libinternal_diet_a-command-reset.obj: lib_internal/command-reset.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-command-reset.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-reset.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-command-reset.obj `if test -f 'lib_internal/command-reset.c'; then $(CYGPATH_W) 'lib_internal/command-reset.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-reset.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-reset.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-reset.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-reset.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-reset.c' object='lib_internal/lib_internal_libinternal_diet_a-command-reset.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-command-reset.obj `if test -f 'lib_internal/command-reset.c'; then $(CYGPATH_W) 'lib_internal/command-reset.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-reset.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-command-wait.o: lib_internal/command-wait.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-command-wait.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-wait.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-command-wait.o `test -f 'lib_internal/command-wait.c' || echo '$(srcdir)/'`lib_internal/command-wait.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-wait.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-wait.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-wait.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-wait.c' object='lib_internal/lib_internal_libinternal_diet_a-command-wait.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-command-wait.o `test -f 'lib_internal/command-wait.c' || echo '$(srcdir)/'`lib_internal/command-wait.c
+
+lib_internal/lib_internal_libinternal_diet_a-command-wait.obj: lib_internal/command-wait.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-command-wait.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-wait.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-command-wait.obj `if test -f 'lib_internal/command-wait.c'; then $(CYGPATH_W) 'lib_internal/command-wait.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-wait.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-wait.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-wait.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-command-wait.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-wait.c' object='lib_internal/lib_internal_libinternal_diet_a-command-wait.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-command-wait.obj `if test -f 'lib_internal/command-wait.c'; then $(CYGPATH_W) 'lib_internal/command-wait.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-wait.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-filecfg-iteratemultiline.o: lib_internal/filecfg-iteratemultiline.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-filecfg-iteratemultiline.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-iteratemultiline.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-filecfg-iteratemultiline.o `test -f 'lib_internal/filecfg-iteratemultiline.c' || echo '$(srcdir)/'`lib_internal/filecfg-iteratemultiline.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-iteratemultiline.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-iteratemultiline.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-iteratemultiline.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/filecfg-iteratemultiline.c' object='lib_internal/lib_internal_libinternal_diet_a-filecfg-iteratemultiline.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-filecfg-iteratemultiline.o `test -f 'lib_internal/filecfg-iteratemultiline.c' || echo '$(srcdir)/'`lib_internal/filecfg-iteratemultiline.c
+
+lib_internal/lib_internal_libinternal_diet_a-filecfg-iteratemultiline.obj: lib_internal/filecfg-iteratemultiline.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-filecfg-iteratemultiline.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-iteratemultiline.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-filecfg-iteratemultiline.obj `if test -f 'lib_internal/filecfg-iteratemultiline.c'; then $(CYGPATH_W) 'lib_internal/filecfg-iteratemultiline.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/filecfg-iteratemultiline.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-iteratemultiline.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-iteratemultiline.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-iteratemultiline.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/filecfg-iteratemultiline.c' object='lib_internal/lib_internal_libinternal_diet_a-filecfg-iteratemultiline.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-filecfg-iteratemultiline.obj `if test -f 'lib_internal/filecfg-iteratemultiline.c'; then $(CYGPATH_W) 'lib_internal/filecfg-iteratemultiline.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/filecfg-iteratemultiline.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-filecfg-readentryflag.o: lib_internal/filecfg-readentryflag.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-filecfg-readentryflag.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-readentryflag.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-filecfg-readentryflag.o `test -f 'lib_internal/filecfg-readentryflag.c' || echo '$(srcdir)/'`lib_internal/filecfg-readentryflag.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-readentryflag.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-readentryflag.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-readentryflag.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/filecfg-readentryflag.c' object='lib_internal/lib_internal_libinternal_diet_a-filecfg-readentryflag.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-filecfg-readentryflag.o `test -f 'lib_internal/filecfg-readentryflag.c' || echo '$(srcdir)/'`lib_internal/filecfg-readentryflag.c
+
+lib_internal/lib_internal_libinternal_diet_a-filecfg-readentryflag.obj: lib_internal/filecfg-readentryflag.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-filecfg-readentryflag.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-readentryflag.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-filecfg-readentryflag.obj `if test -f 'lib_internal/filecfg-readentryflag.c'; then $(CYGPATH_W) 'lib_internal/filecfg-readentryflag.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/filecfg-readentryflag.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-readentryflag.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-readentryflag.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-readentryflag.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/filecfg-readentryflag.c' object='lib_internal/lib_internal_libinternal_diet_a-filecfg-readentryflag.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-filecfg-readentryflag.obj `if test -f 'lib_internal/filecfg-readentryflag.c'; then $(CYGPATH_W) 'lib_internal/filecfg-readentryflag.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/filecfg-readentryflag.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-filecfg-readentrystr.o: lib_internal/filecfg-readentrystr.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-filecfg-readentrystr.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-readentrystr.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-filecfg-readentrystr.o `test -f 'lib_internal/filecfg-readentrystr.c' || echo '$(srcdir)/'`lib_internal/filecfg-readentrystr.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-readentrystr.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-readentrystr.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-readentrystr.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/filecfg-readentrystr.c' object='lib_internal/lib_internal_libinternal_diet_a-filecfg-readentrystr.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-filecfg-readentrystr.o `test -f 'lib_internal/filecfg-readentrystr.c' || echo '$(srcdir)/'`lib_internal/filecfg-readentrystr.c
+
+lib_internal/lib_internal_libinternal_diet_a-filecfg-readentrystr.obj: lib_internal/filecfg-readentrystr.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-filecfg-readentrystr.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-readentrystr.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-filecfg-readentrystr.obj `if test -f 'lib_internal/filecfg-readentrystr.c'; then $(CYGPATH_W) 'lib_internal/filecfg-readentrystr.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/filecfg-readentrystr.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-readentrystr.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-readentrystr.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-filecfg-readentrystr.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/filecfg-readentrystr.c' object='lib_internal/lib_internal_libinternal_diet_a-filecfg-readentrystr.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-filecfg-readentrystr.obj `if test -f 'lib_internal/filecfg-readentrystr.c'; then $(CYGPATH_W) 'lib_internal/filecfg-readentrystr.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/filecfg-readentrystr.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-matchlist-initbyvserver.o: lib_internal/matchlist-initbyvserver.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-matchlist-initbyvserver.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initbyvserver.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-initbyvserver.o `test -f 'lib_internal/matchlist-initbyvserver.c' || echo '$(srcdir)/'`lib_internal/matchlist-initbyvserver.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initbyvserver.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initbyvserver.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initbyvserver.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-initbyvserver.c' object='lib_internal/lib_internal_libinternal_diet_a-matchlist-initbyvserver.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-initbyvserver.o `test -f 'lib_internal/matchlist-initbyvserver.c' || echo '$(srcdir)/'`lib_internal/matchlist-initbyvserver.c
+
+lib_internal/lib_internal_libinternal_diet_a-matchlist-initbyvserver.obj: lib_internal/matchlist-initbyvserver.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-matchlist-initbyvserver.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initbyvserver.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-initbyvserver.obj `if test -f 'lib_internal/matchlist-initbyvserver.c'; then $(CYGPATH_W) 'lib_internal/matchlist-initbyvserver.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-initbyvserver.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initbyvserver.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initbyvserver.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchlist-initbyvserver.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-initbyvserver.c' object='lib_internal/lib_internal_libinternal_diet_a-matchlist-initbyvserver.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-matchlist-initbyvserver.obj `if test -f 'lib_internal/matchlist-initbyvserver.c'; then $(CYGPATH_W) 'lib_internal/matchlist-initbyvserver.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-initbyvserver.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-matchvserverinfo-init.o: lib_internal/matchvserverinfo-init.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-matchvserverinfo-init.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchvserverinfo-init.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-matchvserverinfo-init.o `test -f 'lib_internal/matchvserverinfo-init.c' || echo '$(srcdir)/'`lib_internal/matchvserverinfo-init.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchvserverinfo-init.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchvserverinfo-init.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchvserverinfo-init.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchvserverinfo-init.c' object='lib_internal/lib_internal_libinternal_diet_a-matchvserverinfo-init.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-matchvserverinfo-init.o `test -f 'lib_internal/matchvserverinfo-init.c' || echo '$(srcdir)/'`lib_internal/matchvserverinfo-init.c
+
+lib_internal/lib_internal_libinternal_diet_a-matchvserverinfo-init.obj: lib_internal/matchvserverinfo-init.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-matchvserverinfo-init.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchvserverinfo-init.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-matchvserverinfo-init.obj `if test -f 'lib_internal/matchvserverinfo-init.c'; then $(CYGPATH_W) 'lib_internal/matchvserverinfo-init.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchvserverinfo-init.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchvserverinfo-init.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchvserverinfo-init.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-matchvserverinfo-init.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchvserverinfo-init.c' object='lib_internal/lib_internal_libinternal_diet_a-matchvserverinfo-init.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-matchvserverinfo-init.obj `if test -f 'lib_internal/matchvserverinfo-init.c'; then $(CYGPATH_W) 'lib_internal/matchvserverinfo-init.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchvserverinfo-init.c'; fi`
+
+lib_internal/lib_internal_libinternal_diet_a-unify-copy.o: lib_internal/unify-copy.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-unify-copy.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-copy.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-unify-copy.o `test -f 'lib_internal/unify-copy.c' || echo '$(srcdir)/'`lib_internal/unify-copy.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-copy.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-copy.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-copy.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/unify-copy.c' object='lib_internal/lib_internal_libinternal_diet_a-unify-copy.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-unify-copy.o `test -f 'lib_internal/unify-copy.c' || echo '$(srcdir)/'`lib_internal/unify-copy.c
+
+lib_internal/lib_internal_libinternal_diet_a-unify-copy.obj: lib_internal/unify-copy.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_diet_a-unify-copy.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-copy.Tpo" -c -o lib_internal/lib_internal_libinternal_diet_a-unify-copy.obj `if test -f 'lib_internal/unify-copy.c'; then $(CYGPATH_W) 'lib_internal/unify-copy.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/unify-copy.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-copy.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-copy.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_diet_a-unify-copy.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/unify-copy.c' object='lib_internal/lib_internal_libinternal_diet_a-unify-copy.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_diet_a-unify-copy.obj `if test -f 'lib_internal/unify-copy.c'; then $(CYGPATH_W) 'lib_internal/unify-copy.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/unify-copy.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-errinfo-writeerrno.o: lib_internal/errinfo-writeerrno.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-errinfo-writeerrno.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-errinfo-writeerrno.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-errinfo-writeerrno.o `test -f 'lib_internal/errinfo-writeerrno.c' || echo '$(srcdir)/'`lib_internal/errinfo-writeerrno.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-errinfo-writeerrno.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-errinfo-writeerrno.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-errinfo-writeerrno.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/errinfo-writeerrno.c' object='lib_internal/lib_internal_libinternal_glibc_a-errinfo-writeerrno.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-errinfo-writeerrno.o `test -f 'lib_internal/errinfo-writeerrno.c' || echo '$(srcdir)/'`lib_internal/errinfo-writeerrno.c
+
+lib_internal/lib_internal_libinternal_glibc_a-errinfo-writeerrno.obj: lib_internal/errinfo-writeerrno.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-errinfo-writeerrno.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-errinfo-writeerrno.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-errinfo-writeerrno.obj `if test -f 'lib_internal/errinfo-writeerrno.c'; then $(CYGPATH_W) 'lib_internal/errinfo-writeerrno.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/errinfo-writeerrno.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-errinfo-writeerrno.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-errinfo-writeerrno.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-errinfo-writeerrno.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/errinfo-writeerrno.c' object='lib_internal/lib_internal_libinternal_glibc_a-errinfo-writeerrno.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-errinfo-writeerrno.obj `if test -f 'lib_internal/errinfo-writeerrno.c'; then $(CYGPATH_W) 'lib_internal/errinfo-writeerrno.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/errinfo-writeerrno.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-jailintotempdir.o: lib_internal/jailintotempdir.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-jailintotempdir.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-jailintotempdir.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-jailintotempdir.o `test -f 'lib_internal/jailintotempdir.c' || echo '$(srcdir)/'`lib_internal/jailintotempdir.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-jailintotempdir.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-jailintotempdir.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-jailintotempdir.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/jailintotempdir.c' object='lib_internal/lib_internal_libinternal_glibc_a-jailintotempdir.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-jailintotempdir.o `test -f 'lib_internal/jailintotempdir.c' || echo '$(srcdir)/'`lib_internal/jailintotempdir.c
+
+lib_internal/lib_internal_libinternal_glibc_a-jailintotempdir.obj: lib_internal/jailintotempdir.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-jailintotempdir.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-jailintotempdir.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-jailintotempdir.obj `if test -f 'lib_internal/jailintotempdir.c'; then $(CYGPATH_W) 'lib_internal/jailintotempdir.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/jailintotempdir.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-jailintotempdir.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-jailintotempdir.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-jailintotempdir.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/jailintotempdir.c' object='lib_internal/lib_internal_libinternal_glibc_a-jailintotempdir.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-jailintotempdir.obj `if test -f 'lib_internal/jailintotempdir.c'; then $(CYGPATH_W) 'lib_internal/jailintotempdir.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/jailintotempdir.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-matchlist-appendfiles.o: lib_internal/matchlist-appendfiles.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-matchlist-appendfiles.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-appendfiles.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-appendfiles.o `test -f 'lib_internal/matchlist-appendfiles.c' || echo '$(srcdir)/'`lib_internal/matchlist-appendfiles.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-appendfiles.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-appendfiles.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-appendfiles.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-appendfiles.c' object='lib_internal/lib_internal_libinternal_glibc_a-matchlist-appendfiles.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-appendfiles.o `test -f 'lib_internal/matchlist-appendfiles.c' || echo '$(srcdir)/'`lib_internal/matchlist-appendfiles.c
+
+lib_internal/lib_internal_libinternal_glibc_a-matchlist-appendfiles.obj: lib_internal/matchlist-appendfiles.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-matchlist-appendfiles.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-appendfiles.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-appendfiles.obj `if test -f 'lib_internal/matchlist-appendfiles.c'; then $(CYGPATH_W) 'lib_internal/matchlist-appendfiles.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-appendfiles.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-appendfiles.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-appendfiles.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-appendfiles.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-appendfiles.c' object='lib_internal/lib_internal_libinternal_glibc_a-matchlist-appendfiles.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-appendfiles.obj `if test -f 'lib_internal/matchlist-appendfiles.c'; then $(CYGPATH_W) 'lib_internal/matchlist-appendfiles.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-appendfiles.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-matchlist-compare.o: lib_internal/matchlist-compare.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-matchlist-compare.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-compare.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-compare.o `test -f 'lib_internal/matchlist-compare.c' || echo '$(srcdir)/'`lib_internal/matchlist-compare.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-compare.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-compare.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-compare.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-compare.c' object='lib_internal/lib_internal_libinternal_glibc_a-matchlist-compare.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-compare.o `test -f 'lib_internal/matchlist-compare.c' || echo '$(srcdir)/'`lib_internal/matchlist-compare.c
+
+lib_internal/lib_internal_libinternal_glibc_a-matchlist-compare.obj: lib_internal/matchlist-compare.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-matchlist-compare.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-compare.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-compare.obj `if test -f 'lib_internal/matchlist-compare.c'; then $(CYGPATH_W) 'lib_internal/matchlist-compare.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-compare.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-compare.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-compare.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-compare.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-compare.c' object='lib_internal/lib_internal_libinternal_glibc_a-matchlist-compare.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-compare.obj `if test -f 'lib_internal/matchlist-compare.c'; then $(CYGPATH_W) 'lib_internal/matchlist-compare.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-compare.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-matchlist-destroy.o: lib_internal/matchlist-destroy.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-matchlist-destroy.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-destroy.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-destroy.o `test -f 'lib_internal/matchlist-destroy.c' || echo '$(srcdir)/'`lib_internal/matchlist-destroy.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-destroy.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-destroy.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-destroy.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-destroy.c' object='lib_internal/lib_internal_libinternal_glibc_a-matchlist-destroy.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-destroy.o `test -f 'lib_internal/matchlist-destroy.c' || echo '$(srcdir)/'`lib_internal/matchlist-destroy.c
+
+lib_internal/lib_internal_libinternal_glibc_a-matchlist-destroy.obj: lib_internal/matchlist-destroy.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-matchlist-destroy.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-destroy.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-destroy.obj `if test -f 'lib_internal/matchlist-destroy.c'; then $(CYGPATH_W) 'lib_internal/matchlist-destroy.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-destroy.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-destroy.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-destroy.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-destroy.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-destroy.c' object='lib_internal/lib_internal_libinternal_glibc_a-matchlist-destroy.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-destroy.obj `if test -f 'lib_internal/matchlist-destroy.c'; then $(CYGPATH_W) 'lib_internal/matchlist-destroy.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-destroy.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-matchlist-init.o: lib_internal/matchlist-init.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-matchlist-init.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-init.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-init.o `test -f 'lib_internal/matchlist-init.c' || echo '$(srcdir)/'`lib_internal/matchlist-init.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-init.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-init.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-init.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-init.c' object='lib_internal/lib_internal_libinternal_glibc_a-matchlist-init.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-init.o `test -f 'lib_internal/matchlist-init.c' || echo '$(srcdir)/'`lib_internal/matchlist-init.c
+
+lib_internal/lib_internal_libinternal_glibc_a-matchlist-init.obj: lib_internal/matchlist-init.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-matchlist-init.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-init.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-init.obj `if test -f 'lib_internal/matchlist-init.c'; then $(CYGPATH_W) 'lib_internal/matchlist-init.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-init.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-init.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-init.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-init.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-init.c' object='lib_internal/lib_internal_libinternal_glibc_a-matchlist-init.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-init.obj `if test -f 'lib_internal/matchlist-init.c'; then $(CYGPATH_W) 'lib_internal/matchlist-init.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-init.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-matchlist-initmanually.o: lib_internal/matchlist-initmanually.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-matchlist-initmanually.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initmanually.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-initmanually.o `test -f 'lib_internal/matchlist-initmanually.c' || echo '$(srcdir)/'`lib_internal/matchlist-initmanually.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initmanually.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initmanually.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initmanually.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-initmanually.c' object='lib_internal/lib_internal_libinternal_glibc_a-matchlist-initmanually.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-initmanually.o `test -f 'lib_internal/matchlist-initmanually.c' || echo '$(srcdir)/'`lib_internal/matchlist-initmanually.c
+
+lib_internal/lib_internal_libinternal_glibc_a-matchlist-initmanually.obj: lib_internal/matchlist-initmanually.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-matchlist-initmanually.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initmanually.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-initmanually.obj `if test -f 'lib_internal/matchlist-initmanually.c'; then $(CYGPATH_W) 'lib_internal/matchlist-initmanually.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-initmanually.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initmanually.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initmanually.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initmanually.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-initmanually.c' object='lib_internal/lib_internal_libinternal_glibc_a-matchlist-initmanually.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-initmanually.obj `if test -f 'lib_internal/matchlist-initmanually.c'; then $(CYGPATH_W) 'lib_internal/matchlist-initmanually.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-initmanually.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-matchlist-initrefserverlist.o: lib_internal/matchlist-initrefserverlist.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-matchlist-initrefserverlist.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initrefserverlist.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-initrefserverlist.o `test -f 'lib_internal/matchlist-initrefserverlist.c' || echo '$(srcdir)/'`lib_internal/matchlist-initrefserverlist.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initrefserverlist.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initrefserverlist.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initrefserverlist.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-initrefserverlist.c' object='lib_internal/lib_internal_libinternal_glibc_a-matchlist-initrefserverlist.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-initrefserverlist.o `test -f 'lib_internal/matchlist-initrefserverlist.c' || echo '$(srcdir)/'`lib_internal/matchlist-initrefserverlist.c
+
+lib_internal/lib_internal_libinternal_glibc_a-matchlist-initrefserverlist.obj: lib_internal/matchlist-initrefserverlist.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-matchlist-initrefserverlist.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initrefserverlist.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-initrefserverlist.obj `if test -f 'lib_internal/matchlist-initrefserverlist.c'; then $(CYGPATH_W) 'lib_internal/matchlist-initrefserverlist.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-initrefserverlist.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initrefserverlist.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initrefserverlist.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initrefserverlist.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-initrefserverlist.c' object='lib_internal/lib_internal_libinternal_glibc_a-matchlist-initrefserverlist.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-initrefserverlist.obj `if test -f 'lib_internal/matchlist-initrefserverlist.c'; then $(CYGPATH_W) 'lib_internal/matchlist-initrefserverlist.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-initrefserverlist.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-matchlist-printid.o: lib_internal/matchlist-printid.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-matchlist-printid.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-printid.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-printid.o `test -f 'lib_internal/matchlist-printid.c' || echo '$(srcdir)/'`lib_internal/matchlist-printid.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-printid.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-printid.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-printid.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-printid.c' object='lib_internal/lib_internal_libinternal_glibc_a-matchlist-printid.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-printid.o `test -f 'lib_internal/matchlist-printid.c' || echo '$(srcdir)/'`lib_internal/matchlist-printid.c
+
+lib_internal/lib_internal_libinternal_glibc_a-matchlist-printid.obj: lib_internal/matchlist-printid.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-matchlist-printid.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-printid.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-printid.obj `if test -f 'lib_internal/matchlist-printid.c'; then $(CYGPATH_W) 'lib_internal/matchlist-printid.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-printid.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-printid.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-printid.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-printid.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-printid.c' object='lib_internal/lib_internal_libinternal_glibc_a-matchlist-printid.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-printid.obj `if test -f 'lib_internal/matchlist-printid.c'; then $(CYGPATH_W) 'lib_internal/matchlist-printid.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-printid.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-matchvserverinfo-free.o: lib_internal/matchvserverinfo-free.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-matchvserverinfo-free.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchvserverinfo-free.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-matchvserverinfo-free.o `test -f 'lib_internal/matchvserverinfo-free.c' || echo '$(srcdir)/'`lib_internal/matchvserverinfo-free.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchvserverinfo-free.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchvserverinfo-free.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchvserverinfo-free.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchvserverinfo-free.c' object='lib_internal/lib_internal_libinternal_glibc_a-matchvserverinfo-free.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-matchvserverinfo-free.o `test -f 'lib_internal/matchvserverinfo-free.c' || echo '$(srcdir)/'`lib_internal/matchvserverinfo-free.c
+
+lib_internal/lib_internal_libinternal_glibc_a-matchvserverinfo-free.obj: lib_internal/matchvserverinfo-free.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-matchvserverinfo-free.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchvserverinfo-free.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-matchvserverinfo-free.obj `if test -f 'lib_internal/matchvserverinfo-free.c'; then $(CYGPATH_W) 'lib_internal/matchvserverinfo-free.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchvserverinfo-free.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchvserverinfo-free.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchvserverinfo-free.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchvserverinfo-free.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchvserverinfo-free.c' object='lib_internal/lib_internal_libinternal_glibc_a-matchvserverinfo-free.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-matchvserverinfo-free.obj `if test -f 'lib_internal/matchvserverinfo-free.c'; then $(CYGPATH_W) 'lib_internal/matchvserverinfo-free.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchvserverinfo-free.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-pathinfo-append.o: lib_internal/pathinfo-append.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-pathinfo-append.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-pathinfo-append.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-pathinfo-append.o `test -f 'lib_internal/pathinfo-append.c' || echo '$(srcdir)/'`lib_internal/pathinfo-append.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-pathinfo-append.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-pathinfo-append.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-pathinfo-append.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/pathinfo-append.c' object='lib_internal/lib_internal_libinternal_glibc_a-pathinfo-append.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-pathinfo-append.o `test -f 'lib_internal/pathinfo-append.c' || echo '$(srcdir)/'`lib_internal/pathinfo-append.c
+
+lib_internal/lib_internal_libinternal_glibc_a-pathinfo-append.obj: lib_internal/pathinfo-append.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-pathinfo-append.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-pathinfo-append.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-pathinfo-append.obj `if test -f 'lib_internal/pathinfo-append.c'; then $(CYGPATH_W) 'lib_internal/pathinfo-append.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/pathinfo-append.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-pathinfo-append.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-pathinfo-append.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-pathinfo-append.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/pathinfo-append.c' object='lib_internal/lib_internal_libinternal_glibc_a-pathinfo-append.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-pathinfo-append.obj `if test -f 'lib_internal/pathinfo-append.c'; then $(CYGPATH_W) 'lib_internal/pathinfo-append.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/pathinfo-append.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-pathinfo-test.o: lib_internal/pathinfo-test.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-pathinfo-test.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-pathinfo-test.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-pathinfo-test.o `test -f 'lib_internal/pathinfo-test.c' || echo '$(srcdir)/'`lib_internal/pathinfo-test.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-pathinfo-test.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-pathinfo-test.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-pathinfo-test.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/pathinfo-test.c' object='lib_internal/lib_internal_libinternal_glibc_a-pathinfo-test.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-pathinfo-test.o `test -f 'lib_internal/pathinfo-test.c' || echo '$(srcdir)/'`lib_internal/pathinfo-test.c
+
+lib_internal/lib_internal_libinternal_glibc_a-pathinfo-test.obj: lib_internal/pathinfo-test.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-pathinfo-test.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-pathinfo-test.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-pathinfo-test.obj `if test -f 'lib_internal/pathinfo-test.c'; then $(CYGPATH_W) 'lib_internal/pathinfo-test.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/pathinfo-test.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-pathinfo-test.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-pathinfo-test.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-pathinfo-test.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/pathinfo-test.c' object='lib_internal/lib_internal_libinternal_glibc_a-pathinfo-test.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-pathinfo-test.obj `if test -f 'lib_internal/pathinfo-test.c'; then $(CYGPATH_W) 'lib_internal/pathinfo-test.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/pathinfo-test.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-switchtowatchxid.o: lib_internal/switchtowatchxid.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-switchtowatchxid.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-switchtowatchxid.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-switchtowatchxid.o `test -f 'lib_internal/switchtowatchxid.c' || echo '$(srcdir)/'`lib_internal/switchtowatchxid.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-switchtowatchxid.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-switchtowatchxid.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-switchtowatchxid.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/switchtowatchxid.c' object='lib_internal/lib_internal_libinternal_glibc_a-switchtowatchxid.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-switchtowatchxid.o `test -f 'lib_internal/switchtowatchxid.c' || echo '$(srcdir)/'`lib_internal/switchtowatchxid.c
+
+lib_internal/lib_internal_libinternal_glibc_a-switchtowatchxid.obj: lib_internal/switchtowatchxid.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-switchtowatchxid.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-switchtowatchxid.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-switchtowatchxid.obj `if test -f 'lib_internal/switchtowatchxid.c'; then $(CYGPATH_W) 'lib_internal/switchtowatchxid.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/switchtowatchxid.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-switchtowatchxid.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-switchtowatchxid.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-switchtowatchxid.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/switchtowatchxid.c' object='lib_internal/lib_internal_libinternal_glibc_a-switchtowatchxid.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-switchtowatchxid.obj `if test -f 'lib_internal/switchtowatchxid.c'; then $(CYGPATH_W) 'lib_internal/switchtowatchxid.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/switchtowatchxid.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-unify-deunify.o: lib_internal/unify-deunify.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-unify-deunify.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-deunify.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-unify-deunify.o `test -f 'lib_internal/unify-deunify.c' || echo '$(srcdir)/'`lib_internal/unify-deunify.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-deunify.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-deunify.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-deunify.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/unify-deunify.c' object='lib_internal/lib_internal_libinternal_glibc_a-unify-deunify.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-unify-deunify.o `test -f 'lib_internal/unify-deunify.c' || echo '$(srcdir)/'`lib_internal/unify-deunify.c
+
+lib_internal/lib_internal_libinternal_glibc_a-unify-deunify.obj: lib_internal/unify-deunify.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-unify-deunify.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-deunify.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-unify-deunify.obj `if test -f 'lib_internal/unify-deunify.c'; then $(CYGPATH_W) 'lib_internal/unify-deunify.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/unify-deunify.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-deunify.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-deunify.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-deunify.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/unify-deunify.c' object='lib_internal/lib_internal_libinternal_glibc_a-unify-deunify.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-unify-deunify.obj `if test -f 'lib_internal/unify-deunify.c'; then $(CYGPATH_W) 'lib_internal/unify-deunify.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/unify-deunify.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-unify-settime.o: lib_internal/unify-settime.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-unify-settime.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-settime.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-unify-settime.o `test -f 'lib_internal/unify-settime.c' || echo '$(srcdir)/'`lib_internal/unify-settime.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-settime.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-settime.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-settime.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/unify-settime.c' object='lib_internal/lib_internal_libinternal_glibc_a-unify-settime.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-unify-settime.o `test -f 'lib_internal/unify-settime.c' || echo '$(srcdir)/'`lib_internal/unify-settime.c
+
+lib_internal/lib_internal_libinternal_glibc_a-unify-settime.obj: lib_internal/unify-settime.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-unify-settime.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-settime.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-unify-settime.obj `if test -f 'lib_internal/unify-settime.c'; then $(CYGPATH_W) 'lib_internal/unify-settime.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/unify-settime.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-settime.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-settime.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-settime.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/unify-settime.c' object='lib_internal/lib_internal_libinternal_glibc_a-unify-settime.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-unify-settime.obj `if test -f 'lib_internal/unify-settime.c'; then $(CYGPATH_W) 'lib_internal/unify-settime.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/unify-settime.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-unify-unify.o: lib_internal/unify-unify.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-unify-unify.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-unify.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-unify-unify.o `test -f 'lib_internal/unify-unify.c' || echo '$(srcdir)/'`lib_internal/unify-unify.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-unify.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-unify.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-unify.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/unify-unify.c' object='lib_internal/lib_internal_libinternal_glibc_a-unify-unify.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-unify-unify.o `test -f 'lib_internal/unify-unify.c' || echo '$(srcdir)/'`lib_internal/unify-unify.c
+
+lib_internal/lib_internal_libinternal_glibc_a-unify-unify.obj: lib_internal/unify-unify.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-unify-unify.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-unify.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-unify-unify.obj `if test -f 'lib_internal/unify-unify.c'; then $(CYGPATH_W) 'lib_internal/unify-unify.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/unify-unify.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-unify.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-unify.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-unify.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/unify-unify.c' object='lib_internal/lib_internal_libinternal_glibc_a-unify-unify.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-unify-unify.obj `if test -f 'lib_internal/unify-unify.c'; then $(CYGPATH_W) 'lib_internal/unify-unify.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/unify-unify.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-unify-isiunlinkable.o: lib_internal/unify-isiunlinkable.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-unify-isiunlinkable.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-isiunlinkable.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-unify-isiunlinkable.o `test -f 'lib_internal/unify-isiunlinkable.c' || echo '$(srcdir)/'`lib_internal/unify-isiunlinkable.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-isiunlinkable.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-isiunlinkable.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-isiunlinkable.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/unify-isiunlinkable.c' object='lib_internal/lib_internal_libinternal_glibc_a-unify-isiunlinkable.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-unify-isiunlinkable.o `test -f 'lib_internal/unify-isiunlinkable.c' || echo '$(srcdir)/'`lib_internal/unify-isiunlinkable.c
+
+lib_internal/lib_internal_libinternal_glibc_a-unify-isiunlinkable.obj: lib_internal/unify-isiunlinkable.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-unify-isiunlinkable.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-isiunlinkable.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-unify-isiunlinkable.obj `if test -f 'lib_internal/unify-isiunlinkable.c'; then $(CYGPATH_W) 'lib_internal/unify-isiunlinkable.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/unify-isiunlinkable.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-isiunlinkable.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-isiunlinkable.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-isiunlinkable.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/unify-isiunlinkable.c' object='lib_internal/lib_internal_libinternal_glibc_a-unify-isiunlinkable.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-unify-isiunlinkable.obj `if test -f 'lib_internal/unify-isiunlinkable.c'; then $(CYGPATH_W) 'lib_internal/unify-isiunlinkable.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/unify-isiunlinkable.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-util-canonify.o: lib_internal/util-canonify.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-util-canonify.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-canonify.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-util-canonify.o `test -f 'lib_internal/util-canonify.c' || echo '$(srcdir)/'`lib_internal/util-canonify.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-canonify.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-canonify.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-canonify.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/util-canonify.c' object='lib_internal/lib_internal_libinternal_glibc_a-util-canonify.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-util-canonify.o `test -f 'lib_internal/util-canonify.c' || echo '$(srcdir)/'`lib_internal/util-canonify.c
+
+lib_internal/lib_internal_libinternal_glibc_a-util-canonify.obj: lib_internal/util-canonify.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-util-canonify.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-canonify.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-util-canonify.obj `if test -f 'lib_internal/util-canonify.c'; then $(CYGPATH_W) 'lib_internal/util-canonify.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/util-canonify.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-canonify.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-canonify.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-canonify.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/util-canonify.c' object='lib_internal/lib_internal_libinternal_glibc_a-util-canonify.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-util-canonify.obj `if test -f 'lib_internal/util-canonify.c'; then $(CYGPATH_W) 'lib_internal/util-canonify.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/util-canonify.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-util-exitlikeprocess.o: lib_internal/util-exitlikeprocess.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-util-exitlikeprocess.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-exitlikeprocess.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-util-exitlikeprocess.o `test -f 'lib_internal/util-exitlikeprocess.c' || echo '$(srcdir)/'`lib_internal/util-exitlikeprocess.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-exitlikeprocess.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-exitlikeprocess.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-exitlikeprocess.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/util-exitlikeprocess.c' object='lib_internal/lib_internal_libinternal_glibc_a-util-exitlikeprocess.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-util-exitlikeprocess.o `test -f 'lib_internal/util-exitlikeprocess.c' || echo '$(srcdir)/'`lib_internal/util-exitlikeprocess.c
+
+lib_internal/lib_internal_libinternal_glibc_a-util-exitlikeprocess.obj: lib_internal/util-exitlikeprocess.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-util-exitlikeprocess.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-exitlikeprocess.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-util-exitlikeprocess.obj `if test -f 'lib_internal/util-exitlikeprocess.c'; then $(CYGPATH_W) 'lib_internal/util-exitlikeprocess.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/util-exitlikeprocess.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-exitlikeprocess.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-exitlikeprocess.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-exitlikeprocess.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/util-exitlikeprocess.c' object='lib_internal/lib_internal_libinternal_glibc_a-util-exitlikeprocess.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-util-exitlikeprocess.obj `if test -f 'lib_internal/util-exitlikeprocess.c'; then $(CYGPATH_W) 'lib_internal/util-exitlikeprocess.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/util-exitlikeprocess.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-util-isnumber.o: lib_internal/util-isnumber.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-util-isnumber.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-isnumber.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-util-isnumber.o `test -f 'lib_internal/util-isnumber.c' || echo '$(srcdir)/'`lib_internal/util-isnumber.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-isnumber.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-isnumber.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-isnumber.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/util-isnumber.c' object='lib_internal/lib_internal_libinternal_glibc_a-util-isnumber.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-util-isnumber.o `test -f 'lib_internal/util-isnumber.c' || echo '$(srcdir)/'`lib_internal/util-isnumber.c
+
+lib_internal/lib_internal_libinternal_glibc_a-util-isnumber.obj: lib_internal/util-isnumber.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-util-isnumber.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-isnumber.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-util-isnumber.obj `if test -f 'lib_internal/util-isnumber.c'; then $(CYGPATH_W) 'lib_internal/util-isnumber.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/util-isnumber.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-isnumber.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-isnumber.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-isnumber.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/util-isnumber.c' object='lib_internal/lib_internal_libinternal_glibc_a-util-isnumber.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-util-isnumber.obj `if test -f 'lib_internal/util-isnumber.c'; then $(CYGPATH_W) 'lib_internal/util-isnumber.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/util-isnumber.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-util-lockfile.o: lib_internal/util-lockfile.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-util-lockfile.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-lockfile.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-util-lockfile.o `test -f 'lib_internal/util-lockfile.c' || echo '$(srcdir)/'`lib_internal/util-lockfile.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-lockfile.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-lockfile.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-lockfile.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/util-lockfile.c' object='lib_internal/lib_internal_libinternal_glibc_a-util-lockfile.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-util-lockfile.o `test -f 'lib_internal/util-lockfile.c' || echo '$(srcdir)/'`lib_internal/util-lockfile.c
+
+lib_internal/lib_internal_libinternal_glibc_a-util-lockfile.obj: lib_internal/util-lockfile.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-util-lockfile.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-lockfile.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-util-lockfile.obj `if test -f 'lib_internal/util-lockfile.c'; then $(CYGPATH_W) 'lib_internal/util-lockfile.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/util-lockfile.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-lockfile.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-lockfile.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-lockfile.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/util-lockfile.c' object='lib_internal/lib_internal_libinternal_glibc_a-util-lockfile.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-util-lockfile.obj `if test -f 'lib_internal/util-lockfile.c'; then $(CYGPATH_W) 'lib_internal/util-lockfile.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/util-lockfile.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-util-safechdir.o: lib_internal/util-safechdir.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-util-safechdir.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-safechdir.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-util-safechdir.o `test -f 'lib_internal/util-safechdir.c' || echo '$(srcdir)/'`lib_internal/util-safechdir.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-safechdir.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-safechdir.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-safechdir.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/util-safechdir.c' object='lib_internal/lib_internal_libinternal_glibc_a-util-safechdir.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-util-safechdir.o `test -f 'lib_internal/util-safechdir.c' || echo '$(srcdir)/'`lib_internal/util-safechdir.c
+
+lib_internal/lib_internal_libinternal_glibc_a-util-safechdir.obj: lib_internal/util-safechdir.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-util-safechdir.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-safechdir.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-util-safechdir.obj `if test -f 'lib_internal/util-safechdir.c'; then $(CYGPATH_W) 'lib_internal/util-safechdir.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/util-safechdir.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-safechdir.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-safechdir.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-util-safechdir.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/util-safechdir.c' object='lib_internal/lib_internal_libinternal_glibc_a-util-safechdir.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-util-safechdir.obj `if test -f 'lib_internal/util-safechdir.c'; then $(CYGPATH_W) 'lib_internal/util-safechdir.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/util-safechdir.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-command-appendparameter.o: lib_internal/command-appendparameter.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-command-appendparameter.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-appendparameter.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-command-appendparameter.o `test -f 'lib_internal/command-appendparameter.c' || echo '$(srcdir)/'`lib_internal/command-appendparameter.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-appendparameter.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-appendparameter.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-appendparameter.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-appendparameter.c' object='lib_internal/lib_internal_libinternal_glibc_a-command-appendparameter.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-command-appendparameter.o `test -f 'lib_internal/command-appendparameter.c' || echo '$(srcdir)/'`lib_internal/command-appendparameter.c
+
+lib_internal/lib_internal_libinternal_glibc_a-command-appendparameter.obj: lib_internal/command-appendparameter.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-command-appendparameter.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-appendparameter.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-command-appendparameter.obj `if test -f 'lib_internal/command-appendparameter.c'; then $(CYGPATH_W) 'lib_internal/command-appendparameter.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-appendparameter.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-appendparameter.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-appendparameter.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-appendparameter.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-appendparameter.c' object='lib_internal/lib_internal_libinternal_glibc_a-command-appendparameter.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-command-appendparameter.obj `if test -f 'lib_internal/command-appendparameter.c'; then $(CYGPATH_W) 'lib_internal/command-appendparameter.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-appendparameter.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-command-setparams.o: lib_internal/command-setparams.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-command-setparams.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-setparams.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-command-setparams.o `test -f 'lib_internal/command-setparams.c' || echo '$(srcdir)/'`lib_internal/command-setparams.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-setparams.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-setparams.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-setparams.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-setparams.c' object='lib_internal/lib_internal_libinternal_glibc_a-command-setparams.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-command-setparams.o `test -f 'lib_internal/command-setparams.c' || echo '$(srcdir)/'`lib_internal/command-setparams.c
+
+lib_internal/lib_internal_libinternal_glibc_a-command-setparams.obj: lib_internal/command-setparams.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-command-setparams.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-setparams.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-command-setparams.obj `if test -f 'lib_internal/command-setparams.c'; then $(CYGPATH_W) 'lib_internal/command-setparams.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-setparams.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-setparams.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-setparams.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-setparams.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-setparams.c' object='lib_internal/lib_internal_libinternal_glibc_a-command-setparams.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-command-setparams.obj `if test -f 'lib_internal/command-setparams.c'; then $(CYGPATH_W) 'lib_internal/command-setparams.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-setparams.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-command-exec.o: lib_internal/command-exec.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-command-exec.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-exec.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-command-exec.o `test -f 'lib_internal/command-exec.c' || echo '$(srcdir)/'`lib_internal/command-exec.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-exec.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-exec.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-exec.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-exec.c' object='lib_internal/lib_internal_libinternal_glibc_a-command-exec.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-command-exec.o `test -f 'lib_internal/command-exec.c' || echo '$(srcdir)/'`lib_internal/command-exec.c
+
+lib_internal/lib_internal_libinternal_glibc_a-command-exec.obj: lib_internal/command-exec.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-command-exec.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-exec.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-command-exec.obj `if test -f 'lib_internal/command-exec.c'; then $(CYGPATH_W) 'lib_internal/command-exec.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-exec.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-exec.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-exec.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-exec.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-exec.c' object='lib_internal/lib_internal_libinternal_glibc_a-command-exec.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-command-exec.obj `if test -f 'lib_internal/command-exec.c'; then $(CYGPATH_W) 'lib_internal/command-exec.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-exec.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-command-free.o: lib_internal/command-free.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-command-free.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-free.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-command-free.o `test -f 'lib_internal/command-free.c' || echo '$(srcdir)/'`lib_internal/command-free.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-free.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-free.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-free.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-free.c' object='lib_internal/lib_internal_libinternal_glibc_a-command-free.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-command-free.o `test -f 'lib_internal/command-free.c' || echo '$(srcdir)/'`lib_internal/command-free.c
+
+lib_internal/lib_internal_libinternal_glibc_a-command-free.obj: lib_internal/command-free.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-command-free.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-free.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-command-free.obj `if test -f 'lib_internal/command-free.c'; then $(CYGPATH_W) 'lib_internal/command-free.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-free.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-free.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-free.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-free.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-free.c' object='lib_internal/lib_internal_libinternal_glibc_a-command-free.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-command-free.obj `if test -f 'lib_internal/command-free.c'; then $(CYGPATH_W) 'lib_internal/command-free.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-free.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-command-init.o: lib_internal/command-init.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-command-init.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-init.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-command-init.o `test -f 'lib_internal/command-init.c' || echo '$(srcdir)/'`lib_internal/command-init.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-init.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-init.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-init.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-init.c' object='lib_internal/lib_internal_libinternal_glibc_a-command-init.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-command-init.o `test -f 'lib_internal/command-init.c' || echo '$(srcdir)/'`lib_internal/command-init.c
+
+lib_internal/lib_internal_libinternal_glibc_a-command-init.obj: lib_internal/command-init.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-command-init.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-init.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-command-init.obj `if test -f 'lib_internal/command-init.c'; then $(CYGPATH_W) 'lib_internal/command-init.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-init.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-init.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-init.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-init.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-init.c' object='lib_internal/lib_internal_libinternal_glibc_a-command-init.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-command-init.obj `if test -f 'lib_internal/command-init.c'; then $(CYGPATH_W) 'lib_internal/command-init.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-init.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-command-reset.o: lib_internal/command-reset.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-command-reset.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-reset.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-command-reset.o `test -f 'lib_internal/command-reset.c' || echo '$(srcdir)/'`lib_internal/command-reset.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-reset.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-reset.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-reset.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-reset.c' object='lib_internal/lib_internal_libinternal_glibc_a-command-reset.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-command-reset.o `test -f 'lib_internal/command-reset.c' || echo '$(srcdir)/'`lib_internal/command-reset.c
+
+lib_internal/lib_internal_libinternal_glibc_a-command-reset.obj: lib_internal/command-reset.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-command-reset.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-reset.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-command-reset.obj `if test -f 'lib_internal/command-reset.c'; then $(CYGPATH_W) 'lib_internal/command-reset.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-reset.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-reset.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-reset.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-reset.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-reset.c' object='lib_internal/lib_internal_libinternal_glibc_a-command-reset.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-command-reset.obj `if test -f 'lib_internal/command-reset.c'; then $(CYGPATH_W) 'lib_internal/command-reset.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-reset.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-command-wait.o: lib_internal/command-wait.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-command-wait.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-wait.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-command-wait.o `test -f 'lib_internal/command-wait.c' || echo '$(srcdir)/'`lib_internal/command-wait.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-wait.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-wait.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-wait.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-wait.c' object='lib_internal/lib_internal_libinternal_glibc_a-command-wait.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-command-wait.o `test -f 'lib_internal/command-wait.c' || echo '$(srcdir)/'`lib_internal/command-wait.c
+
+lib_internal/lib_internal_libinternal_glibc_a-command-wait.obj: lib_internal/command-wait.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-command-wait.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-wait.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-command-wait.obj `if test -f 'lib_internal/command-wait.c'; then $(CYGPATH_W) 'lib_internal/command-wait.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-wait.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-wait.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-wait.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-command-wait.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/command-wait.c' object='lib_internal/lib_internal_libinternal_glibc_a-command-wait.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-command-wait.obj `if test -f 'lib_internal/command-wait.c'; then $(CYGPATH_W) 'lib_internal/command-wait.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/command-wait.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-filecfg-iteratemultiline.o: lib_internal/filecfg-iteratemultiline.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-filecfg-iteratemultiline.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-iteratemultiline.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-filecfg-iteratemultiline.o `test -f 'lib_internal/filecfg-iteratemultiline.c' || echo '$(srcdir)/'`lib_internal/filecfg-iteratemultiline.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-iteratemultiline.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-iteratemultiline.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-iteratemultiline.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/filecfg-iteratemultiline.c' object='lib_internal/lib_internal_libinternal_glibc_a-filecfg-iteratemultiline.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-filecfg-iteratemultiline.o `test -f 'lib_internal/filecfg-iteratemultiline.c' || echo '$(srcdir)/'`lib_internal/filecfg-iteratemultiline.c
+
+lib_internal/lib_internal_libinternal_glibc_a-filecfg-iteratemultiline.obj: lib_internal/filecfg-iteratemultiline.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-filecfg-iteratemultiline.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-iteratemultiline.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-filecfg-iteratemultiline.obj `if test -f 'lib_internal/filecfg-iteratemultiline.c'; then $(CYGPATH_W) 'lib_internal/filecfg-iteratemultiline.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/filecfg-iteratemultiline.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-iteratemultiline.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-iteratemultiline.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-iteratemultiline.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/filecfg-iteratemultiline.c' object='lib_internal/lib_internal_libinternal_glibc_a-filecfg-iteratemultiline.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-filecfg-iteratemultiline.obj `if test -f 'lib_internal/filecfg-iteratemultiline.c'; then $(CYGPATH_W) 'lib_internal/filecfg-iteratemultiline.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/filecfg-iteratemultiline.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-filecfg-readentryflag.o: lib_internal/filecfg-readentryflag.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-filecfg-readentryflag.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-readentryflag.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-filecfg-readentryflag.o `test -f 'lib_internal/filecfg-readentryflag.c' || echo '$(srcdir)/'`lib_internal/filecfg-readentryflag.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-readentryflag.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-readentryflag.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-readentryflag.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/filecfg-readentryflag.c' object='lib_internal/lib_internal_libinternal_glibc_a-filecfg-readentryflag.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-filecfg-readentryflag.o `test -f 'lib_internal/filecfg-readentryflag.c' || echo '$(srcdir)/'`lib_internal/filecfg-readentryflag.c
+
+lib_internal/lib_internal_libinternal_glibc_a-filecfg-readentryflag.obj: lib_internal/filecfg-readentryflag.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-filecfg-readentryflag.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-readentryflag.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-filecfg-readentryflag.obj `if test -f 'lib_internal/filecfg-readentryflag.c'; then $(CYGPATH_W) 'lib_internal/filecfg-readentryflag.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/filecfg-readentryflag.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-readentryflag.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-readentryflag.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-readentryflag.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/filecfg-readentryflag.c' object='lib_internal/lib_internal_libinternal_glibc_a-filecfg-readentryflag.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-filecfg-readentryflag.obj `if test -f 'lib_internal/filecfg-readentryflag.c'; then $(CYGPATH_W) 'lib_internal/filecfg-readentryflag.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/filecfg-readentryflag.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-filecfg-readentrystr.o: lib_internal/filecfg-readentrystr.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-filecfg-readentrystr.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-readentrystr.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-filecfg-readentrystr.o `test -f 'lib_internal/filecfg-readentrystr.c' || echo '$(srcdir)/'`lib_internal/filecfg-readentrystr.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-readentrystr.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-readentrystr.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-readentrystr.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/filecfg-readentrystr.c' object='lib_internal/lib_internal_libinternal_glibc_a-filecfg-readentrystr.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-filecfg-readentrystr.o `test -f 'lib_internal/filecfg-readentrystr.c' || echo '$(srcdir)/'`lib_internal/filecfg-readentrystr.c
+
+lib_internal/lib_internal_libinternal_glibc_a-filecfg-readentrystr.obj: lib_internal/filecfg-readentrystr.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-filecfg-readentrystr.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-readentrystr.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-filecfg-readentrystr.obj `if test -f 'lib_internal/filecfg-readentrystr.c'; then $(CYGPATH_W) 'lib_internal/filecfg-readentrystr.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/filecfg-readentrystr.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-readentrystr.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-readentrystr.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-filecfg-readentrystr.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/filecfg-readentrystr.c' object='lib_internal/lib_internal_libinternal_glibc_a-filecfg-readentrystr.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-filecfg-readentrystr.obj `if test -f 'lib_internal/filecfg-readentrystr.c'; then $(CYGPATH_W) 'lib_internal/filecfg-readentrystr.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/filecfg-readentrystr.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-matchlist-initbyvserver.o: lib_internal/matchlist-initbyvserver.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-matchlist-initbyvserver.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initbyvserver.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-initbyvserver.o `test -f 'lib_internal/matchlist-initbyvserver.c' || echo '$(srcdir)/'`lib_internal/matchlist-initbyvserver.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initbyvserver.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initbyvserver.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initbyvserver.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-initbyvserver.c' object='lib_internal/lib_internal_libinternal_glibc_a-matchlist-initbyvserver.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-initbyvserver.o `test -f 'lib_internal/matchlist-initbyvserver.c' || echo '$(srcdir)/'`lib_internal/matchlist-initbyvserver.c
+
+lib_internal/lib_internal_libinternal_glibc_a-matchlist-initbyvserver.obj: lib_internal/matchlist-initbyvserver.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-matchlist-initbyvserver.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initbyvserver.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-initbyvserver.obj `if test -f 'lib_internal/matchlist-initbyvserver.c'; then $(CYGPATH_W) 'lib_internal/matchlist-initbyvserver.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-initbyvserver.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initbyvserver.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initbyvserver.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchlist-initbyvserver.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchlist-initbyvserver.c' object='lib_internal/lib_internal_libinternal_glibc_a-matchlist-initbyvserver.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-matchlist-initbyvserver.obj `if test -f 'lib_internal/matchlist-initbyvserver.c'; then $(CYGPATH_W) 'lib_internal/matchlist-initbyvserver.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchlist-initbyvserver.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-matchvserverinfo-init.o: lib_internal/matchvserverinfo-init.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-matchvserverinfo-init.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchvserverinfo-init.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-matchvserverinfo-init.o `test -f 'lib_internal/matchvserverinfo-init.c' || echo '$(srcdir)/'`lib_internal/matchvserverinfo-init.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchvserverinfo-init.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchvserverinfo-init.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchvserverinfo-init.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchvserverinfo-init.c' object='lib_internal/lib_internal_libinternal_glibc_a-matchvserverinfo-init.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-matchvserverinfo-init.o `test -f 'lib_internal/matchvserverinfo-init.c' || echo '$(srcdir)/'`lib_internal/matchvserverinfo-init.c
+
+lib_internal/lib_internal_libinternal_glibc_a-matchvserverinfo-init.obj: lib_internal/matchvserverinfo-init.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-matchvserverinfo-init.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchvserverinfo-init.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-matchvserverinfo-init.obj `if test -f 'lib_internal/matchvserverinfo-init.c'; then $(CYGPATH_W) 'lib_internal/matchvserverinfo-init.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchvserverinfo-init.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchvserverinfo-init.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchvserverinfo-init.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-matchvserverinfo-init.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/matchvserverinfo-init.c' object='lib_internal/lib_internal_libinternal_glibc_a-matchvserverinfo-init.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-matchvserverinfo-init.obj `if test -f 'lib_internal/matchvserverinfo-init.c'; then $(CYGPATH_W) 'lib_internal/matchvserverinfo-init.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/matchvserverinfo-init.c'; fi`
+
+lib_internal/lib_internal_libinternal_glibc_a-unify-copy.o: lib_internal/unify-copy.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-unify-copy.o -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-copy.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-unify-copy.o `test -f 'lib_internal/unify-copy.c' || echo '$(srcdir)/'`lib_internal/unify-copy.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-copy.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-copy.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-copy.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/unify-copy.c' object='lib_internal/lib_internal_libinternal_glibc_a-unify-copy.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-unify-copy.o `test -f 'lib_internal/unify-copy.c' || echo '$(srcdir)/'`lib_internal/unify-copy.c
+
+lib_internal/lib_internal_libinternal_glibc_a-unify-copy.obj: lib_internal/unify-copy.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_internal/lib_internal_libinternal_glibc_a-unify-copy.obj -MD -MP -MF "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-copy.Tpo" -c -o lib_internal/lib_internal_libinternal_glibc_a-unify-copy.obj `if test -f 'lib_internal/unify-copy.c'; then $(CYGPATH_W) 'lib_internal/unify-copy.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/unify-copy.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-copy.Tpo" "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-copy.Po"; else rm -f "lib_internal/$(DEPDIR)/lib_internal_libinternal_glibc_a-unify-copy.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib_internal/unify-copy.c' object='lib_internal/lib_internal_libinternal_glibc_a-unify-copy.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_internal_libinternal_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_internal/lib_internal_libinternal_glibc_a-unify-copy.obj `if test -f 'lib_internal/unify-copy.c'; then $(CYGPATH_W) 'lib_internal/unify-copy.c'; else $(CYGPATH_W) '$(srcdir)/lib_internal/unify-copy.c'; fi`
+
+ensc_vector/libensc_vector_diet_a-vector-clear.o: ensc_vector/vector-clear.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-vector-clear.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-clear.Tpo" -c -o ensc_vector/libensc_vector_diet_a-vector-clear.o `test -f 'ensc_vector/vector-clear.c' || echo '$(srcdir)/'`ensc_vector/vector-clear.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-clear.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-clear.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-clear.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-clear.c' object='ensc_vector/libensc_vector_diet_a-vector-clear.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-vector-clear.o `test -f 'ensc_vector/vector-clear.c' || echo '$(srcdir)/'`ensc_vector/vector-clear.c
+
+ensc_vector/libensc_vector_diet_a-vector-clear.obj: ensc_vector/vector-clear.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-vector-clear.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-clear.Tpo" -c -o ensc_vector/libensc_vector_diet_a-vector-clear.obj `if test -f 'ensc_vector/vector-clear.c'; then $(CYGPATH_W) 'ensc_vector/vector-clear.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-clear.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-clear.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-clear.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-clear.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-clear.c' object='ensc_vector/libensc_vector_diet_a-vector-clear.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-vector-clear.obj `if test -f 'ensc_vector/vector-clear.c'; then $(CYGPATH_W) 'ensc_vector/vector-clear.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-clear.c'; fi`
+
+ensc_vector/libensc_vector_diet_a-vector-foreach.o: ensc_vector/vector-foreach.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-vector-foreach.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-foreach.Tpo" -c -o ensc_vector/libensc_vector_diet_a-vector-foreach.o `test -f 'ensc_vector/vector-foreach.c' || echo '$(srcdir)/'`ensc_vector/vector-foreach.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-foreach.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-foreach.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-foreach.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-foreach.c' object='ensc_vector/libensc_vector_diet_a-vector-foreach.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-vector-foreach.o `test -f 'ensc_vector/vector-foreach.c' || echo '$(srcdir)/'`ensc_vector/vector-foreach.c
+
+ensc_vector/libensc_vector_diet_a-vector-foreach.obj: ensc_vector/vector-foreach.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-vector-foreach.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-foreach.Tpo" -c -o ensc_vector/libensc_vector_diet_a-vector-foreach.obj `if test -f 'ensc_vector/vector-foreach.c'; then $(CYGPATH_W) 'ensc_vector/vector-foreach.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-foreach.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-foreach.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-foreach.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-foreach.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-foreach.c' object='ensc_vector/libensc_vector_diet_a-vector-foreach.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-vector-foreach.obj `if test -f 'ensc_vector/vector-foreach.c'; then $(CYGPATH_W) 'ensc_vector/vector-foreach.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-foreach.c'; fi`
+
+ensc_vector/libensc_vector_diet_a-vector-free.o: ensc_vector/vector-free.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-vector-free.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-free.Tpo" -c -o ensc_vector/libensc_vector_diet_a-vector-free.o `test -f 'ensc_vector/vector-free.c' || echo '$(srcdir)/'`ensc_vector/vector-free.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-free.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-free.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-free.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-free.c' object='ensc_vector/libensc_vector_diet_a-vector-free.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-vector-free.o `test -f 'ensc_vector/vector-free.c' || echo '$(srcdir)/'`ensc_vector/vector-free.c
+
+ensc_vector/libensc_vector_diet_a-vector-free.obj: ensc_vector/vector-free.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-vector-free.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-free.Tpo" -c -o ensc_vector/libensc_vector_diet_a-vector-free.obj `if test -f 'ensc_vector/vector-free.c'; then $(CYGPATH_W) 'ensc_vector/vector-free.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-free.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-free.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-free.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-free.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-free.c' object='ensc_vector/libensc_vector_diet_a-vector-free.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-vector-free.obj `if test -f 'ensc_vector/vector-free.c'; then $(CYGPATH_W) 'ensc_vector/vector-free.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-free.c'; fi`
+
+ensc_vector/libensc_vector_diet_a-vector-init.o: ensc_vector/vector-init.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-vector-init.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-init.Tpo" -c -o ensc_vector/libensc_vector_diet_a-vector-init.o `test -f 'ensc_vector/vector-init.c' || echo '$(srcdir)/'`ensc_vector/vector-init.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-init.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-init.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-init.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-init.c' object='ensc_vector/libensc_vector_diet_a-vector-init.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-vector-init.o `test -f 'ensc_vector/vector-init.c' || echo '$(srcdir)/'`ensc_vector/vector-init.c
+
+ensc_vector/libensc_vector_diet_a-vector-init.obj: ensc_vector/vector-init.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-vector-init.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-init.Tpo" -c -o ensc_vector/libensc_vector_diet_a-vector-init.obj `if test -f 'ensc_vector/vector-init.c'; then $(CYGPATH_W) 'ensc_vector/vector-init.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-init.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-init.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-init.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-init.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-init.c' object='ensc_vector/libensc_vector_diet_a-vector-init.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-vector-init.obj `if test -f 'ensc_vector/vector-init.c'; then $(CYGPATH_W) 'ensc_vector/vector-init.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-init.c'; fi`
+
+ensc_vector/libensc_vector_diet_a-vector-insert.o: ensc_vector/vector-insert.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-vector-insert.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-insert.Tpo" -c -o ensc_vector/libensc_vector_diet_a-vector-insert.o `test -f 'ensc_vector/vector-insert.c' || echo '$(srcdir)/'`ensc_vector/vector-insert.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-insert.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-insert.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-insert.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-insert.c' object='ensc_vector/libensc_vector_diet_a-vector-insert.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-vector-insert.o `test -f 'ensc_vector/vector-insert.c' || echo '$(srcdir)/'`ensc_vector/vector-insert.c
+
+ensc_vector/libensc_vector_diet_a-vector-insert.obj: ensc_vector/vector-insert.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-vector-insert.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-insert.Tpo" -c -o ensc_vector/libensc_vector_diet_a-vector-insert.obj `if test -f 'ensc_vector/vector-insert.c'; then $(CYGPATH_W) 'ensc_vector/vector-insert.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-insert.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-insert.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-insert.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-insert.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-insert.c' object='ensc_vector/libensc_vector_diet_a-vector-insert.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-vector-insert.obj `if test -f 'ensc_vector/vector-insert.c'; then $(CYGPATH_W) 'ensc_vector/vector-insert.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-insert.c'; fi`
+
+ensc_vector/libensc_vector_diet_a-vector-popback.o: ensc_vector/vector-popback.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-vector-popback.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-popback.Tpo" -c -o ensc_vector/libensc_vector_diet_a-vector-popback.o `test -f 'ensc_vector/vector-popback.c' || echo '$(srcdir)/'`ensc_vector/vector-popback.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-popback.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-popback.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-popback.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-popback.c' object='ensc_vector/libensc_vector_diet_a-vector-popback.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-vector-popback.o `test -f 'ensc_vector/vector-popback.c' || echo '$(srcdir)/'`ensc_vector/vector-popback.c
+
+ensc_vector/libensc_vector_diet_a-vector-popback.obj: ensc_vector/vector-popback.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-vector-popback.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-popback.Tpo" -c -o ensc_vector/libensc_vector_diet_a-vector-popback.obj `if test -f 'ensc_vector/vector-popback.c'; then $(CYGPATH_W) 'ensc_vector/vector-popback.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-popback.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-popback.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-popback.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-popback.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-popback.c' object='ensc_vector/libensc_vector_diet_a-vector-popback.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-vector-popback.obj `if test -f 'ensc_vector/vector-popback.c'; then $(CYGPATH_W) 'ensc_vector/vector-popback.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-popback.c'; fi`
+
+ensc_vector/libensc_vector_diet_a-vector-pushback.o: ensc_vector/vector-pushback.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-vector-pushback.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-pushback.Tpo" -c -o ensc_vector/libensc_vector_diet_a-vector-pushback.o `test -f 'ensc_vector/vector-pushback.c' || echo '$(srcdir)/'`ensc_vector/vector-pushback.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-pushback.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-pushback.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-pushback.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-pushback.c' object='ensc_vector/libensc_vector_diet_a-vector-pushback.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-vector-pushback.o `test -f 'ensc_vector/vector-pushback.c' || echo '$(srcdir)/'`ensc_vector/vector-pushback.c
+
+ensc_vector/libensc_vector_diet_a-vector-pushback.obj: ensc_vector/vector-pushback.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-vector-pushback.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-pushback.Tpo" -c -o ensc_vector/libensc_vector_diet_a-vector-pushback.obj `if test -f 'ensc_vector/vector-pushback.c'; then $(CYGPATH_W) 'ensc_vector/vector-pushback.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-pushback.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-pushback.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-pushback.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-pushback.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-pushback.c' object='ensc_vector/libensc_vector_diet_a-vector-pushback.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-vector-pushback.obj `if test -f 'ensc_vector/vector-pushback.c'; then $(CYGPATH_W) 'ensc_vector/vector-pushback.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-pushback.c'; fi`
+
+ensc_vector/libensc_vector_diet_a-vector-resize.o: ensc_vector/vector-resize.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-vector-resize.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-resize.Tpo" -c -o ensc_vector/libensc_vector_diet_a-vector-resize.o `test -f 'ensc_vector/vector-resize.c' || echo '$(srcdir)/'`ensc_vector/vector-resize.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-resize.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-resize.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-resize.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-resize.c' object='ensc_vector/libensc_vector_diet_a-vector-resize.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-vector-resize.o `test -f 'ensc_vector/vector-resize.c' || echo '$(srcdir)/'`ensc_vector/vector-resize.c
+
+ensc_vector/libensc_vector_diet_a-vector-resize.obj: ensc_vector/vector-resize.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-vector-resize.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-resize.Tpo" -c -o ensc_vector/libensc_vector_diet_a-vector-resize.obj `if test -f 'ensc_vector/vector-resize.c'; then $(CYGPATH_W) 'ensc_vector/vector-resize.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-resize.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-resize.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-resize.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-resize.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-resize.c' object='ensc_vector/libensc_vector_diet_a-vector-resize.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-vector-resize.obj `if test -f 'ensc_vector/vector-resize.c'; then $(CYGPATH_W) 'ensc_vector/vector-resize.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-resize.c'; fi`
+
+ensc_vector/libensc_vector_diet_a-vector-search.o: ensc_vector/vector-search.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-vector-search.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-search.Tpo" -c -o ensc_vector/libensc_vector_diet_a-vector-search.o `test -f 'ensc_vector/vector-search.c' || echo '$(srcdir)/'`ensc_vector/vector-search.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-search.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-search.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-search.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-search.c' object='ensc_vector/libensc_vector_diet_a-vector-search.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-vector-search.o `test -f 'ensc_vector/vector-search.c' || echo '$(srcdir)/'`ensc_vector/vector-search.c
+
+ensc_vector/libensc_vector_diet_a-vector-search.obj: ensc_vector/vector-search.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-vector-search.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-search.Tpo" -c -o ensc_vector/libensc_vector_diet_a-vector-search.obj `if test -f 'ensc_vector/vector-search.c'; then $(CYGPATH_W) 'ensc_vector/vector-search.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-search.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-search.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-search.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-search.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-search.c' object='ensc_vector/libensc_vector_diet_a-vector-search.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-vector-search.obj `if test -f 'ensc_vector/vector-search.c'; then $(CYGPATH_W) 'ensc_vector/vector-search.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-search.c'; fi`
+
+ensc_vector/libensc_vector_diet_a-vector-searchselforg.o: ensc_vector/vector-searchselforg.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-vector-searchselforg.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-searchselforg.Tpo" -c -o ensc_vector/libensc_vector_diet_a-vector-searchselforg.o `test -f 'ensc_vector/vector-searchselforg.c' || echo '$(srcdir)/'`ensc_vector/vector-searchselforg.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-searchselforg.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-searchselforg.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-searchselforg.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-searchselforg.c' object='ensc_vector/libensc_vector_diet_a-vector-searchselforg.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-vector-searchselforg.o `test -f 'ensc_vector/vector-searchselforg.c' || echo '$(srcdir)/'`ensc_vector/vector-searchselforg.c
+
+ensc_vector/libensc_vector_diet_a-vector-searchselforg.obj: ensc_vector/vector-searchselforg.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-vector-searchselforg.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-searchselforg.Tpo" -c -o ensc_vector/libensc_vector_diet_a-vector-searchselforg.obj `if test -f 'ensc_vector/vector-searchselforg.c'; then $(CYGPATH_W) 'ensc_vector/vector-searchselforg.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-searchselforg.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-searchselforg.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-searchselforg.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-searchselforg.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-searchselforg.c' object='ensc_vector/libensc_vector_diet_a-vector-searchselforg.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-vector-searchselforg.obj `if test -f 'ensc_vector/vector-searchselforg.c'; then $(CYGPATH_W) 'ensc_vector/vector-searchselforg.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-searchselforg.c'; fi`
+
+ensc_vector/libensc_vector_diet_a-vector-sort.o: ensc_vector/vector-sort.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-vector-sort.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-sort.Tpo" -c -o ensc_vector/libensc_vector_diet_a-vector-sort.o `test -f 'ensc_vector/vector-sort.c' || echo '$(srcdir)/'`ensc_vector/vector-sort.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-sort.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-sort.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-sort.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-sort.c' object='ensc_vector/libensc_vector_diet_a-vector-sort.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-vector-sort.o `test -f 'ensc_vector/vector-sort.c' || echo '$(srcdir)/'`ensc_vector/vector-sort.c
+
+ensc_vector/libensc_vector_diet_a-vector-sort.obj: ensc_vector/vector-sort.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-vector-sort.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-sort.Tpo" -c -o ensc_vector/libensc_vector_diet_a-vector-sort.obj `if test -f 'ensc_vector/vector-sort.c'; then $(CYGPATH_W) 'ensc_vector/vector-sort.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-sort.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-sort.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-sort.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-sort.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-sort.c' object='ensc_vector/libensc_vector_diet_a-vector-sort.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-vector-sort.obj `if test -f 'ensc_vector/vector-sort.c'; then $(CYGPATH_W) 'ensc_vector/vector-sort.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-sort.c'; fi`
+
+ensc_vector/libensc_vector_diet_a-vector-unique.o: ensc_vector/vector-unique.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-vector-unique.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-unique.Tpo" -c -o ensc_vector/libensc_vector_diet_a-vector-unique.o `test -f 'ensc_vector/vector-unique.c' || echo '$(srcdir)/'`ensc_vector/vector-unique.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-unique.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-unique.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-unique.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-unique.c' object='ensc_vector/libensc_vector_diet_a-vector-unique.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-vector-unique.o `test -f 'ensc_vector/vector-unique.c' || echo '$(srcdir)/'`ensc_vector/vector-unique.c
+
+ensc_vector/libensc_vector_diet_a-vector-unique.obj: ensc_vector/vector-unique.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-vector-unique.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-unique.Tpo" -c -o ensc_vector/libensc_vector_diet_a-vector-unique.obj `if test -f 'ensc_vector/vector-unique.c'; then $(CYGPATH_W) 'ensc_vector/vector-unique.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-unique.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-unique.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-unique.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-unique.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-unique.c' object='ensc_vector/libensc_vector_diet_a-vector-unique.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-vector-unique.obj `if test -f 'ensc_vector/vector-unique.c'; then $(CYGPATH_W) 'ensc_vector/vector-unique.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-unique.c'; fi`
+
+ensc_vector/libensc_vector_diet_a-vector-zeroend.o: ensc_vector/vector-zeroend.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-vector-zeroend.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-zeroend.Tpo" -c -o ensc_vector/libensc_vector_diet_a-vector-zeroend.o `test -f 'ensc_vector/vector-zeroend.c' || echo '$(srcdir)/'`ensc_vector/vector-zeroend.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-zeroend.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-zeroend.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-zeroend.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-zeroend.c' object='ensc_vector/libensc_vector_diet_a-vector-zeroend.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-vector-zeroend.o `test -f 'ensc_vector/vector-zeroend.c' || echo '$(srcdir)/'`ensc_vector/vector-zeroend.c
+
+ensc_vector/libensc_vector_diet_a-vector-zeroend.obj: ensc_vector/vector-zeroend.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-vector-zeroend.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-zeroend.Tpo" -c -o ensc_vector/libensc_vector_diet_a-vector-zeroend.obj `if test -f 'ensc_vector/vector-zeroend.c'; then $(CYGPATH_W) 'ensc_vector/vector-zeroend.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-zeroend.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-zeroend.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-zeroend.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-vector-zeroend.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-zeroend.c' object='ensc_vector/libensc_vector_diet_a-vector-zeroend.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-vector-zeroend.obj `if test -f 'ensc_vector/vector-zeroend.c'; then $(CYGPATH_W) 'ensc_vector/vector-zeroend.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-zeroend.c'; fi`
+
+ensc_vector/libensc_vector_diet_a-list-at.o: ensc_vector/list-at.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-list-at.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-at.Tpo" -c -o ensc_vector/libensc_vector_diet_a-list-at.o `test -f 'ensc_vector/list-at.c' || echo '$(srcdir)/'`ensc_vector/list-at.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-at.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-at.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-at.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-at.c' object='ensc_vector/libensc_vector_diet_a-list-at.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-list-at.o `test -f 'ensc_vector/list-at.c' || echo '$(srcdir)/'`ensc_vector/list-at.c
+
+ensc_vector/libensc_vector_diet_a-list-at.obj: ensc_vector/list-at.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-list-at.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-at.Tpo" -c -o ensc_vector/libensc_vector_diet_a-list-at.obj `if test -f 'ensc_vector/list-at.c'; then $(CYGPATH_W) 'ensc_vector/list-at.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-at.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-at.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-at.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-at.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-at.c' object='ensc_vector/libensc_vector_diet_a-list-at.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-list-at.obj `if test -f 'ensc_vector/list-at.c'; then $(CYGPATH_W) 'ensc_vector/list-at.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-at.c'; fi`
+
+ensc_vector/libensc_vector_diet_a-list-add.o: ensc_vector/list-add.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-list-add.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-add.Tpo" -c -o ensc_vector/libensc_vector_diet_a-list-add.o `test -f 'ensc_vector/list-add.c' || echo '$(srcdir)/'`ensc_vector/list-add.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-add.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-add.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-add.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-add.c' object='ensc_vector/libensc_vector_diet_a-list-add.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-list-add.o `test -f 'ensc_vector/list-add.c' || echo '$(srcdir)/'`ensc_vector/list-add.c
+
+ensc_vector/libensc_vector_diet_a-list-add.obj: ensc_vector/list-add.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-list-add.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-add.Tpo" -c -o ensc_vector/libensc_vector_diet_a-list-add.obj `if test -f 'ensc_vector/list-add.c'; then $(CYGPATH_W) 'ensc_vector/list-add.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-add.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-add.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-add.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-add.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-add.c' object='ensc_vector/libensc_vector_diet_a-list-add.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-list-add.obj `if test -f 'ensc_vector/list-add.c'; then $(CYGPATH_W) 'ensc_vector/list-add.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-add.c'; fi`
+
+ensc_vector/libensc_vector_diet_a-list-free.o: ensc_vector/list-free.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-list-free.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-free.Tpo" -c -o ensc_vector/libensc_vector_diet_a-list-free.o `test -f 'ensc_vector/list-free.c' || echo '$(srcdir)/'`ensc_vector/list-free.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-free.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-free.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-free.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-free.c' object='ensc_vector/libensc_vector_diet_a-list-free.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-list-free.o `test -f 'ensc_vector/list-free.c' || echo '$(srcdir)/'`ensc_vector/list-free.c
+
+ensc_vector/libensc_vector_diet_a-list-free.obj: ensc_vector/list-free.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-list-free.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-free.Tpo" -c -o ensc_vector/libensc_vector_diet_a-list-free.obj `if test -f 'ensc_vector/list-free.c'; then $(CYGPATH_W) 'ensc_vector/list-free.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-free.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-free.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-free.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-free.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-free.c' object='ensc_vector/libensc_vector_diet_a-list-free.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-list-free.obj `if test -f 'ensc_vector/list-free.c'; then $(CYGPATH_W) 'ensc_vector/list-free.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-free.c'; fi`
+
+ensc_vector/libensc_vector_diet_a-list-init.o: ensc_vector/list-init.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-list-init.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-init.Tpo" -c -o ensc_vector/libensc_vector_diet_a-list-init.o `test -f 'ensc_vector/list-init.c' || echo '$(srcdir)/'`ensc_vector/list-init.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-init.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-init.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-init.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-init.c' object='ensc_vector/libensc_vector_diet_a-list-init.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-list-init.o `test -f 'ensc_vector/list-init.c' || echo '$(srcdir)/'`ensc_vector/list-init.c
+
+ensc_vector/libensc_vector_diet_a-list-init.obj: ensc_vector/list-init.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-list-init.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-init.Tpo" -c -o ensc_vector/libensc_vector_diet_a-list-init.obj `if test -f 'ensc_vector/list-init.c'; then $(CYGPATH_W) 'ensc_vector/list-init.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-init.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-init.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-init.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-init.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-init.c' object='ensc_vector/libensc_vector_diet_a-list-init.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-list-init.obj `if test -f 'ensc_vector/list-init.c'; then $(CYGPATH_W) 'ensc_vector/list-init.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-init.c'; fi`
+
+ensc_vector/libensc_vector_diet_a-list-insertinternal.o: ensc_vector/list-insertinternal.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-list-insertinternal.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-insertinternal.Tpo" -c -o ensc_vector/libensc_vector_diet_a-list-insertinternal.o `test -f 'ensc_vector/list-insertinternal.c' || echo '$(srcdir)/'`ensc_vector/list-insertinternal.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-insertinternal.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-insertinternal.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-insertinternal.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-insertinternal.c' object='ensc_vector/libensc_vector_diet_a-list-insertinternal.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-list-insertinternal.o `test -f 'ensc_vector/list-insertinternal.c' || echo '$(srcdir)/'`ensc_vector/list-insertinternal.c
+
+ensc_vector/libensc_vector_diet_a-list-insertinternal.obj: ensc_vector/list-insertinternal.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-list-insertinternal.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-insertinternal.Tpo" -c -o ensc_vector/libensc_vector_diet_a-list-insertinternal.obj `if test -f 'ensc_vector/list-insertinternal.c'; then $(CYGPATH_W) 'ensc_vector/list-insertinternal.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-insertinternal.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-insertinternal.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-insertinternal.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-insertinternal.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-insertinternal.c' object='ensc_vector/libensc_vector_diet_a-list-insertinternal.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-list-insertinternal.obj `if test -f 'ensc_vector/list-insertinternal.c'; then $(CYGPATH_W) 'ensc_vector/list-insertinternal.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-insertinternal.c'; fi`
+
+ensc_vector/libensc_vector_diet_a-list-search.o: ensc_vector/list-search.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-list-search.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-search.Tpo" -c -o ensc_vector/libensc_vector_diet_a-list-search.o `test -f 'ensc_vector/list-search.c' || echo '$(srcdir)/'`ensc_vector/list-search.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-search.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-search.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-search.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-search.c' object='ensc_vector/libensc_vector_diet_a-list-search.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-list-search.o `test -f 'ensc_vector/list-search.c' || echo '$(srcdir)/'`ensc_vector/list-search.c
+
+ensc_vector/libensc_vector_diet_a-list-search.obj: ensc_vector/list-search.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-list-search.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-search.Tpo" -c -o ensc_vector/libensc_vector_diet_a-list-search.obj `if test -f 'ensc_vector/list-search.c'; then $(CYGPATH_W) 'ensc_vector/list-search.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-search.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-search.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-search.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-search.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-search.c' object='ensc_vector/libensc_vector_diet_a-list-search.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-list-search.obj `if test -f 'ensc_vector/list-search.c'; then $(CYGPATH_W) 'ensc_vector/list-search.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-search.c'; fi`
+
+ensc_vector/libensc_vector_diet_a-list-searchselforg.o: ensc_vector/list-searchselforg.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-list-searchselforg.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-searchselforg.Tpo" -c -o ensc_vector/libensc_vector_diet_a-list-searchselforg.o `test -f 'ensc_vector/list-searchselforg.c' || echo '$(srcdir)/'`ensc_vector/list-searchselforg.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-searchselforg.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-searchselforg.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-searchselforg.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-searchselforg.c' object='ensc_vector/libensc_vector_diet_a-list-searchselforg.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-list-searchselforg.o `test -f 'ensc_vector/list-searchselforg.c' || echo '$(srcdir)/'`ensc_vector/list-searchselforg.c
+
+ensc_vector/libensc_vector_diet_a-list-searchselforg.obj: ensc_vector/list-searchselforg.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_diet_a-list-searchselforg.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-searchselforg.Tpo" -c -o ensc_vector/libensc_vector_diet_a-list-searchselforg.obj `if test -f 'ensc_vector/list-searchselforg.c'; then $(CYGPATH_W) 'ensc_vector/list-searchselforg.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-searchselforg.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-searchselforg.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-searchselforg.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_diet_a-list-searchselforg.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-searchselforg.c' object='ensc_vector/libensc_vector_diet_a-list-searchselforg.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_diet_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_diet_a-list-searchselforg.obj `if test -f 'ensc_vector/list-searchselforg.c'; then $(CYGPATH_W) 'ensc_vector/list-searchselforg.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-searchselforg.c'; fi`
+
+ensc_vector/libensc_vector_glibc_a-vector-clear.o: ensc_vector/vector-clear.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-vector-clear.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-clear.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-vector-clear.o `test -f 'ensc_vector/vector-clear.c' || echo '$(srcdir)/'`ensc_vector/vector-clear.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-clear.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-clear.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-clear.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-clear.c' object='ensc_vector/libensc_vector_glibc_a-vector-clear.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-vector-clear.o `test -f 'ensc_vector/vector-clear.c' || echo '$(srcdir)/'`ensc_vector/vector-clear.c
+
+ensc_vector/libensc_vector_glibc_a-vector-clear.obj: ensc_vector/vector-clear.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-vector-clear.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-clear.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-vector-clear.obj `if test -f 'ensc_vector/vector-clear.c'; then $(CYGPATH_W) 'ensc_vector/vector-clear.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-clear.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-clear.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-clear.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-clear.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-clear.c' object='ensc_vector/libensc_vector_glibc_a-vector-clear.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-vector-clear.obj `if test -f 'ensc_vector/vector-clear.c'; then $(CYGPATH_W) 'ensc_vector/vector-clear.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-clear.c'; fi`
+
+ensc_vector/libensc_vector_glibc_a-vector-foreach.o: ensc_vector/vector-foreach.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-vector-foreach.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-foreach.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-vector-foreach.o `test -f 'ensc_vector/vector-foreach.c' || echo '$(srcdir)/'`ensc_vector/vector-foreach.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-foreach.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-foreach.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-foreach.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-foreach.c' object='ensc_vector/libensc_vector_glibc_a-vector-foreach.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-vector-foreach.o `test -f 'ensc_vector/vector-foreach.c' || echo '$(srcdir)/'`ensc_vector/vector-foreach.c
+
+ensc_vector/libensc_vector_glibc_a-vector-foreach.obj: ensc_vector/vector-foreach.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-vector-foreach.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-foreach.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-vector-foreach.obj `if test -f 'ensc_vector/vector-foreach.c'; then $(CYGPATH_W) 'ensc_vector/vector-foreach.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-foreach.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-foreach.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-foreach.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-foreach.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-foreach.c' object='ensc_vector/libensc_vector_glibc_a-vector-foreach.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-vector-foreach.obj `if test -f 'ensc_vector/vector-foreach.c'; then $(CYGPATH_W) 'ensc_vector/vector-foreach.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-foreach.c'; fi`
+
+ensc_vector/libensc_vector_glibc_a-vector-free.o: ensc_vector/vector-free.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-vector-free.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-free.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-vector-free.o `test -f 'ensc_vector/vector-free.c' || echo '$(srcdir)/'`ensc_vector/vector-free.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-free.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-free.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-free.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-free.c' object='ensc_vector/libensc_vector_glibc_a-vector-free.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-vector-free.o `test -f 'ensc_vector/vector-free.c' || echo '$(srcdir)/'`ensc_vector/vector-free.c
+
+ensc_vector/libensc_vector_glibc_a-vector-free.obj: ensc_vector/vector-free.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-vector-free.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-free.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-vector-free.obj `if test -f 'ensc_vector/vector-free.c'; then $(CYGPATH_W) 'ensc_vector/vector-free.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-free.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-free.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-free.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-free.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-free.c' object='ensc_vector/libensc_vector_glibc_a-vector-free.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-vector-free.obj `if test -f 'ensc_vector/vector-free.c'; then $(CYGPATH_W) 'ensc_vector/vector-free.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-free.c'; fi`
+
+ensc_vector/libensc_vector_glibc_a-vector-init.o: ensc_vector/vector-init.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-vector-init.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-init.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-vector-init.o `test -f 'ensc_vector/vector-init.c' || echo '$(srcdir)/'`ensc_vector/vector-init.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-init.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-init.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-init.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-init.c' object='ensc_vector/libensc_vector_glibc_a-vector-init.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-vector-init.o `test -f 'ensc_vector/vector-init.c' || echo '$(srcdir)/'`ensc_vector/vector-init.c
+
+ensc_vector/libensc_vector_glibc_a-vector-init.obj: ensc_vector/vector-init.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-vector-init.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-init.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-vector-init.obj `if test -f 'ensc_vector/vector-init.c'; then $(CYGPATH_W) 'ensc_vector/vector-init.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-init.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-init.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-init.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-init.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-init.c' object='ensc_vector/libensc_vector_glibc_a-vector-init.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-vector-init.obj `if test -f 'ensc_vector/vector-init.c'; then $(CYGPATH_W) 'ensc_vector/vector-init.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-init.c'; fi`
+
+ensc_vector/libensc_vector_glibc_a-vector-insert.o: ensc_vector/vector-insert.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-vector-insert.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-insert.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-vector-insert.o `test -f 'ensc_vector/vector-insert.c' || echo '$(srcdir)/'`ensc_vector/vector-insert.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-insert.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-insert.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-insert.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-insert.c' object='ensc_vector/libensc_vector_glibc_a-vector-insert.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-vector-insert.o `test -f 'ensc_vector/vector-insert.c' || echo '$(srcdir)/'`ensc_vector/vector-insert.c
+
+ensc_vector/libensc_vector_glibc_a-vector-insert.obj: ensc_vector/vector-insert.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-vector-insert.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-insert.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-vector-insert.obj `if test -f 'ensc_vector/vector-insert.c'; then $(CYGPATH_W) 'ensc_vector/vector-insert.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-insert.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-insert.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-insert.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-insert.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-insert.c' object='ensc_vector/libensc_vector_glibc_a-vector-insert.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-vector-insert.obj `if test -f 'ensc_vector/vector-insert.c'; then $(CYGPATH_W) 'ensc_vector/vector-insert.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-insert.c'; fi`
+
+ensc_vector/libensc_vector_glibc_a-vector-popback.o: ensc_vector/vector-popback.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-vector-popback.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-popback.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-vector-popback.o `test -f 'ensc_vector/vector-popback.c' || echo '$(srcdir)/'`ensc_vector/vector-popback.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-popback.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-popback.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-popback.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-popback.c' object='ensc_vector/libensc_vector_glibc_a-vector-popback.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-vector-popback.o `test -f 'ensc_vector/vector-popback.c' || echo '$(srcdir)/'`ensc_vector/vector-popback.c
+
+ensc_vector/libensc_vector_glibc_a-vector-popback.obj: ensc_vector/vector-popback.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-vector-popback.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-popback.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-vector-popback.obj `if test -f 'ensc_vector/vector-popback.c'; then $(CYGPATH_W) 'ensc_vector/vector-popback.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-popback.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-popback.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-popback.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-popback.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-popback.c' object='ensc_vector/libensc_vector_glibc_a-vector-popback.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-vector-popback.obj `if test -f 'ensc_vector/vector-popback.c'; then $(CYGPATH_W) 'ensc_vector/vector-popback.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-popback.c'; fi`
+
+ensc_vector/libensc_vector_glibc_a-vector-pushback.o: ensc_vector/vector-pushback.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-vector-pushback.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-pushback.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-vector-pushback.o `test -f 'ensc_vector/vector-pushback.c' || echo '$(srcdir)/'`ensc_vector/vector-pushback.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-pushback.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-pushback.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-pushback.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-pushback.c' object='ensc_vector/libensc_vector_glibc_a-vector-pushback.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-vector-pushback.o `test -f 'ensc_vector/vector-pushback.c' || echo '$(srcdir)/'`ensc_vector/vector-pushback.c
+
+ensc_vector/libensc_vector_glibc_a-vector-pushback.obj: ensc_vector/vector-pushback.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-vector-pushback.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-pushback.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-vector-pushback.obj `if test -f 'ensc_vector/vector-pushback.c'; then $(CYGPATH_W) 'ensc_vector/vector-pushback.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-pushback.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-pushback.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-pushback.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-pushback.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-pushback.c' object='ensc_vector/libensc_vector_glibc_a-vector-pushback.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-vector-pushback.obj `if test -f 'ensc_vector/vector-pushback.c'; then $(CYGPATH_W) 'ensc_vector/vector-pushback.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-pushback.c'; fi`
+
+ensc_vector/libensc_vector_glibc_a-vector-resize.o: ensc_vector/vector-resize.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-vector-resize.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-resize.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-vector-resize.o `test -f 'ensc_vector/vector-resize.c' || echo '$(srcdir)/'`ensc_vector/vector-resize.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-resize.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-resize.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-resize.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-resize.c' object='ensc_vector/libensc_vector_glibc_a-vector-resize.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-vector-resize.o `test -f 'ensc_vector/vector-resize.c' || echo '$(srcdir)/'`ensc_vector/vector-resize.c
+
+ensc_vector/libensc_vector_glibc_a-vector-resize.obj: ensc_vector/vector-resize.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-vector-resize.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-resize.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-vector-resize.obj `if test -f 'ensc_vector/vector-resize.c'; then $(CYGPATH_W) 'ensc_vector/vector-resize.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-resize.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-resize.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-resize.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-resize.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-resize.c' object='ensc_vector/libensc_vector_glibc_a-vector-resize.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-vector-resize.obj `if test -f 'ensc_vector/vector-resize.c'; then $(CYGPATH_W) 'ensc_vector/vector-resize.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-resize.c'; fi`
+
+ensc_vector/libensc_vector_glibc_a-vector-search.o: ensc_vector/vector-search.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-vector-search.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-search.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-vector-search.o `test -f 'ensc_vector/vector-search.c' || echo '$(srcdir)/'`ensc_vector/vector-search.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-search.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-search.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-search.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-search.c' object='ensc_vector/libensc_vector_glibc_a-vector-search.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-vector-search.o `test -f 'ensc_vector/vector-search.c' || echo '$(srcdir)/'`ensc_vector/vector-search.c
+
+ensc_vector/libensc_vector_glibc_a-vector-search.obj: ensc_vector/vector-search.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-vector-search.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-search.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-vector-search.obj `if test -f 'ensc_vector/vector-search.c'; then $(CYGPATH_W) 'ensc_vector/vector-search.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-search.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-search.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-search.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-search.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-search.c' object='ensc_vector/libensc_vector_glibc_a-vector-search.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-vector-search.obj `if test -f 'ensc_vector/vector-search.c'; then $(CYGPATH_W) 'ensc_vector/vector-search.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-search.c'; fi`
+
+ensc_vector/libensc_vector_glibc_a-vector-searchselforg.o: ensc_vector/vector-searchselforg.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-vector-searchselforg.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-searchselforg.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-vector-searchselforg.o `test -f 'ensc_vector/vector-searchselforg.c' || echo '$(srcdir)/'`ensc_vector/vector-searchselforg.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-searchselforg.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-searchselforg.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-searchselforg.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-searchselforg.c' object='ensc_vector/libensc_vector_glibc_a-vector-searchselforg.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-vector-searchselforg.o `test -f 'ensc_vector/vector-searchselforg.c' || echo '$(srcdir)/'`ensc_vector/vector-searchselforg.c
+
+ensc_vector/libensc_vector_glibc_a-vector-searchselforg.obj: ensc_vector/vector-searchselforg.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-vector-searchselforg.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-searchselforg.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-vector-searchselforg.obj `if test -f 'ensc_vector/vector-searchselforg.c'; then $(CYGPATH_W) 'ensc_vector/vector-searchselforg.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-searchselforg.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-searchselforg.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-searchselforg.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-searchselforg.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-searchselforg.c' object='ensc_vector/libensc_vector_glibc_a-vector-searchselforg.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-vector-searchselforg.obj `if test -f 'ensc_vector/vector-searchselforg.c'; then $(CYGPATH_W) 'ensc_vector/vector-searchselforg.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-searchselforg.c'; fi`
+
+ensc_vector/libensc_vector_glibc_a-vector-sort.o: ensc_vector/vector-sort.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-vector-sort.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-sort.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-vector-sort.o `test -f 'ensc_vector/vector-sort.c' || echo '$(srcdir)/'`ensc_vector/vector-sort.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-sort.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-sort.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-sort.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-sort.c' object='ensc_vector/libensc_vector_glibc_a-vector-sort.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-vector-sort.o `test -f 'ensc_vector/vector-sort.c' || echo '$(srcdir)/'`ensc_vector/vector-sort.c
+
+ensc_vector/libensc_vector_glibc_a-vector-sort.obj: ensc_vector/vector-sort.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-vector-sort.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-sort.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-vector-sort.obj `if test -f 'ensc_vector/vector-sort.c'; then $(CYGPATH_W) 'ensc_vector/vector-sort.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-sort.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-sort.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-sort.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-sort.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-sort.c' object='ensc_vector/libensc_vector_glibc_a-vector-sort.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-vector-sort.obj `if test -f 'ensc_vector/vector-sort.c'; then $(CYGPATH_W) 'ensc_vector/vector-sort.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-sort.c'; fi`
+
+ensc_vector/libensc_vector_glibc_a-vector-unique.o: ensc_vector/vector-unique.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-vector-unique.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-unique.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-vector-unique.o `test -f 'ensc_vector/vector-unique.c' || echo '$(srcdir)/'`ensc_vector/vector-unique.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-unique.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-unique.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-unique.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-unique.c' object='ensc_vector/libensc_vector_glibc_a-vector-unique.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-vector-unique.o `test -f 'ensc_vector/vector-unique.c' || echo '$(srcdir)/'`ensc_vector/vector-unique.c
+
+ensc_vector/libensc_vector_glibc_a-vector-unique.obj: ensc_vector/vector-unique.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-vector-unique.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-unique.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-vector-unique.obj `if test -f 'ensc_vector/vector-unique.c'; then $(CYGPATH_W) 'ensc_vector/vector-unique.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-unique.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-unique.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-unique.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-unique.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-unique.c' object='ensc_vector/libensc_vector_glibc_a-vector-unique.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-vector-unique.obj `if test -f 'ensc_vector/vector-unique.c'; then $(CYGPATH_W) 'ensc_vector/vector-unique.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-unique.c'; fi`
+
+ensc_vector/libensc_vector_glibc_a-vector-zeroend.o: ensc_vector/vector-zeroend.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-vector-zeroend.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-zeroend.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-vector-zeroend.o `test -f 'ensc_vector/vector-zeroend.c' || echo '$(srcdir)/'`ensc_vector/vector-zeroend.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-zeroend.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-zeroend.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-zeroend.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-zeroend.c' object='ensc_vector/libensc_vector_glibc_a-vector-zeroend.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-vector-zeroend.o `test -f 'ensc_vector/vector-zeroend.c' || echo '$(srcdir)/'`ensc_vector/vector-zeroend.c
+
+ensc_vector/libensc_vector_glibc_a-vector-zeroend.obj: ensc_vector/vector-zeroend.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-vector-zeroend.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-zeroend.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-vector-zeroend.obj `if test -f 'ensc_vector/vector-zeroend.c'; then $(CYGPATH_W) 'ensc_vector/vector-zeroend.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-zeroend.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-zeroend.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-zeroend.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-vector-zeroend.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/vector-zeroend.c' object='ensc_vector/libensc_vector_glibc_a-vector-zeroend.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-vector-zeroend.obj `if test -f 'ensc_vector/vector-zeroend.c'; then $(CYGPATH_W) 'ensc_vector/vector-zeroend.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/vector-zeroend.c'; fi`
+
+ensc_vector/libensc_vector_glibc_a-list-at.o: ensc_vector/list-at.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-list-at.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-at.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-list-at.o `test -f 'ensc_vector/list-at.c' || echo '$(srcdir)/'`ensc_vector/list-at.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-at.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-at.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-at.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-at.c' object='ensc_vector/libensc_vector_glibc_a-list-at.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-list-at.o `test -f 'ensc_vector/list-at.c' || echo '$(srcdir)/'`ensc_vector/list-at.c
+
+ensc_vector/libensc_vector_glibc_a-list-at.obj: ensc_vector/list-at.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-list-at.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-at.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-list-at.obj `if test -f 'ensc_vector/list-at.c'; then $(CYGPATH_W) 'ensc_vector/list-at.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-at.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-at.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-at.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-at.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-at.c' object='ensc_vector/libensc_vector_glibc_a-list-at.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-list-at.obj `if test -f 'ensc_vector/list-at.c'; then $(CYGPATH_W) 'ensc_vector/list-at.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-at.c'; fi`
+
+ensc_vector/libensc_vector_glibc_a-list-add.o: ensc_vector/list-add.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-list-add.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-add.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-list-add.o `test -f 'ensc_vector/list-add.c' || echo '$(srcdir)/'`ensc_vector/list-add.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-add.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-add.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-add.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-add.c' object='ensc_vector/libensc_vector_glibc_a-list-add.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-list-add.o `test -f 'ensc_vector/list-add.c' || echo '$(srcdir)/'`ensc_vector/list-add.c
+
+ensc_vector/libensc_vector_glibc_a-list-add.obj: ensc_vector/list-add.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-list-add.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-add.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-list-add.obj `if test -f 'ensc_vector/list-add.c'; then $(CYGPATH_W) 'ensc_vector/list-add.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-add.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-add.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-add.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-add.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-add.c' object='ensc_vector/libensc_vector_glibc_a-list-add.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-list-add.obj `if test -f 'ensc_vector/list-add.c'; then $(CYGPATH_W) 'ensc_vector/list-add.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-add.c'; fi`
+
+ensc_vector/libensc_vector_glibc_a-list-free.o: ensc_vector/list-free.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-list-free.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-free.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-list-free.o `test -f 'ensc_vector/list-free.c' || echo '$(srcdir)/'`ensc_vector/list-free.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-free.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-free.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-free.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-free.c' object='ensc_vector/libensc_vector_glibc_a-list-free.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-list-free.o `test -f 'ensc_vector/list-free.c' || echo '$(srcdir)/'`ensc_vector/list-free.c
+
+ensc_vector/libensc_vector_glibc_a-list-free.obj: ensc_vector/list-free.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-list-free.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-free.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-list-free.obj `if test -f 'ensc_vector/list-free.c'; then $(CYGPATH_W) 'ensc_vector/list-free.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-free.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-free.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-free.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-free.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-free.c' object='ensc_vector/libensc_vector_glibc_a-list-free.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-list-free.obj `if test -f 'ensc_vector/list-free.c'; then $(CYGPATH_W) 'ensc_vector/list-free.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-free.c'; fi`
+
+ensc_vector/libensc_vector_glibc_a-list-init.o: ensc_vector/list-init.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-list-init.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-init.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-list-init.o `test -f 'ensc_vector/list-init.c' || echo '$(srcdir)/'`ensc_vector/list-init.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-init.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-init.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-init.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-init.c' object='ensc_vector/libensc_vector_glibc_a-list-init.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-list-init.o `test -f 'ensc_vector/list-init.c' || echo '$(srcdir)/'`ensc_vector/list-init.c
+
+ensc_vector/libensc_vector_glibc_a-list-init.obj: ensc_vector/list-init.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-list-init.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-init.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-list-init.obj `if test -f 'ensc_vector/list-init.c'; then $(CYGPATH_W) 'ensc_vector/list-init.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-init.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-init.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-init.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-init.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-init.c' object='ensc_vector/libensc_vector_glibc_a-list-init.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-list-init.obj `if test -f 'ensc_vector/list-init.c'; then $(CYGPATH_W) 'ensc_vector/list-init.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-init.c'; fi`
+
+ensc_vector/libensc_vector_glibc_a-list-insertinternal.o: ensc_vector/list-insertinternal.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-list-insertinternal.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-insertinternal.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-list-insertinternal.o `test -f 'ensc_vector/list-insertinternal.c' || echo '$(srcdir)/'`ensc_vector/list-insertinternal.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-insertinternal.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-insertinternal.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-insertinternal.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-insertinternal.c' object='ensc_vector/libensc_vector_glibc_a-list-insertinternal.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-list-insertinternal.o `test -f 'ensc_vector/list-insertinternal.c' || echo '$(srcdir)/'`ensc_vector/list-insertinternal.c
+
+ensc_vector/libensc_vector_glibc_a-list-insertinternal.obj: ensc_vector/list-insertinternal.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-list-insertinternal.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-insertinternal.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-list-insertinternal.obj `if test -f 'ensc_vector/list-insertinternal.c'; then $(CYGPATH_W) 'ensc_vector/list-insertinternal.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-insertinternal.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-insertinternal.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-insertinternal.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-insertinternal.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-insertinternal.c' object='ensc_vector/libensc_vector_glibc_a-list-insertinternal.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-list-insertinternal.obj `if test -f 'ensc_vector/list-insertinternal.c'; then $(CYGPATH_W) 'ensc_vector/list-insertinternal.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-insertinternal.c'; fi`
+
+ensc_vector/libensc_vector_glibc_a-list-search.o: ensc_vector/list-search.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-list-search.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-search.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-list-search.o `test -f 'ensc_vector/list-search.c' || echo '$(srcdir)/'`ensc_vector/list-search.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-search.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-search.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-search.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-search.c' object='ensc_vector/libensc_vector_glibc_a-list-search.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-list-search.o `test -f 'ensc_vector/list-search.c' || echo '$(srcdir)/'`ensc_vector/list-search.c
+
+ensc_vector/libensc_vector_glibc_a-list-search.obj: ensc_vector/list-search.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-list-search.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-search.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-list-search.obj `if test -f 'ensc_vector/list-search.c'; then $(CYGPATH_W) 'ensc_vector/list-search.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-search.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-search.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-search.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-search.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-search.c' object='ensc_vector/libensc_vector_glibc_a-list-search.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-list-search.obj `if test -f 'ensc_vector/list-search.c'; then $(CYGPATH_W) 'ensc_vector/list-search.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-search.c'; fi`
+
+ensc_vector/libensc_vector_glibc_a-list-searchselforg.o: ensc_vector/list-searchselforg.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-list-searchselforg.o -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-searchselforg.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-list-searchselforg.o `test -f 'ensc_vector/list-searchselforg.c' || echo '$(srcdir)/'`ensc_vector/list-searchselforg.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-searchselforg.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-searchselforg.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-searchselforg.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-searchselforg.c' object='ensc_vector/libensc_vector_glibc_a-list-searchselforg.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-list-searchselforg.o `test -f 'ensc_vector/list-searchselforg.c' || echo '$(srcdir)/'`ensc_vector/list-searchselforg.c
+
+ensc_vector/libensc_vector_glibc_a-list-searchselforg.obj: ensc_vector/list-searchselforg.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_vector/libensc_vector_glibc_a-list-searchselforg.obj -MD -MP -MF "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-searchselforg.Tpo" -c -o ensc_vector/libensc_vector_glibc_a-list-searchselforg.obj `if test -f 'ensc_vector/list-searchselforg.c'; then $(CYGPATH_W) 'ensc_vector/list-searchselforg.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-searchselforg.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-searchselforg.Tpo" "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-searchselforg.Po"; else rm -f "ensc_vector/$(DEPDIR)/libensc_vector_glibc_a-list-searchselforg.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_vector/list-searchselforg.c' object='ensc_vector/libensc_vector_glibc_a-list-searchselforg.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libensc_vector_glibc_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_vector/libensc_vector_glibc_a-list-searchselforg.obj `if test -f 'ensc_vector/list-searchselforg.c'; then $(CYGPATH_W) 'ensc_vector/list-searchselforg.c'; else $(CYGPATH_W) '$(srcdir)/ensc_vector/list-searchselforg.c'; fi`
+
+lib/lib_libvserver_la-syscall.lo: lib/syscall.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall.Tpo" -c -o lib/lib_libvserver_la-syscall.lo `test -f 'lib/syscall.c' || echo '$(srcdir)/'`lib/syscall.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall.c' object='lib/lib_libvserver_la-syscall.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall.lo `test -f 'lib/syscall.c' || echo '$(srcdir)/'`lib/syscall.c
+
+lib/lib_libvserver_la-checkversion.lo: lib/checkversion.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-checkversion.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-checkversion.Tpo" -c -o lib/lib_libvserver_la-checkversion.lo `test -f 'lib/checkversion.c' || echo '$(srcdir)/'`lib/checkversion.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-checkversion.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-checkversion.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-checkversion.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/checkversion.c' object='lib/lib_libvserver_la-checkversion.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-checkversion.lo `test -f 'lib/checkversion.c' || echo '$(srcdir)/'`lib/checkversion.c
+
+lib/lib_libvserver_la-isdirectory.lo: lib/isdirectory.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-isdirectory.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-isdirectory.Tpo" -c -o lib/lib_libvserver_la-isdirectory.lo `test -f 'lib/isdirectory.c' || echo '$(srcdir)/'`lib/isdirectory.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-isdirectory.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-isdirectory.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-isdirectory.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/isdirectory.c' object='lib/lib_libvserver_la-isdirectory.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-isdirectory.lo `test -f 'lib/isdirectory.c' || echo '$(srcdir)/'`lib/isdirectory.c
+
+lib/lib_libvserver_la-isfile.lo: lib/isfile.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-isfile.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-isfile.Tpo" -c -o lib/lib_libvserver_la-isfile.lo `test -f 'lib/isfile.c' || echo '$(srcdir)/'`lib/isfile.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-isfile.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-isfile.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-isfile.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/isfile.c' object='lib/lib_libvserver_la-isfile.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-isfile.lo `test -f 'lib/isfile.c' || echo '$(srcdir)/'`lib/isfile.c
+
+lib/lib_libvserver_la-islink.lo: lib/islink.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-islink.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-islink.Tpo" -c -o lib/lib_libvserver_la-islink.lo `test -f 'lib/islink.c' || echo '$(srcdir)/'`lib/islink.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-islink.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-islink.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-islink.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/islink.c' object='lib/lib_libvserver_la-islink.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-islink.lo `test -f 'lib/islink.c' || echo '$(srcdir)/'`lib/islink.c
+
+lib/lib_libvserver_la-getnbipv4root.lo: lib/getnbipv4root.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-getnbipv4root.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-getnbipv4root.Tpo" -c -o lib/lib_libvserver_la-getnbipv4root.lo `test -f 'lib/getnbipv4root.c' || echo '$(srcdir)/'`lib/getnbipv4root.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-getnbipv4root.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-getnbipv4root.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-getnbipv4root.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getnbipv4root.c' object='lib/lib_libvserver_la-getnbipv4root.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-getnbipv4root.lo `test -f 'lib/getnbipv4root.c' || echo '$(srcdir)/'`lib/getnbipv4root.c
+
+lib/lib_libvserver_la-getversion.lo: lib/getversion.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-getversion.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-getversion.Tpo" -c -o lib/lib_libvserver_la-getversion.lo `test -f 'lib/getversion.c' || echo '$(srcdir)/'`lib/getversion.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-getversion.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-getversion.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-getversion.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getversion.c' object='lib/lib_libvserver_la-getversion.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-getversion.lo `test -f 'lib/getversion.c' || echo '$(srcdir)/'`lib/getversion.c
+
+lib/lib_libvserver_la-capabilities.lo: lib/capabilities.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-capabilities.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-capabilities.Tpo" -c -o lib/lib_libvserver_la-capabilities.lo `test -f 'lib/capabilities.c' || echo '$(srcdir)/'`lib/capabilities.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-capabilities.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-capabilities.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-capabilities.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/capabilities.c' object='lib/lib_libvserver_la-capabilities.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-capabilities.lo `test -f 'lib/capabilities.c' || echo '$(srcdir)/'`lib/capabilities.c
+
+lib/lib_libvserver_la-getfilecontext.lo: lib/getfilecontext.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-getfilecontext.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-getfilecontext.Tpo" -c -o lib/lib_libvserver_la-getfilecontext.lo `test -f 'lib/getfilecontext.c' || echo '$(srcdir)/'`lib/getfilecontext.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-getfilecontext.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-getfilecontext.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-getfilecontext.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getfilecontext.c' object='lib/lib_libvserver_la-getfilecontext.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-getfilecontext.lo `test -f 'lib/getfilecontext.c' || echo '$(srcdir)/'`lib/getfilecontext.c
+
+lib/lib_libvserver_la-getinsecurebcaps.lo: lib/getinsecurebcaps.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-getinsecurebcaps.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-getinsecurebcaps.Tpo" -c -o lib/lib_libvserver_la-getinsecurebcaps.lo `test -f 'lib/getinsecurebcaps.c' || echo '$(srcdir)/'`lib/getinsecurebcaps.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-getinsecurebcaps.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-getinsecurebcaps.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-getinsecurebcaps.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getinsecurebcaps.c' object='lib/lib_libvserver_la-getinsecurebcaps.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-getinsecurebcaps.lo `test -f 'lib/getinsecurebcaps.c' || echo '$(srcdir)/'`lib/getinsecurebcaps.c
+
+lib/lib_libvserver_la-getxidtype.lo: lib/getxidtype.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-getxidtype.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-getxidtype.Tpo" -c -o lib/lib_libvserver_la-getxidtype.lo `test -f 'lib/getxidtype.c' || echo '$(srcdir)/'`lib/getxidtype.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-getxidtype.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-getxidtype.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-getxidtype.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getxidtype.c' object='lib/lib_libvserver_la-getxidtype.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-getxidtype.lo `test -f 'lib/getxidtype.c' || echo '$(srcdir)/'`lib/getxidtype.c
+
+lib/lib_libvserver_la-isdynamicxid.lo: lib/isdynamicxid.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-isdynamicxid.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-isdynamicxid.Tpo" -c -o lib/lib_libvserver_la-isdynamicxid.lo `test -f 'lib/isdynamicxid.c' || echo '$(srcdir)/'`lib/isdynamicxid.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-isdynamicxid.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-isdynamicxid.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-isdynamicxid.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/isdynamicxid.c' object='lib/lib_libvserver_la-isdynamicxid.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-isdynamicxid.lo `test -f 'lib/isdynamicxid.c' || echo '$(srcdir)/'`lib/isdynamicxid.c
+
+lib/lib_libvserver_la-issupported.lo: lib/issupported.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-issupported.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-issupported.Tpo" -c -o lib/lib_libvserver_la-issupported.lo `test -f 'lib/issupported.c' || echo '$(srcdir)/'`lib/issupported.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-issupported.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-issupported.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-issupported.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/issupported.c' object='lib/lib_libvserver_la-issupported.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-issupported.lo `test -f 'lib/issupported.c' || echo '$(srcdir)/'`lib/issupported.c
+
+lib/lib_libvserver_la-issupportedstring.lo: lib/issupportedstring.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-issupportedstring.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-issupportedstring.Tpo" -c -o lib/lib_libvserver_la-issupportedstring.lo `test -f 'lib/issupportedstring.c' || echo '$(srcdir)/'`lib/issupportedstring.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-issupportedstring.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-issupportedstring.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-issupportedstring.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/issupportedstring.c' object='lib/lib_libvserver_la-issupportedstring.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-issupportedstring.lo `test -f 'lib/issupportedstring.c' || echo '$(srcdir)/'`lib/issupportedstring.c
+
+lib/lib_libvserver_la-listparser_uint32.lo: lib/listparser_uint32.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-listparser_uint32.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-listparser_uint32.Tpo" -c -o lib/lib_libvserver_la-listparser_uint32.lo `test -f 'lib/listparser_uint32.c' || echo '$(srcdir)/'`lib/listparser_uint32.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-listparser_uint32.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-listparser_uint32.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-listparser_uint32.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/listparser_uint32.c' object='lib/lib_libvserver_la-listparser_uint32.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-listparser_uint32.lo `test -f 'lib/listparser_uint32.c' || echo '$(srcdir)/'`lib/listparser_uint32.c
+
+lib/lib_libvserver_la-listparser_uint64.lo: lib/listparser_uint64.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-listparser_uint64.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-listparser_uint64.Tpo" -c -o lib/lib_libvserver_la-listparser_uint64.lo `test -f 'lib/listparser_uint64.c' || echo '$(srcdir)/'`lib/listparser_uint64.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-listparser_uint64.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-listparser_uint64.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-listparser_uint64.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/listparser_uint64.c' object='lib/lib_libvserver_la-listparser_uint64.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-listparser_uint64.lo `test -f 'lib/listparser_uint64.c' || echo '$(srcdir)/'`lib/listparser_uint64.c
+
+lib/lib_libvserver_la-personalityflag.lo: lib/personalityflag.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-personalityflag.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-personalityflag.Tpo" -c -o lib/lib_libvserver_la-personalityflag.lo `test -f 'lib/personalityflag.c' || echo '$(srcdir)/'`lib/personalityflag.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-personalityflag.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-personalityflag.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-personalityflag.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/personalityflag.c' object='lib/lib_libvserver_la-personalityflag.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-personalityflag.lo `test -f 'lib/personalityflag.c' || echo '$(srcdir)/'`lib/personalityflag.c
+
+lib/lib_libvserver_la-personalityflag_list.lo: lib/personalityflag_list.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-personalityflag_list.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-personalityflag_list.Tpo" -c -o lib/lib_libvserver_la-personalityflag_list.lo `test -f 'lib/personalityflag_list.c' || echo '$(srcdir)/'`lib/personalityflag_list.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-personalityflag_list.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-personalityflag_list.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-personalityflag_list.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/personalityflag_list.c' object='lib/lib_libvserver_la-personalityflag_list.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-personalityflag_list.lo `test -f 'lib/personalityflag_list.c' || echo '$(srcdir)/'`lib/personalityflag_list.c
+
+lib/lib_libvserver_la-personalitytype.lo: lib/personalitytype.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-personalitytype.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-personalitytype.Tpo" -c -o lib/lib_libvserver_la-personalitytype.lo `test -f 'lib/personalitytype.c' || echo '$(srcdir)/'`lib/personalitytype.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-personalitytype.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-personalitytype.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-personalitytype.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/personalitytype.c' object='lib/lib_libvserver_la-personalitytype.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-personalitytype.lo `test -f 'lib/personalitytype.c' || echo '$(srcdir)/'`lib/personalitytype.c
+
+lib/lib_libvserver_la-syscall-syscall.lo: lib/syscall-syscall.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall-syscall.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall-syscall.Tpo" -c -o lib/lib_libvserver_la-syscall-syscall.lo `test -f 'lib/syscall-syscall.c' || echo '$(srcdir)/'`lib/syscall-syscall.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall-syscall.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall-syscall.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall-syscall.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall-syscall.c' object='lib/lib_libvserver_la-syscall-syscall.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall-syscall.lo `test -f 'lib/syscall-syscall.c' || echo '$(srcdir)/'`lib/syscall-syscall.c
+
+lib/lib_libvserver_la-val2text-t2v-uint32.lo: lib/val2text-t2v-uint32.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-val2text-t2v-uint32.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-val2text-t2v-uint32.Tpo" -c -o lib/lib_libvserver_la-val2text-t2v-uint32.lo `test -f 'lib/val2text-t2v-uint32.c' || echo '$(srcdir)/'`lib/val2text-t2v-uint32.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-val2text-t2v-uint32.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-val2text-t2v-uint32.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-val2text-t2v-uint32.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/val2text-t2v-uint32.c' object='lib/lib_libvserver_la-val2text-t2v-uint32.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-val2text-t2v-uint32.lo `test -f 'lib/val2text-t2v-uint32.c' || echo '$(srcdir)/'`lib/val2text-t2v-uint32.c
+
+lib/lib_libvserver_la-val2text-t2v-uint64.lo: lib/val2text-t2v-uint64.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-val2text-t2v-uint64.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-val2text-t2v-uint64.Tpo" -c -o lib/lib_libvserver_la-val2text-t2v-uint64.lo `test -f 'lib/val2text-t2v-uint64.c' || echo '$(srcdir)/'`lib/val2text-t2v-uint64.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-val2text-t2v-uint64.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-val2text-t2v-uint64.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-val2text-t2v-uint64.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/val2text-t2v-uint64.c' object='lib/lib_libvserver_la-val2text-t2v-uint64.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-val2text-t2v-uint64.lo `test -f 'lib/val2text-t2v-uint64.c' || echo '$(srcdir)/'`lib/val2text-t2v-uint64.c
+
+lib/lib_libvserver_la-val2text-v2t-uint32.lo: lib/val2text-v2t-uint32.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-val2text-v2t-uint32.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-val2text-v2t-uint32.Tpo" -c -o lib/lib_libvserver_la-val2text-v2t-uint32.lo `test -f 'lib/val2text-v2t-uint32.c' || echo '$(srcdir)/'`lib/val2text-v2t-uint32.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-val2text-v2t-uint32.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-val2text-v2t-uint32.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-val2text-v2t-uint32.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/val2text-v2t-uint32.c' object='lib/lib_libvserver_la-val2text-v2t-uint32.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-val2text-v2t-uint32.lo `test -f 'lib/val2text-v2t-uint32.c' || echo '$(srcdir)/'`lib/val2text-v2t-uint32.c
+
+lib/lib_libvserver_la-val2text-v2t-uint64.lo: lib/val2text-v2t-uint64.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-val2text-v2t-uint64.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-val2text-v2t-uint64.Tpo" -c -o lib/lib_libvserver_la-val2text-v2t-uint64.lo `test -f 'lib/val2text-v2t-uint64.c' || echo '$(srcdir)/'`lib/val2text-v2t-uint64.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-val2text-v2t-uint64.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-val2text-v2t-uint64.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-val2text-v2t-uint64.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/val2text-v2t-uint64.c' object='lib/lib_libvserver_la-val2text-v2t-uint64.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-val2text-v2t-uint64.lo `test -f 'lib/val2text-v2t-uint64.c' || echo '$(srcdir)/'`lib/val2text-v2t-uint64.c
+
+lib/lib_libvserver_la-parselimit.lo: lib/parselimit.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-parselimit.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-parselimit.Tpo" -c -o lib/lib_libvserver_la-parselimit.lo `test -f 'lib/parselimit.c' || echo '$(srcdir)/'`lib/parselimit.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-parselimit.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-parselimit.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-parselimit.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/parselimit.c' object='lib/lib_libvserver_la-parselimit.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-parselimit.lo `test -f 'lib/parselimit.c' || echo '$(srcdir)/'`lib/parselimit.c
+
+lib/lib_libvserver_la-getprocentry-legacy.lo: lib/getprocentry-legacy.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-getprocentry-legacy.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-getprocentry-legacy.Tpo" -c -o lib/lib_libvserver_la-getprocentry-legacy.lo `test -f 'lib/getprocentry-legacy.c' || echo '$(srcdir)/'`lib/getprocentry-legacy.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-getprocentry-legacy.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-getprocentry-legacy.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-getprocentry-legacy.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getprocentry-legacy.c' object='lib/lib_libvserver_la-getprocentry-legacy.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-getprocentry-legacy.lo `test -f 'lib/getprocentry-legacy.c' || echo '$(srcdir)/'`lib/getprocentry-legacy.c
+
+lib/lib_libvserver_la-cflags-compat.lo: lib/cflags-compat.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-cflags-compat.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-cflags-compat.Tpo" -c -o lib/lib_libvserver_la-cflags-compat.lo `test -f 'lib/cflags-compat.c' || echo '$(srcdir)/'`lib/cflags-compat.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-cflags-compat.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-cflags-compat.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-cflags-compat.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/cflags-compat.c' object='lib/lib_libvserver_la-cflags-compat.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-cflags-compat.lo `test -f 'lib/cflags-compat.c' || echo '$(srcdir)/'`lib/cflags-compat.c
+
+lib/lib_libvserver_la-cflags_list-compat.lo: lib/cflags_list-compat.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-cflags_list-compat.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-cflags_list-compat.Tpo" -c -o lib/lib_libvserver_la-cflags_list-compat.lo `test -f 'lib/cflags_list-compat.c' || echo '$(srcdir)/'`lib/cflags_list-compat.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-cflags_list-compat.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-cflags_list-compat.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-cflags_list-compat.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/cflags_list-compat.c' object='lib/lib_libvserver_la-cflags_list-compat.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-cflags_list-compat.lo `test -f 'lib/cflags_list-compat.c' || echo '$(srcdir)/'`lib/cflags_list-compat.c
+
+lib/lib_libvserver_la-createskeleton.lo: lib/createskeleton.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-createskeleton.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-createskeleton.Tpo" -c -o lib/lib_libvserver_la-createskeleton.lo `test -f 'lib/createskeleton.c' || echo '$(srcdir)/'`lib/createskeleton.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-createskeleton.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-createskeleton.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-createskeleton.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/createskeleton.c' object='lib/lib_libvserver_la-createskeleton.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-createskeleton.lo `test -f 'lib/createskeleton.c' || echo '$(srcdir)/'`lib/createskeleton.c
+
+lib/lib_libvserver_la-getvserverbyctx.lo: lib/getvserverbyctx.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-getvserverbyctx.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-getvserverbyctx.Tpo" -c -o lib/lib_libvserver_la-getvserverbyctx.lo `test -f 'lib/getvserverbyctx.c' || echo '$(srcdir)/'`lib/getvserverbyctx.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-getvserverbyctx.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-getvserverbyctx.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-getvserverbyctx.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getvserverbyctx.c' object='lib/lib_libvserver_la-getvserverbyctx.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-getvserverbyctx.lo `test -f 'lib/getvserverbyctx.c' || echo '$(srcdir)/'`lib/getvserverbyctx.c
+
+lib/lib_libvserver_la-getvservercfgstyle.lo: lib/getvservercfgstyle.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-getvservercfgstyle.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-getvservercfgstyle.Tpo" -c -o lib/lib_libvserver_la-getvservercfgstyle.lo `test -f 'lib/getvservercfgstyle.c' || echo '$(srcdir)/'`lib/getvservercfgstyle.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-getvservercfgstyle.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-getvservercfgstyle.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-getvservercfgstyle.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getvservercfgstyle.c' object='lib/lib_libvserver_la-getvservercfgstyle.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-getvservercfgstyle.lo `test -f 'lib/getvservercfgstyle.c' || echo '$(srcdir)/'`lib/getvservercfgstyle.c
+
+lib/lib_libvserver_la-getvserverappdir.lo: lib/getvserverappdir.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-getvserverappdir.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-getvserverappdir.Tpo" -c -o lib/lib_libvserver_la-getvserverappdir.lo `test -f 'lib/getvserverappdir.c' || echo '$(srcdir)/'`lib/getvserverappdir.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-getvserverappdir.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-getvserverappdir.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-getvserverappdir.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getvserverappdir.c' object='lib/lib_libvserver_la-getvserverappdir.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-getvserverappdir.lo `test -f 'lib/getvserverappdir.c' || echo '$(srcdir)/'`lib/getvserverappdir.c
+
+lib/lib_libvserver_la-getvservercfgdir.lo: lib/getvservercfgdir.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-getvservercfgdir.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-getvservercfgdir.Tpo" -c -o lib/lib_libvserver_la-getvservercfgdir.lo `test -f 'lib/getvservercfgdir.c' || echo '$(srcdir)/'`lib/getvservercfgdir.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-getvservercfgdir.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-getvservercfgdir.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-getvservercfgdir.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getvservercfgdir.c' object='lib/lib_libvserver_la-getvservercfgdir.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-getvservercfgdir.lo `test -f 'lib/getvservercfgdir.c' || echo '$(srcdir)/'`lib/getvservercfgdir.c
+
+lib/lib_libvserver_la-getvserverctx.lo: lib/getvserverctx.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-getvserverctx.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-getvserverctx.Tpo" -c -o lib/lib_libvserver_la-getvserverctx.lo `test -f 'lib/getvserverctx.c' || echo '$(srcdir)/'`lib/getvserverctx.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-getvserverctx.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-getvserverctx.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-getvserverctx.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getvserverctx.c' object='lib/lib_libvserver_la-getvserverctx.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-getvserverctx.lo `test -f 'lib/getvserverctx.c' || echo '$(srcdir)/'`lib/getvserverctx.c
+
+lib/lib_libvserver_la-getvservername.lo: lib/getvservername.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-getvservername.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-getvservername.Tpo" -c -o lib/lib_libvserver_la-getvservername.lo `test -f 'lib/getvservername.c' || echo '$(srcdir)/'`lib/getvservername.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-getvservername.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-getvservername.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-getvservername.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getvservername.c' object='lib/lib_libvserver_la-getvservername.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-getvservername.lo `test -f 'lib/getvservername.c' || echo '$(srcdir)/'`lib/getvservername.c
+
+lib/lib_libvserver_la-getvservervdir.lo: lib/getvservervdir.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-getvservervdir.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-getvservervdir.Tpo" -c -o lib/lib_libvserver_la-getvservervdir.lo `test -f 'lib/getvservervdir.c' || echo '$(srcdir)/'`lib/getvservervdir.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-getvservervdir.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-getvservervdir.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-getvservervdir.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/getvservervdir.c' object='lib/lib_libvserver_la-getvservervdir.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-getvservervdir.lo `test -f 'lib/getvservervdir.c' || echo '$(srcdir)/'`lib/getvservervdir.c
+
+lib/lib_libvserver_la-xidopt2xid.lo: lib/xidopt2xid.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-xidopt2xid.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-xidopt2xid.Tpo" -c -o lib/lib_libvserver_la-xidopt2xid.lo `test -f 'lib/xidopt2xid.c' || echo '$(srcdir)/'`lib/xidopt2xid.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-xidopt2xid.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-xidopt2xid.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-xidopt2xid.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/xidopt2xid.c' object='lib/lib_libvserver_la-xidopt2xid.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-xidopt2xid.lo `test -f 'lib/xidopt2xid.c' || echo '$(srcdir)/'`lib/xidopt2xid.c
+
+lib/lib_libvserver_la-syscall_rlimit.lo: lib/syscall_rlimit.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_rlimit.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_rlimit.Tpo" -c -o lib/lib_libvserver_la-syscall_rlimit.lo `test -f 'lib/syscall_rlimit.c' || echo '$(srcdir)/'`lib/syscall_rlimit.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_rlimit.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_rlimit.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_rlimit.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_rlimit.c' object='lib/lib_libvserver_la-syscall_rlimit.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_rlimit.lo `test -f 'lib/syscall_rlimit.c' || echo '$(srcdir)/'`lib/syscall_rlimit.c
+
+lib/lib_libvserver_la-syscall_kill.lo: lib/syscall_kill.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_kill.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_kill.Tpo" -c -o lib/lib_libvserver_la-syscall_kill.lo `test -f 'lib/syscall_kill.c' || echo '$(srcdir)/'`lib/syscall_kill.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_kill.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_kill.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_kill.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_kill.c' object='lib/lib_libvserver_la-syscall_kill.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_kill.lo `test -f 'lib/syscall_kill.c' || echo '$(srcdir)/'`lib/syscall_kill.c
+
+lib/lib_libvserver_la-syscall_ctxcreate.lo: lib/syscall_ctxcreate.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_ctxcreate.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_ctxcreate.Tpo" -c -o lib/lib_libvserver_la-syscall_ctxcreate.lo `test -f 'lib/syscall_ctxcreate.c' || echo '$(srcdir)/'`lib/syscall_ctxcreate.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_ctxcreate.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_ctxcreate.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_ctxcreate.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_ctxcreate.c' object='lib/lib_libvserver_la-syscall_ctxcreate.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_ctxcreate.lo `test -f 'lib/syscall_ctxcreate.c' || echo '$(srcdir)/'`lib/syscall_ctxcreate.c
+
+lib/lib_libvserver_la-syscall_ctxmigrate.lo: lib/syscall_ctxmigrate.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_ctxmigrate.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_ctxmigrate.Tpo" -c -o lib/lib_libvserver_la-syscall_ctxmigrate.lo `test -f 'lib/syscall_ctxmigrate.c' || echo '$(srcdir)/'`lib/syscall_ctxmigrate.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_ctxmigrate.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_ctxmigrate.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_ctxmigrate.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_ctxmigrate.c' object='lib/lib_libvserver_la-syscall_ctxmigrate.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_ctxmigrate.lo `test -f 'lib/syscall_ctxmigrate.c' || echo '$(srcdir)/'`lib/syscall_ctxmigrate.c
+
+lib/lib_libvserver_la-syscall_cleanupnamespace.lo: lib/syscall_cleanupnamespace.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_cleanupnamespace.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_cleanupnamespace.Tpo" -c -o lib/lib_libvserver_la-syscall_cleanupnamespace.lo `test -f 'lib/syscall_cleanupnamespace.c' || echo '$(srcdir)/'`lib/syscall_cleanupnamespace.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_cleanupnamespace.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_cleanupnamespace.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_cleanupnamespace.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_cleanupnamespace.c' object='lib/lib_libvserver_la-syscall_cleanupnamespace.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_cleanupnamespace.lo `test -f 'lib/syscall_cleanupnamespace.c' || echo '$(srcdir)/'`lib/syscall_cleanupnamespace.c
+
+lib/lib_libvserver_la-syscall_enternamespace.lo: lib/syscall_enternamespace.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_enternamespace.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_enternamespace.Tpo" -c -o lib/lib_libvserver_la-syscall_enternamespace.lo `test -f 'lib/syscall_enternamespace.c' || echo '$(srcdir)/'`lib/syscall_enternamespace.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_enternamespace.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_enternamespace.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_enternamespace.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_enternamespace.c' object='lib/lib_libvserver_la-syscall_enternamespace.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_enternamespace.lo `test -f 'lib/syscall_enternamespace.c' || echo '$(srcdir)/'`lib/syscall_enternamespace.c
+
+lib/lib_libvserver_la-syscall_getccaps.lo: lib/syscall_getccaps.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_getccaps.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_getccaps.Tpo" -c -o lib/lib_libvserver_la-syscall_getccaps.lo `test -f 'lib/syscall_getccaps.c' || echo '$(srcdir)/'`lib/syscall_getccaps.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_getccaps.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_getccaps.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_getccaps.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getccaps.c' object='lib/lib_libvserver_la-syscall_getccaps.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_getccaps.lo `test -f 'lib/syscall_getccaps.c' || echo '$(srcdir)/'`lib/syscall_getccaps.c
+
+lib/lib_libvserver_la-syscall_getcflags.lo: lib/syscall_getcflags.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_getcflags.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_getcflags.Tpo" -c -o lib/lib_libvserver_la-syscall_getcflags.lo `test -f 'lib/syscall_getcflags.c' || echo '$(srcdir)/'`lib/syscall_getcflags.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_getcflags.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_getcflags.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_getcflags.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getcflags.c' object='lib/lib_libvserver_la-syscall_getcflags.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_getcflags.lo `test -f 'lib/syscall_getcflags.c' || echo '$(srcdir)/'`lib/syscall_getcflags.c
+
+lib/lib_libvserver_la-syscall_getiattr.lo: lib/syscall_getiattr.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_getiattr.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_getiattr.Tpo" -c -o lib/lib_libvserver_la-syscall_getiattr.lo `test -f 'lib/syscall_getiattr.c' || echo '$(srcdir)/'`lib/syscall_getiattr.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_getiattr.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_getiattr.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_getiattr.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getiattr.c' object='lib/lib_libvserver_la-syscall_getiattr.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_getiattr.lo `test -f 'lib/syscall_getiattr.c' || echo '$(srcdir)/'`lib/syscall_getiattr.c
+
+lib/lib_libvserver_la-syscall_getncaps.lo: lib/syscall_getncaps.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_getncaps.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_getncaps.Tpo" -c -o lib/lib_libvserver_la-syscall_getncaps.lo `test -f 'lib/syscall_getncaps.c' || echo '$(srcdir)/'`lib/syscall_getncaps.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_getncaps.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_getncaps.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_getncaps.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getncaps.c' object='lib/lib_libvserver_la-syscall_getncaps.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_getncaps.lo `test -f 'lib/syscall_getncaps.c' || echo '$(srcdir)/'`lib/syscall_getncaps.c
+
+lib/lib_libvserver_la-syscall_getnflags.lo: lib/syscall_getnflags.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_getnflags.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_getnflags.Tpo" -c -o lib/lib_libvserver_la-syscall_getnflags.lo `test -f 'lib/syscall_getnflags.c' || echo '$(srcdir)/'`lib/syscall_getnflags.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_getnflags.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_getnflags.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_getnflags.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getnflags.c' object='lib/lib_libvserver_la-syscall_getnflags.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_getnflags.lo `test -f 'lib/syscall_getnflags.c' || echo '$(srcdir)/'`lib/syscall_getnflags.c
+
+lib/lib_libvserver_la-syscall_getnxinfo.lo: lib/syscall_getnxinfo.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_getnxinfo.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_getnxinfo.Tpo" -c -o lib/lib_libvserver_la-syscall_getnxinfo.lo `test -f 'lib/syscall_getnxinfo.c' || echo '$(srcdir)/'`lib/syscall_getnxinfo.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_getnxinfo.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_getnxinfo.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_getnxinfo.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getnxinfo.c' object='lib/lib_libvserver_la-syscall_getnxinfo.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_getnxinfo.lo `test -f 'lib/syscall_getnxinfo.c' || echo '$(srcdir)/'`lib/syscall_getnxinfo.c
+
+lib/lib_libvserver_la-syscall_gettasknid.lo: lib/syscall_gettasknid.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_gettasknid.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_gettasknid.Tpo" -c -o lib/lib_libvserver_la-syscall_gettasknid.lo `test -f 'lib/syscall_gettasknid.c' || echo '$(srcdir)/'`lib/syscall_gettasknid.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_gettasknid.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_gettasknid.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_gettasknid.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_gettasknid.c' object='lib/lib_libvserver_la-syscall_gettasknid.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_gettasknid.lo `test -f 'lib/syscall_gettasknid.c' || echo '$(srcdir)/'`lib/syscall_gettasknid.c
+
+lib/lib_libvserver_la-syscall_gettaskxid.lo: lib/syscall_gettaskxid.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_gettaskxid.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_gettaskxid.Tpo" -c -o lib/lib_libvserver_la-syscall_gettaskxid.lo `test -f 'lib/syscall_gettaskxid.c' || echo '$(srcdir)/'`lib/syscall_gettaskxid.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_gettaskxid.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_gettaskxid.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_gettaskxid.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_gettaskxid.c' object='lib/lib_libvserver_la-syscall_gettaskxid.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_gettaskxid.lo `test -f 'lib/syscall_gettaskxid.c' || echo '$(srcdir)/'`lib/syscall_gettaskxid.c
+
+lib/lib_libvserver_la-syscall_getvhiname.lo: lib/syscall_getvhiname.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_getvhiname.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_getvhiname.Tpo" -c -o lib/lib_libvserver_la-syscall_getvhiname.lo `test -f 'lib/syscall_getvhiname.c' || echo '$(srcdir)/'`lib/syscall_getvhiname.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_getvhiname.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_getvhiname.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_getvhiname.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getvhiname.c' object='lib/lib_libvserver_la-syscall_getvhiname.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_getvhiname.lo `test -f 'lib/syscall_getvhiname.c' || echo '$(srcdir)/'`lib/syscall_getvhiname.c
+
+lib/lib_libvserver_la-syscall_getvxinfo.lo: lib/syscall_getvxinfo.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_getvxinfo.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_getvxinfo.Tpo" -c -o lib/lib_libvserver_la-syscall_getvxinfo.lo `test -f 'lib/syscall_getvxinfo.c' || echo '$(srcdir)/'`lib/syscall_getvxinfo.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_getvxinfo.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_getvxinfo.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_getvxinfo.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getvxinfo.c' object='lib/lib_libvserver_la-syscall_getvxinfo.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_getvxinfo.lo `test -f 'lib/syscall_getvxinfo.c' || echo '$(srcdir)/'`lib/syscall_getvxinfo.c
+
+lib/lib_libvserver_la-syscall_netadd.lo: lib/syscall_netadd.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_netadd.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_netadd.Tpo" -c -o lib/lib_libvserver_la-syscall_netadd.lo `test -f 'lib/syscall_netadd.c' || echo '$(srcdir)/'`lib/syscall_netadd.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_netadd.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_netadd.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_netadd.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_netadd.c' object='lib/lib_libvserver_la-syscall_netadd.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_netadd.lo `test -f 'lib/syscall_netadd.c' || echo '$(srcdir)/'`lib/syscall_netadd.c
+
+lib/lib_libvserver_la-syscall_netcreate.lo: lib/syscall_netcreate.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_netcreate.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_netcreate.Tpo" -c -o lib/lib_libvserver_la-syscall_netcreate.lo `test -f 'lib/syscall_netcreate.c' || echo '$(srcdir)/'`lib/syscall_netcreate.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_netcreate.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_netcreate.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_netcreate.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_netcreate.c' object='lib/lib_libvserver_la-syscall_netcreate.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_netcreate.lo `test -f 'lib/syscall_netcreate.c' || echo '$(srcdir)/'`lib/syscall_netcreate.c
+
+lib/lib_libvserver_la-syscall_netmigrate.lo: lib/syscall_netmigrate.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_netmigrate.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_netmigrate.Tpo" -c -o lib/lib_libvserver_la-syscall_netmigrate.lo `test -f 'lib/syscall_netmigrate.c' || echo '$(srcdir)/'`lib/syscall_netmigrate.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_netmigrate.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_netmigrate.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_netmigrate.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_netmigrate.c' object='lib/lib_libvserver_la-syscall_netmigrate.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_netmigrate.lo `test -f 'lib/syscall_netmigrate.c' || echo '$(srcdir)/'`lib/syscall_netmigrate.c
+
+lib/lib_libvserver_la-syscall_netremove.lo: lib/syscall_netremove.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_netremove.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_netremove.Tpo" -c -o lib/lib_libvserver_la-syscall_netremove.lo `test -f 'lib/syscall_netremove.c' || echo '$(srcdir)/'`lib/syscall_netremove.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_netremove.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_netremove.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_netremove.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_netremove.c' object='lib/lib_libvserver_la-syscall_netremove.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_netremove.lo `test -f 'lib/syscall_netremove.c' || echo '$(srcdir)/'`lib/syscall_netremove.c
+
+lib/lib_libvserver_la-syscall_setccaps.lo: lib/syscall_setccaps.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_setccaps.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_setccaps.Tpo" -c -o lib/lib_libvserver_la-syscall_setccaps.lo `test -f 'lib/syscall_setccaps.c' || echo '$(srcdir)/'`lib/syscall_setccaps.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_setccaps.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_setccaps.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_setccaps.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setccaps.c' object='lib/lib_libvserver_la-syscall_setccaps.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_setccaps.lo `test -f 'lib/syscall_setccaps.c' || echo '$(srcdir)/'`lib/syscall_setccaps.c
+
+lib/lib_libvserver_la-syscall_setcflags.lo: lib/syscall_setcflags.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_setcflags.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_setcflags.Tpo" -c -o lib/lib_libvserver_la-syscall_setcflags.lo `test -f 'lib/syscall_setcflags.c' || echo '$(srcdir)/'`lib/syscall_setcflags.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_setcflags.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_setcflags.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_setcflags.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setcflags.c' object='lib/lib_libvserver_la-syscall_setcflags.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_setcflags.lo `test -f 'lib/syscall_setcflags.c' || echo '$(srcdir)/'`lib/syscall_setcflags.c
+
+lib/lib_libvserver_la-syscall_setiattr.lo: lib/syscall_setiattr.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_setiattr.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_setiattr.Tpo" -c -o lib/lib_libvserver_la-syscall_setiattr.lo `test -f 'lib/syscall_setiattr.c' || echo '$(srcdir)/'`lib/syscall_setiattr.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_setiattr.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_setiattr.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_setiattr.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setiattr.c' object='lib/lib_libvserver_la-syscall_setiattr.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_setiattr.lo `test -f 'lib/syscall_setiattr.c' || echo '$(srcdir)/'`lib/syscall_setiattr.c
+
+lib/lib_libvserver_la-syscall_setnamespace.lo: lib/syscall_setnamespace.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_setnamespace.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_setnamespace.Tpo" -c -o lib/lib_libvserver_la-syscall_setnamespace.lo `test -f 'lib/syscall_setnamespace.c' || echo '$(srcdir)/'`lib/syscall_setnamespace.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_setnamespace.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_setnamespace.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_setnamespace.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setnamespace.c' object='lib/lib_libvserver_la-syscall_setnamespace.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_setnamespace.lo `test -f 'lib/syscall_setnamespace.c' || echo '$(srcdir)/'`lib/syscall_setnamespace.c
+
+lib/lib_libvserver_la-syscall_setncaps.lo: lib/syscall_setncaps.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_setncaps.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_setncaps.Tpo" -c -o lib/lib_libvserver_la-syscall_setncaps.lo `test -f 'lib/syscall_setncaps.c' || echo '$(srcdir)/'`lib/syscall_setncaps.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_setncaps.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_setncaps.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_setncaps.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setncaps.c' object='lib/lib_libvserver_la-syscall_setncaps.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_setncaps.lo `test -f 'lib/syscall_setncaps.c' || echo '$(srcdir)/'`lib/syscall_setncaps.c
+
+lib/lib_libvserver_la-syscall_setnflags.lo: lib/syscall_setnflags.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_setnflags.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_setnflags.Tpo" -c -o lib/lib_libvserver_la-syscall_setnflags.lo `test -f 'lib/syscall_setnflags.c' || echo '$(srcdir)/'`lib/syscall_setnflags.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_setnflags.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_setnflags.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_setnflags.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setnflags.c' object='lib/lib_libvserver_la-syscall_setnflags.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_setnflags.lo `test -f 'lib/syscall_setnflags.c' || echo '$(srcdir)/'`lib/syscall_setnflags.c
+
+lib/lib_libvserver_la-syscall_setsched.lo: lib/syscall_setsched.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_setsched.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_setsched.Tpo" -c -o lib/lib_libvserver_la-syscall_setsched.lo `test -f 'lib/syscall_setsched.c' || echo '$(srcdir)/'`lib/syscall_setsched.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_setsched.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_setsched.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_setsched.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setsched.c' object='lib/lib_libvserver_la-syscall_setsched.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_setsched.lo `test -f 'lib/syscall_setsched.c' || echo '$(srcdir)/'`lib/syscall_setsched.c
+
+lib/lib_libvserver_la-syscall_setvhiname.lo: lib/syscall_setvhiname.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_setvhiname.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_setvhiname.Tpo" -c -o lib/lib_libvserver_la-syscall_setvhiname.lo `test -f 'lib/syscall_setvhiname.c' || echo '$(srcdir)/'`lib/syscall_setvhiname.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_setvhiname.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_setvhiname.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_setvhiname.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setvhiname.c' object='lib/lib_libvserver_la-syscall_setvhiname.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_setvhiname.lo `test -f 'lib/syscall_setvhiname.c' || echo '$(srcdir)/'`lib/syscall_setvhiname.c
+
+lib/lib_libvserver_la-syscall_waitexit.lo: lib/syscall_waitexit.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_waitexit.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_waitexit.Tpo" -c -o lib/lib_libvserver_la-syscall_waitexit.lo `test -f 'lib/syscall_waitexit.c' || echo '$(srcdir)/'`lib/syscall_waitexit.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_waitexit.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_waitexit.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_waitexit.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_waitexit.c' object='lib/lib_libvserver_la-syscall_waitexit.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_waitexit.lo `test -f 'lib/syscall_waitexit.c' || echo '$(srcdir)/'`lib/syscall_waitexit.c
+
+lib/lib_libvserver_la-bcaps-v13.lo: lib/bcaps-v13.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-bcaps-v13.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-bcaps-v13.Tpo" -c -o lib/lib_libvserver_la-bcaps-v13.lo `test -f 'lib/bcaps-v13.c' || echo '$(srcdir)/'`lib/bcaps-v13.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-bcaps-v13.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-bcaps-v13.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-bcaps-v13.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/bcaps-v13.c' object='lib/lib_libvserver_la-bcaps-v13.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-bcaps-v13.lo `test -f 'lib/bcaps-v13.c' || echo '$(srcdir)/'`lib/bcaps-v13.c
+
+lib/lib_libvserver_la-bcaps_list-v13.lo: lib/bcaps_list-v13.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-bcaps_list-v13.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-bcaps_list-v13.Tpo" -c -o lib/lib_libvserver_la-bcaps_list-v13.lo `test -f 'lib/bcaps_list-v13.c' || echo '$(srcdir)/'`lib/bcaps_list-v13.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-bcaps_list-v13.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-bcaps_list-v13.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-bcaps_list-v13.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/bcaps_list-v13.c' object='lib/lib_libvserver_la-bcaps_list-v13.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-bcaps_list-v13.lo `test -f 'lib/bcaps_list-v13.c' || echo '$(srcdir)/'`lib/bcaps_list-v13.c
+
+lib/lib_libvserver_la-ccaps-v13.lo: lib/ccaps-v13.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-ccaps-v13.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-ccaps-v13.Tpo" -c -o lib/lib_libvserver_la-ccaps-v13.lo `test -f 'lib/ccaps-v13.c' || echo '$(srcdir)/'`lib/ccaps-v13.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-ccaps-v13.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-ccaps-v13.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-ccaps-v13.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/ccaps-v13.c' object='lib/lib_libvserver_la-ccaps-v13.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-ccaps-v13.lo `test -f 'lib/ccaps-v13.c' || echo '$(srcdir)/'`lib/ccaps-v13.c
+
+lib/lib_libvserver_la-ccaps_list-v13.lo: lib/ccaps_list-v13.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-ccaps_list-v13.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-ccaps_list-v13.Tpo" -c -o lib/lib_libvserver_la-ccaps_list-v13.lo `test -f 'lib/ccaps_list-v13.c' || echo '$(srcdir)/'`lib/ccaps_list-v13.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-ccaps_list-v13.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-ccaps_list-v13.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-ccaps_list-v13.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/ccaps_list-v13.c' object='lib/lib_libvserver_la-ccaps_list-v13.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-ccaps_list-v13.lo `test -f 'lib/ccaps_list-v13.c' || echo '$(srcdir)/'`lib/ccaps_list-v13.c
+
+lib/lib_libvserver_la-cflags-v13.lo: lib/cflags-v13.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-cflags-v13.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-cflags-v13.Tpo" -c -o lib/lib_libvserver_la-cflags-v13.lo `test -f 'lib/cflags-v13.c' || echo '$(srcdir)/'`lib/cflags-v13.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-cflags-v13.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-cflags-v13.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-cflags-v13.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/cflags-v13.c' object='lib/lib_libvserver_la-cflags-v13.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-cflags-v13.lo `test -f 'lib/cflags-v13.c' || echo '$(srcdir)/'`lib/cflags-v13.c
+
+lib/lib_libvserver_la-cflags_list-v13.lo: lib/cflags_list-v13.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-cflags_list-v13.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-cflags_list-v13.Tpo" -c -o lib/lib_libvserver_la-cflags_list-v13.lo `test -f 'lib/cflags_list-v13.c' || echo '$(srcdir)/'`lib/cflags_list-v13.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-cflags_list-v13.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-cflags_list-v13.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-cflags_list-v13.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/cflags_list-v13.c' object='lib/lib_libvserver_la-cflags_list-v13.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-cflags_list-v13.lo `test -f 'lib/cflags_list-v13.c' || echo '$(srcdir)/'`lib/cflags_list-v13.c
+
+lib/lib_libvserver_la-ncaps-net.lo: lib/ncaps-net.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-ncaps-net.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-ncaps-net.Tpo" -c -o lib/lib_libvserver_la-ncaps-net.lo `test -f 'lib/ncaps-net.c' || echo '$(srcdir)/'`lib/ncaps-net.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-ncaps-net.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-ncaps-net.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-ncaps-net.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/ncaps-net.c' object='lib/lib_libvserver_la-ncaps-net.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-ncaps-net.lo `test -f 'lib/ncaps-net.c' || echo '$(srcdir)/'`lib/ncaps-net.c
+
+lib/lib_libvserver_la-ncaps_list-net.lo: lib/ncaps_list-net.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-ncaps_list-net.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-ncaps_list-net.Tpo" -c -o lib/lib_libvserver_la-ncaps_list-net.lo `test -f 'lib/ncaps_list-net.c' || echo '$(srcdir)/'`lib/ncaps_list-net.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-ncaps_list-net.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-ncaps_list-net.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-ncaps_list-net.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/ncaps_list-net.c' object='lib/lib_libvserver_la-ncaps_list-net.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-ncaps_list-net.lo `test -f 'lib/ncaps_list-net.c' || echo '$(srcdir)/'`lib/ncaps_list-net.c
+
+lib/lib_libvserver_la-nflags-net.lo: lib/nflags-net.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-nflags-net.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-nflags-net.Tpo" -c -o lib/lib_libvserver_la-nflags-net.lo `test -f 'lib/nflags-net.c' || echo '$(srcdir)/'`lib/nflags-net.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-nflags-net.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-nflags-net.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-nflags-net.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/nflags-net.c' object='lib/lib_libvserver_la-nflags-net.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-nflags-net.lo `test -f 'lib/nflags-net.c' || echo '$(srcdir)/'`lib/nflags-net.c
+
+lib/lib_libvserver_la-nflags_list-net.lo: lib/nflags_list-net.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-nflags_list-net.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-nflags_list-net.Tpo" -c -o lib/lib_libvserver_la-nflags_list-net.lo `test -f 'lib/nflags_list-net.c' || echo '$(srcdir)/'`lib/nflags_list-net.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-nflags_list-net.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-nflags_list-net.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-nflags_list-net.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/nflags_list-net.c' object='lib/lib_libvserver_la-nflags_list-net.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-nflags_list-net.lo `test -f 'lib/nflags_list-net.c' || echo '$(srcdir)/'`lib/nflags_list-net.c
+
+lib/lib_libvserver_la-syscall_adddlimit.lo: lib/syscall_adddlimit.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_adddlimit.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_adddlimit.Tpo" -c -o lib/lib_libvserver_la-syscall_adddlimit.lo `test -f 'lib/syscall_adddlimit.c' || echo '$(srcdir)/'`lib/syscall_adddlimit.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_adddlimit.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_adddlimit.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_adddlimit.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_adddlimit.c' object='lib/lib_libvserver_la-syscall_adddlimit.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_adddlimit.lo `test -f 'lib/syscall_adddlimit.c' || echo '$(srcdir)/'`lib/syscall_adddlimit.c
+
+lib/lib_libvserver_la-syscall_getdlimit.lo: lib/syscall_getdlimit.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_getdlimit.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_getdlimit.Tpo" -c -o lib/lib_libvserver_la-syscall_getdlimit.lo `test -f 'lib/syscall_getdlimit.c' || echo '$(srcdir)/'`lib/syscall_getdlimit.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_getdlimit.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_getdlimit.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_getdlimit.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_getdlimit.c' object='lib/lib_libvserver_la-syscall_getdlimit.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_getdlimit.lo `test -f 'lib/syscall_getdlimit.c' || echo '$(srcdir)/'`lib/syscall_getdlimit.c
+
+lib/lib_libvserver_la-syscall_remdlimit.lo: lib/syscall_remdlimit.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_remdlimit.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_remdlimit.Tpo" -c -o lib/lib_libvserver_la-syscall_remdlimit.lo `test -f 'lib/syscall_remdlimit.c' || echo '$(srcdir)/'`lib/syscall_remdlimit.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_remdlimit.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_remdlimit.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_remdlimit.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_remdlimit.c' object='lib/lib_libvserver_la-syscall_remdlimit.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_remdlimit.lo `test -f 'lib/syscall_remdlimit.c' || echo '$(srcdir)/'`lib/syscall_remdlimit.c
+
+lib/lib_libvserver_la-syscall_setdlimit.lo: lib/syscall_setdlimit.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/lib_libvserver_la-syscall_setdlimit.lo -MD -MP -MF "lib/$(DEPDIR)/lib_libvserver_la-syscall_setdlimit.Tpo" -c -o lib/lib_libvserver_la-syscall_setdlimit.lo `test -f 'lib/syscall_setdlimit.c' || echo '$(srcdir)/'`lib/syscall_setdlimit.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_setdlimit.Tpo" "lib/$(DEPDIR)/lib_libvserver_la-syscall_setdlimit.Plo"; else rm -f "lib/$(DEPDIR)/lib_libvserver_la-syscall_setdlimit.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/syscall_setdlimit.c' object='lib/lib_libvserver_la-syscall_setdlimit.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/lib_libvserver_la-syscall_setdlimit.lo `test -f 'lib/syscall_setdlimit.c' || echo '$(srcdir)/'`lib/syscall_setdlimit.c
+
+ensc_fmt/lib_libvserver_la-fmt-32.lo: ensc_fmt/fmt-32.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_fmt/lib_libvserver_la-fmt-32.lo -MD -MP -MF "ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmt-32.Tpo" -c -o ensc_fmt/lib_libvserver_la-fmt-32.lo `test -f 'ensc_fmt/fmt-32.c' || echo '$(srcdir)/'`ensc_fmt/fmt-32.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmt-32.Tpo" "ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmt-32.Plo"; else rm -f "ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmt-32.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_fmt/fmt-32.c' object='ensc_fmt/lib_libvserver_la-fmt-32.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_fmt/lib_libvserver_la-fmt-32.lo `test -f 'ensc_fmt/fmt-32.c' || echo '$(srcdir)/'`ensc_fmt/fmt-32.c
+
+ensc_fmt/lib_libvserver_la-fmt-64.lo: ensc_fmt/fmt-64.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_fmt/lib_libvserver_la-fmt-64.lo -MD -MP -MF "ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmt-64.Tpo" -c -o ensc_fmt/lib_libvserver_la-fmt-64.lo `test -f 'ensc_fmt/fmt-64.c' || echo '$(srcdir)/'`ensc_fmt/fmt-64.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmt-64.Tpo" "ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmt-64.Plo"; else rm -f "ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmt-64.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_fmt/fmt-64.c' object='ensc_fmt/lib_libvserver_la-fmt-64.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_fmt/lib_libvserver_la-fmt-64.lo `test -f 'ensc_fmt/fmt-64.c' || echo '$(srcdir)/'`ensc_fmt/fmt-64.c
+
+ensc_fmt/lib_libvserver_la-fmtx-32.lo: ensc_fmt/fmtx-32.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_fmt/lib_libvserver_la-fmtx-32.lo -MD -MP -MF "ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmtx-32.Tpo" -c -o ensc_fmt/lib_libvserver_la-fmtx-32.lo `test -f 'ensc_fmt/fmtx-32.c' || echo '$(srcdir)/'`ensc_fmt/fmtx-32.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmtx-32.Tpo" "ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmtx-32.Plo"; else rm -f "ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmtx-32.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_fmt/fmtx-32.c' object='ensc_fmt/lib_libvserver_la-fmtx-32.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_fmt/lib_libvserver_la-fmtx-32.lo `test -f 'ensc_fmt/fmtx-32.c' || echo '$(srcdir)/'`ensc_fmt/fmtx-32.c
+
+ensc_fmt/lib_libvserver_la-fmtx-64.lo: ensc_fmt/fmtx-64.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_fmt/lib_libvserver_la-fmtx-64.lo -MD -MP -MF "ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmtx-64.Tpo" -c -o ensc_fmt/lib_libvserver_la-fmtx-64.lo `test -f 'ensc_fmt/fmtx-64.c' || echo '$(srcdir)/'`ensc_fmt/fmtx-64.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmtx-64.Tpo" "ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmtx-64.Plo"; else rm -f "ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmtx-64.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_fmt/fmtx-64.c' object='ensc_fmt/lib_libvserver_la-fmtx-64.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_fmt/lib_libvserver_la-fmtx-64.lo `test -f 'ensc_fmt/fmtx-64.c' || echo '$(srcdir)/'`ensc_fmt/fmtx-64.c
+
+ensc_fmt/lib_libvserver_la-fmt-tai64n.lo: ensc_fmt/fmt-tai64n.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ensc_fmt/lib_libvserver_la-fmt-tai64n.lo -MD -MP -MF "ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmt-tai64n.Tpo" -c -o ensc_fmt/lib_libvserver_la-fmt-tai64n.lo `test -f 'ensc_fmt/fmt-tai64n.c' || echo '$(srcdir)/'`ensc_fmt/fmt-tai64n.c; \
+@am__fastdepCC_TRUE@   then mv -f "ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmt-tai64n.Tpo" "ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmt-tai64n.Plo"; else rm -f "ensc_fmt/$(DEPDIR)/lib_libvserver_la-fmt-tai64n.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='ensc_fmt/fmt-tai64n.c' object='ensc_fmt/lib_libvserver_la-fmt-tai64n.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libvserver_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ensc_fmt/lib_libvserver_la-fmt-tai64n.lo `test -f 'ensc_fmt/fmt-tai64n.c' || echo '$(srcdir)/'`ensc_fmt/fmt-tai64n.c
+
+src/src_rpm_fake_la-rpm-fake.lo: src/rpm-fake.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_rpm_fake_la_CFLAGS) $(CFLAGS) -MT src/src_rpm_fake_la-rpm-fake.lo -MD -MP -MF "src/$(DEPDIR)/src_rpm_fake_la-rpm-fake.Tpo" -c -o src/src_rpm_fake_la-rpm-fake.lo `test -f 'src/rpm-fake.c' || echo '$(srcdir)/'`src/rpm-fake.c; \
+@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/src_rpm_fake_la-rpm-fake.Tpo" "src/$(DEPDIR)/src_rpm_fake_la-rpm-fake.Plo"; else rm -f "src/$(DEPDIR)/src_rpm_fake_la-rpm-fake.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/rpm-fake.c' object='src/src_rpm_fake_la-rpm-fake.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_rpm_fake_la_CFLAGS) $(CFLAGS) -c -o src/src_rpm_fake_la-rpm-fake.lo `test -f 'src/rpm-fake.c' || echo '$(srcdir)/'`src/rpm-fake.c
+
+lib/testsuite/lib_testsuite_cflags-cflags.o: lib/testsuite/cflags.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_testsuite_cflags_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/testsuite/lib_testsuite_cflags-cflags.o -MD -MP -MF "lib/testsuite/$(DEPDIR)/lib_testsuite_cflags-cflags.Tpo" -c -o lib/testsuite/lib_testsuite_cflags-cflags.o `test -f 'lib/testsuite/cflags.c' || echo '$(srcdir)/'`lib/testsuite/cflags.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/testsuite/$(DEPDIR)/lib_testsuite_cflags-cflags.Tpo" "lib/testsuite/$(DEPDIR)/lib_testsuite_cflags-cflags.Po"; else rm -f "lib/testsuite/$(DEPDIR)/lib_testsuite_cflags-cflags.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/testsuite/cflags.c' object='lib/testsuite/lib_testsuite_cflags-cflags.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_testsuite_cflags_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/testsuite/lib_testsuite_cflags-cflags.o `test -f 'lib/testsuite/cflags.c' || echo '$(srcdir)/'`lib/testsuite/cflags.c
+
+lib/testsuite/lib_testsuite_cflags-cflags.obj: lib/testsuite/cflags.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_testsuite_cflags_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/testsuite/lib_testsuite_cflags-cflags.obj -MD -MP -MF "lib/testsuite/$(DEPDIR)/lib_testsuite_cflags-cflags.Tpo" -c -o lib/testsuite/lib_testsuite_cflags-cflags.obj `if test -f 'lib/testsuite/cflags.c'; then $(CYGPATH_W) 'lib/testsuite/cflags.c'; else $(CYGPATH_W) '$(srcdir)/lib/testsuite/cflags.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/testsuite/$(DEPDIR)/lib_testsuite_cflags-cflags.Tpo" "lib/testsuite/$(DEPDIR)/lib_testsuite_cflags-cflags.Po"; else rm -f "lib/testsuite/$(DEPDIR)/lib_testsuite_cflags-cflags.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/testsuite/cflags.c' object='lib/testsuite/lib_testsuite_cflags-cflags.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_testsuite_cflags_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/testsuite/lib_testsuite_cflags-cflags.obj `if test -f 'lib/testsuite/cflags.c'; then $(CYGPATH_W) 'lib/testsuite/cflags.c'; else $(CYGPATH_W) '$(srcdir)/lib/testsuite/cflags.c'; fi`
+
+lib/testsuite/lib_testsuite_fmt-fmt.o: lib/testsuite/fmt.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_testsuite_fmt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/testsuite/lib_testsuite_fmt-fmt.o -MD -MP -MF "lib/testsuite/$(DEPDIR)/lib_testsuite_fmt-fmt.Tpo" -c -o lib/testsuite/lib_testsuite_fmt-fmt.o `test -f 'lib/testsuite/fmt.c' || echo '$(srcdir)/'`lib/testsuite/fmt.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/testsuite/$(DEPDIR)/lib_testsuite_fmt-fmt.Tpo" "lib/testsuite/$(DEPDIR)/lib_testsuite_fmt-fmt.Po"; else rm -f "lib/testsuite/$(DEPDIR)/lib_testsuite_fmt-fmt.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/testsuite/fmt.c' object='lib/testsuite/lib_testsuite_fmt-fmt.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_testsuite_fmt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/testsuite/lib_testsuite_fmt-fmt.o `test -f 'lib/testsuite/fmt.c' || echo '$(srcdir)/'`lib/testsuite/fmt.c
+
+lib/testsuite/lib_testsuite_fmt-fmt.obj: lib/testsuite/fmt.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_testsuite_fmt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/testsuite/lib_testsuite_fmt-fmt.obj -MD -MP -MF "lib/testsuite/$(DEPDIR)/lib_testsuite_fmt-fmt.Tpo" -c -o lib/testsuite/lib_testsuite_fmt-fmt.obj `if test -f 'lib/testsuite/fmt.c'; then $(CYGPATH_W) 'lib/testsuite/fmt.c'; else $(CYGPATH_W) '$(srcdir)/lib/testsuite/fmt.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/testsuite/$(DEPDIR)/lib_testsuite_fmt-fmt.Tpo" "lib/testsuite/$(DEPDIR)/lib_testsuite_fmt-fmt.Po"; else rm -f "lib/testsuite/$(DEPDIR)/lib_testsuite_fmt-fmt.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/testsuite/fmt.c' object='lib/testsuite/lib_testsuite_fmt-fmt.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_testsuite_fmt_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/testsuite/lib_testsuite_fmt-fmt.obj `if test -f 'lib/testsuite/fmt.c'; then $(CYGPATH_W) 'lib/testsuite/fmt.c'; else $(CYGPATH_W) '$(srcdir)/lib/testsuite/fmt.c'; fi`
+
+lib/testsuite/lib_testsuite_parselimit-parselimit.o: lib/testsuite/parselimit.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_testsuite_parselimit_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/testsuite/lib_testsuite_parselimit-parselimit.o -MD -MP -MF "lib/testsuite/$(DEPDIR)/lib_testsuite_parselimit-parselimit.Tpo" -c -o lib/testsuite/lib_testsuite_parselimit-parselimit.o `test -f 'lib/testsuite/parselimit.c' || echo '$(srcdir)/'`lib/testsuite/parselimit.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/testsuite/$(DEPDIR)/lib_testsuite_parselimit-parselimit.Tpo" "lib/testsuite/$(DEPDIR)/lib_testsuite_parselimit-parselimit.Po"; else rm -f "lib/testsuite/$(DEPDIR)/lib_testsuite_parselimit-parselimit.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/testsuite/parselimit.c' object='lib/testsuite/lib_testsuite_parselimit-parselimit.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_testsuite_parselimit_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/testsuite/lib_testsuite_parselimit-parselimit.o `test -f 'lib/testsuite/parselimit.c' || echo '$(srcdir)/'`lib/testsuite/parselimit.c
+
+lib/testsuite/lib_testsuite_parselimit-parselimit.obj: lib/testsuite/parselimit.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_testsuite_parselimit_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/testsuite/lib_testsuite_parselimit-parselimit.obj -MD -MP -MF "lib/testsuite/$(DEPDIR)/lib_testsuite_parselimit-parselimit.Tpo" -c -o lib/testsuite/lib_testsuite_parselimit-parselimit.obj `if test -f 'lib/testsuite/parselimit.c'; then $(CYGPATH_W) 'lib/testsuite/parselimit.c'; else $(CYGPATH_W) '$(srcdir)/lib/testsuite/parselimit.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/testsuite/$(DEPDIR)/lib_testsuite_parselimit-parselimit.Tpo" "lib/testsuite/$(DEPDIR)/lib_testsuite_parselimit-parselimit.Po"; else rm -f "lib/testsuite/$(DEPDIR)/lib_testsuite_parselimit-parselimit.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/testsuite/parselimit.c' object='lib/testsuite/lib_testsuite_parselimit-parselimit.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_testsuite_parselimit_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/testsuite/lib_testsuite_parselimit-parselimit.obj `if test -f 'lib/testsuite/parselimit.c'; then $(CYGPATH_W) 'lib/testsuite/parselimit.c'; else $(CYGPATH_W) '$(srcdir)/lib/testsuite/parselimit.c'; fi`
+
+lib/testsuite/lib_testsuite_personality-personality.o: lib/testsuite/personality.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_testsuite_personality_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/testsuite/lib_testsuite_personality-personality.o -MD -MP -MF "lib/testsuite/$(DEPDIR)/lib_testsuite_personality-personality.Tpo" -c -o lib/testsuite/lib_testsuite_personality-personality.o `test -f 'lib/testsuite/personality.c' || echo '$(srcdir)/'`lib/testsuite/personality.c; \
+@am__fastdepCC_TRUE@   then mv -f "lib/testsuite/$(DEPDIR)/lib_testsuite_personality-personality.Tpo" "lib/testsuite/$(DEPDIR)/lib_testsuite_personality-personality.Po"; else rm -f "lib/testsuite/$(DEPDIR)/lib_testsuite_personality-personality.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/testsuite/personality.c' object='lib/testsuite/lib_testsuite_personality-personality.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_testsuite_personality_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/testsuite/lib_testsuite_personality-personality.o `test -f 'lib/testsuite/personality.c' || echo '$(srcdir)/'`lib/testsuite/personality.c
+
+lib/testsuite/lib_testsuite_personality-personality.obj: lib/testsuite/personality.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_testsuite_personality_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib/testsuite/lib_testsuite_personality-personality.obj -MD -MP -MF "lib/testsuite/$(DEPDIR)/lib_testsuite_personality-personality.Tpo" -c -o lib/testsuite/lib_testsuite_personality-personality.obj `if test -f 'lib/testsuite/personality.c'; then $(CYGPATH_W) 'lib/testsuite/personality.c'; else $(CYGPATH_W) '$(srcdir)/lib/testsuite/personality.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "lib/testsuite/$(DEPDIR)/lib_testsuite_personality-personality.Tpo" "lib/testsuite/$(DEPDIR)/lib_testsuite_personality-personality.Po"; else rm -f "lib/testsuite/$(DEPDIR)/lib_testsuite_personality-personality.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lib/testsuite/personality.c' object='lib/testsuite/lib_testsuite_personality-personality.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_testsuite_personality_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib/testsuite/lib_testsuite_personality-personality.obj `if test -f 'lib/testsuite/personality.c'; then $(CYGPATH_W) 'lib/testsuite/personality.c'; else $(CYGPATH_W) '$(srcdir)/lib/testsuite/personality.c'; fi`
+
+src/testsuite/src_testsuite_vunify_functest-vunify-functest.o: src/testsuite/vunify-functest.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testsuite_vunify_functest_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/testsuite/src_testsuite_vunify_functest-vunify-functest.o -MD -MP -MF "src/testsuite/$(DEPDIR)/src_testsuite_vunify_functest-vunify-functest.Tpo" -c -o src/testsuite/src_testsuite_vunify_functest-vunify-functest.o `test -f 'src/testsuite/vunify-functest.c' || echo '$(srcdir)/'`src/testsuite/vunify-functest.c; \
+@am__fastdepCC_TRUE@   then mv -f "src/testsuite/$(DEPDIR)/src_testsuite_vunify_functest-vunify-functest.Tpo" "src/testsuite/$(DEPDIR)/src_testsuite_vunify_functest-vunify-functest.Po"; else rm -f "src/testsuite/$(DEPDIR)/src_testsuite_vunify_functest-vunify-functest.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/testsuite/vunify-functest.c' object='src/testsuite/src_testsuite_vunify_functest-vunify-functest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testsuite_vunify_functest_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/testsuite/src_testsuite_vunify_functest-vunify-functest.o `test -f 'src/testsuite/vunify-functest.c' || echo '$(srcdir)/'`src/testsuite/vunify-functest.c
+
+src/testsuite/src_testsuite_vunify_functest-vunify-functest.obj: src/testsuite/vunify-functest.c
+@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testsuite_vunify_functest_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/testsuite/src_testsuite_vunify_functest-vunify-functest.obj -MD -MP -MF "src/testsuite/$(DEPDIR)/src_testsuite_vunify_functest-vunify-functest.Tpo" -c -o src/testsuite/src_testsuite_vunify_functest-vunify-functest.obj `if test -f 'src/testsuite/vunify-functest.c'; then $(CYGPATH_W) 'src/testsuite/vunify-functest.c'; else $(CYGPATH_W) '$(srcdir)/src/testsuite/vunify-functest.c'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "src/testsuite/$(DEPDIR)/src_testsuite_vunify_functest-vunify-functest.Tpo" "src/testsuite/$(DEPDIR)/src_testsuite_vunify_functest-vunify-functest.Po"; else rm -f "src/testsuite/$(DEPDIR)/src_testsuite_vunify_functest-vunify-functest.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/testsuite/vunify-functest.c' object='src/testsuite/src_testsuite_vunify_functest-vunify-functest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testsuite_vunify_functest_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/testsuite/src_testsuite_vunify_functest-vunify-functest.obj `if test -f 'src/testsuite/vunify-functest.c'; then $(CYGPATH_W) 'src/testsuite/vunify-functest.c'; else $(CYGPATH_W) '$(srcdir)/src/testsuite/vunify-functest.c'; fi`
 
 src/src_vkill-vkill.o: src/vkill.c
 @am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_vkill_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/src_vkill-vkill.o -MD -MP -MF "src/$(DEPDIR)/src_vkill-vkill.Tpo" -c -o src/src_vkill-vkill.o `test -f 'src/vkill.c' || echo '$(srcdir)/'`src/vkill.c; \
 @am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/src_vkill-vkill.Tpo" "src/$(DEPDIR)/src_vkill-vkill.Po"; else rm -f "src/$(DEPDIR)/src_vkill-vkill.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/vkill.c' object='src/src_vkill-vkill.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/src_vkill-vkill.Po' tmpdepfile='src/$(DEPDIR)/src_vkill-vkill.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_vkill_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/src_vkill-vkill.o `test -f 'src/vkill.c' || echo '$(srcdir)/'`src/vkill.c
 
 src/src_vkill-vkill.obj: src/vkill.c
 @am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_vkill_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/src_vkill-vkill.obj -MD -MP -MF "src/$(DEPDIR)/src_vkill-vkill.Tpo" -c -o src/src_vkill-vkill.obj `if test -f 'src/vkill.c'; then $(CYGPATH_W) 'src/vkill.c'; else $(CYGPATH_W) '$(srcdir)/src/vkill.c'; fi`; \
 @am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/src_vkill-vkill.Tpo" "src/$(DEPDIR)/src_vkill-vkill.Po"; else rm -f "src/$(DEPDIR)/src_vkill-vkill.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/vkill.c' object='src/src_vkill-vkill.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/src_vkill-vkill.Po' tmpdepfile='src/$(DEPDIR)/src_vkill-vkill.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_vkill_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/src_vkill-vkill.obj `if test -f 'src/vkill.c'; then $(CYGPATH_W) 'src/vkill.c'; else $(CYGPATH_W) '$(srcdir)/src/vkill.c'; fi`
 
-src/vlimit.o: src/vlimit.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/vlimit.o -MD -MP -MF "src/$(DEPDIR)/vlimit.Tpo" -c -o src/vlimit.o `test -f 'src/vlimit.c' || echo '$(srcdir)/'`src/vlimit.c; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/vlimit.Tpo" "src/$(DEPDIR)/vlimit.Po"; else rm -f "src/$(DEPDIR)/vlimit.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/vlimit.c' object='src/vlimit.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/vlimit.Po' tmpdepfile='src/$(DEPDIR)/vlimit.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/vlimit.o `test -f 'src/vlimit.c' || echo '$(srcdir)/'`src/vlimit.c
-
-src/vlimit.obj: src/vlimit.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/vlimit.obj -MD -MP -MF "src/$(DEPDIR)/vlimit.Tpo" -c -o src/vlimit.obj `if test -f 'src/vlimit.c'; then $(CYGPATH_W) 'src/vlimit.c'; else $(CYGPATH_W) '$(srcdir)/src/vlimit.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/vlimit.Tpo" "src/$(DEPDIR)/vlimit.Po"; else rm -f "src/$(DEPDIR)/vlimit.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/vlimit.c' object='src/vlimit.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/vlimit.Po' tmpdepfile='src/$(DEPDIR)/vlimit.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/vlimit.obj `if test -f 'src/vlimit.c'; then $(CYGPATH_W) 'src/vlimit.c'; else $(CYGPATH_W) '$(srcdir)/src/vlimit.c'; fi`
-
-src/vreboot.o: src/vreboot.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/vreboot.o -MD -MP -MF "src/$(DEPDIR)/vreboot.Tpo" -c -o src/vreboot.o `test -f 'src/vreboot.c' || echo '$(srcdir)/'`src/vreboot.c; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/vreboot.Tpo" "src/$(DEPDIR)/vreboot.Po"; else rm -f "src/$(DEPDIR)/vreboot.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/vreboot.c' object='src/vreboot.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/vreboot.Po' tmpdepfile='src/$(DEPDIR)/vreboot.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/vreboot.o `test -f 'src/vreboot.c' || echo '$(srcdir)/'`src/vreboot.c
-
-src/vreboot.obj: src/vreboot.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/vreboot.obj -MD -MP -MF "src/$(DEPDIR)/vreboot.Tpo" -c -o src/vreboot.obj `if test -f 'src/vreboot.c'; then $(CYGPATH_W) 'src/vreboot.c'; else $(CYGPATH_W) '$(srcdir)/src/vreboot.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/vreboot.Tpo" "src/$(DEPDIR)/vreboot.Po"; else rm -f "src/$(DEPDIR)/vreboot.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/vreboot.c' object='src/vreboot.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/vreboot.Po' tmpdepfile='src/$(DEPDIR)/vreboot.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/vreboot.obj `if test -f 'src/vreboot.c'; then $(CYGPATH_W) 'src/vreboot.c'; else $(CYGPATH_W) '$(srcdir)/src/vreboot.c'; fi`
-
-src/vserver-stat.o: src/vserver-stat.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/vserver-stat.o -MD -MP -MF "src/$(DEPDIR)/vserver-stat.Tpo" -c -o src/vserver-stat.o `test -f 'src/vserver-stat.c' || echo '$(srcdir)/'`src/vserver-stat.c; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/vserver-stat.Tpo" "src/$(DEPDIR)/vserver-stat.Po"; else rm -f "src/$(DEPDIR)/vserver-stat.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/vserver-stat.c' object='src/vserver-stat.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/vserver-stat.Po' tmpdepfile='src/$(DEPDIR)/vserver-stat.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/vserver-stat.o `test -f 'src/vserver-stat.c' || echo '$(srcdir)/'`src/vserver-stat.c
-
-src/vserver-stat.obj: src/vserver-stat.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/vserver-stat.obj -MD -MP -MF "src/$(DEPDIR)/vserver-stat.Tpo" -c -o src/vserver-stat.obj `if test -f 'src/vserver-stat.c'; then $(CYGPATH_W) 'src/vserver-stat.c'; else $(CYGPATH_W) '$(srcdir)/src/vserver-stat.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "src/$(DEPDIR)/vserver-stat.Tpo" "src/$(DEPDIR)/vserver-stat.Po"; else rm -f "src/$(DEPDIR)/vserver-stat.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/vserver-stat.c' object='src/vserver-stat.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='src/$(DEPDIR)/vserver-stat.Po' tmpdepfile='src/$(DEPDIR)/vserver-stat.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/vserver-stat.obj `if test -f 'src/vserver-stat.c'; then $(CYGPATH_W) 'src/vserver-stat.c'; else $(CYGPATH_W) '$(srcdir)/src/vserver-stat.c'; fi`
-
-.cc.o:
-@am__fastdepCXX_TRUE@  if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
-@am__fastdepCXX_TRUE@  if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
-@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-src/vbuild.o: src/vbuild.cc
-@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/vbuild.o -MD -MP -MF "src/$(DEPDIR)/vbuild.Tpo" -c -o src/vbuild.o `test -f 'src/vbuild.cc' || echo '$(srcdir)/'`src/vbuild.cc; \
-@am__fastdepCXX_TRUE@  then mv -f "src/$(DEPDIR)/vbuild.Tpo" "src/$(DEPDIR)/vbuild.Po"; else rm -f "src/$(DEPDIR)/vbuild.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='src/vbuild.cc' object='src/vbuild.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='src/$(DEPDIR)/vbuild.Po' tmpdepfile='src/$(DEPDIR)/vbuild.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/vbuild.o `test -f 'src/vbuild.cc' || echo '$(srcdir)/'`src/vbuild.cc
-
-src/vbuild.obj: src/vbuild.cc
-@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/vbuild.obj -MD -MP -MF "src/$(DEPDIR)/vbuild.Tpo" -c -o src/vbuild.obj `if test -f 'src/vbuild.cc'; then $(CYGPATH_W) 'src/vbuild.cc'; else $(CYGPATH_W) '$(srcdir)/src/vbuild.cc'; fi`; \
-@am__fastdepCXX_TRUE@  then mv -f "src/$(DEPDIR)/vbuild.Tpo" "src/$(DEPDIR)/vbuild.Po"; else rm -f "src/$(DEPDIR)/vbuild.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='src/vbuild.cc' object='src/vbuild.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='src/$(DEPDIR)/vbuild.Po' tmpdepfile='src/$(DEPDIR)/vbuild.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/vbuild.obj `if test -f 'src/vbuild.cc'; then $(CYGPATH_W) 'src/vbuild.cc'; else $(CYGPATH_W) '$(srcdir)/src/vbuild.cc'; fi`
-
-src/vutil.o: src/vutil.cc
-@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/vutil.o -MD -MP -MF "src/$(DEPDIR)/vutil.Tpo" -c -o src/vutil.o `test -f 'src/vutil.cc' || echo '$(srcdir)/'`src/vutil.cc; \
-@am__fastdepCXX_TRUE@  then mv -f "src/$(DEPDIR)/vutil.Tpo" "src/$(DEPDIR)/vutil.Po"; else rm -f "src/$(DEPDIR)/vutil.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='src/vutil.cc' object='src/vutil.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='src/$(DEPDIR)/vutil.Po' tmpdepfile='src/$(DEPDIR)/vutil.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/vutil.o `test -f 'src/vutil.cc' || echo '$(srcdir)/'`src/vutil.cc
-
-src/vutil.obj: src/vutil.cc
-@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/vutil.obj -MD -MP -MF "src/$(DEPDIR)/vutil.Tpo" -c -o src/vutil.obj `if test -f 'src/vutil.cc'; then $(CYGPATH_W) 'src/vutil.cc'; else $(CYGPATH_W) '$(srcdir)/src/vutil.cc'; fi`; \
-@am__fastdepCXX_TRUE@  then mv -f "src/$(DEPDIR)/vutil.Tpo" "src/$(DEPDIR)/vutil.Po"; else rm -f "src/$(DEPDIR)/vutil.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='src/vutil.cc' object='src/vutil.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='src/$(DEPDIR)/vutil.Po' tmpdepfile='src/$(DEPDIR)/vutil.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/vutil.obj `if test -f 'src/vutil.cc'; then $(CYGPATH_W) 'src/vutil.cc'; else $(CYGPATH_W) '$(srcdir)/src/vutil.cc'; fi`
-
-src/vcheck.o: src/vcheck.cc
-@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/vcheck.o -MD -MP -MF "src/$(DEPDIR)/vcheck.Tpo" -c -o src/vcheck.o `test -f 'src/vcheck.cc' || echo '$(srcdir)/'`src/vcheck.cc; \
-@am__fastdepCXX_TRUE@  then mv -f "src/$(DEPDIR)/vcheck.Tpo" "src/$(DEPDIR)/vcheck.Po"; else rm -f "src/$(DEPDIR)/vcheck.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='src/vcheck.cc' object='src/vcheck.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='src/$(DEPDIR)/vcheck.Po' tmpdepfile='src/$(DEPDIR)/vcheck.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/vcheck.o `test -f 'src/vcheck.cc' || echo '$(srcdir)/'`src/vcheck.cc
-
-src/vcheck.obj: src/vcheck.cc
-@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/vcheck.obj -MD -MP -MF "src/$(DEPDIR)/vcheck.Tpo" -c -o src/vcheck.obj `if test -f 'src/vcheck.cc'; then $(CYGPATH_W) 'src/vcheck.cc'; else $(CYGPATH_W) '$(srcdir)/src/vcheck.cc'; fi`; \
-@am__fastdepCXX_TRUE@  then mv -f "src/$(DEPDIR)/vcheck.Tpo" "src/$(DEPDIR)/vcheck.Po"; else rm -f "src/$(DEPDIR)/vcheck.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='src/vcheck.cc' object='src/vcheck.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='src/$(DEPDIR)/vcheck.Po' tmpdepfile='src/$(DEPDIR)/vcheck.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/vcheck.obj `if test -f 'src/vcheck.cc'; then $(CYGPATH_W) 'src/vcheck.cc'; else $(CYGPATH_W) '$(srcdir)/src/vcheck.cc'; fi`
-
-src/vfiles.o: src/vfiles.cc
-@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/vfiles.o -MD -MP -MF "src/$(DEPDIR)/vfiles.Tpo" -c -o src/vfiles.o `test -f 'src/vfiles.cc' || echo '$(srcdir)/'`src/vfiles.cc; \
-@am__fastdepCXX_TRUE@  then mv -f "src/$(DEPDIR)/vfiles.Tpo" "src/$(DEPDIR)/vfiles.Po"; else rm -f "src/$(DEPDIR)/vfiles.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='src/vfiles.cc' object='src/vfiles.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='src/$(DEPDIR)/vfiles.Po' tmpdepfile='src/$(DEPDIR)/vfiles.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/vfiles.o `test -f 'src/vfiles.cc' || echo '$(srcdir)/'`src/vfiles.cc
-
-src/vfiles.obj: src/vfiles.cc
-@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/vfiles.obj -MD -MP -MF "src/$(DEPDIR)/vfiles.Tpo" -c -o src/vfiles.obj `if test -f 'src/vfiles.cc'; then $(CYGPATH_W) 'src/vfiles.cc'; else $(CYGPATH_W) '$(srcdir)/src/vfiles.cc'; fi`; \
-@am__fastdepCXX_TRUE@  then mv -f "src/$(DEPDIR)/vfiles.Tpo" "src/$(DEPDIR)/vfiles.Po"; else rm -f "src/$(DEPDIR)/vfiles.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='src/vfiles.cc' object='src/vfiles.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='src/$(DEPDIR)/vfiles.Po' tmpdepfile='src/$(DEPDIR)/vfiles.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/vfiles.obj `if test -f 'src/vfiles.cc'; then $(CYGPATH_W) 'src/vfiles.cc'; else $(CYGPATH_W) '$(srcdir)/src/vfiles.cc'; fi`
-
-src/src_vunify-vunify.o: src/vunify.cc
-@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_vunify_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/src_vunify-vunify.o -MD -MP -MF "src/$(DEPDIR)/src_vunify-vunify.Tpo" -c -o src/src_vunify-vunify.o `test -f 'src/vunify.cc' || echo '$(srcdir)/'`src/vunify.cc; \
-@am__fastdepCXX_TRUE@  then mv -f "src/$(DEPDIR)/src_vunify-vunify.Tpo" "src/$(DEPDIR)/src_vunify-vunify.Po"; else rm -f "src/$(DEPDIR)/src_vunify-vunify.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='src/vunify.cc' object='src/src_vunify-vunify.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='src/$(DEPDIR)/src_vunify-vunify.Po' tmpdepfile='src/$(DEPDIR)/src_vunify-vunify.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_vunify_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/src_vunify-vunify.o `test -f 'src/vunify.cc' || echo '$(srcdir)/'`src/vunify.cc
-
-src/src_vunify-vunify.obj: src/vunify.cc
-@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_vunify_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/src_vunify-vunify.obj -MD -MP -MF "src/$(DEPDIR)/src_vunify-vunify.Tpo" -c -o src/src_vunify-vunify.obj `if test -f 'src/vunify.cc'; then $(CYGPATH_W) 'src/vunify.cc'; else $(CYGPATH_W) '$(srcdir)/src/vunify.cc'; fi`; \
-@am__fastdepCXX_TRUE@  then mv -f "src/$(DEPDIR)/src_vunify-vunify.Tpo" "src/$(DEPDIR)/src_vunify-vunify.Po"; else rm -f "src/$(DEPDIR)/src_vunify-vunify.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='src/vunify.cc' object='src/src_vunify-vunify.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='src/$(DEPDIR)/src_vunify-vunify.Po' tmpdepfile='src/$(DEPDIR)/src_vunify-vunify.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_vunify_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/src_vunify-vunify.obj `if test -f 'src/vunify.cc'; then $(CYGPATH_W) 'src/vunify.cc'; else $(CYGPATH_W) '$(srcdir)/src/vunify.cc'; fi`
-
-src/src_vunify-vutil.o: src/vutil.cc
-@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_vunify_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/src_vunify-vutil.o -MD -MP -MF "src/$(DEPDIR)/src_vunify-vutil.Tpo" -c -o src/src_vunify-vutil.o `test -f 'src/vutil.cc' || echo '$(srcdir)/'`src/vutil.cc; \
-@am__fastdepCXX_TRUE@  then mv -f "src/$(DEPDIR)/src_vunify-vutil.Tpo" "src/$(DEPDIR)/src_vunify-vutil.Po"; else rm -f "src/$(DEPDIR)/src_vunify-vutil.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='src/vutil.cc' object='src/src_vunify-vutil.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='src/$(DEPDIR)/src_vunify-vutil.Po' tmpdepfile='src/$(DEPDIR)/src_vunify-vutil.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_vunify_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/src_vunify-vutil.o `test -f 'src/vutil.cc' || echo '$(srcdir)/'`src/vutil.cc
-
-src/src_vunify-vutil.obj: src/vutil.cc
-@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_vunify_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/src_vunify-vutil.obj -MD -MP -MF "src/$(DEPDIR)/src_vunify-vutil.Tpo" -c -o src/src_vunify-vutil.obj `if test -f 'src/vutil.cc'; then $(CYGPATH_W) 'src/vutil.cc'; else $(CYGPATH_W) '$(srcdir)/src/vutil.cc'; fi`; \
-@am__fastdepCXX_TRUE@  then mv -f "src/$(DEPDIR)/src_vunify-vutil.Tpo" "src/$(DEPDIR)/src_vunify-vutil.Po"; else rm -f "src/$(DEPDIR)/src_vunify-vutil.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='src/vutil.cc' object='src/src_vunify-vutil.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='src/$(DEPDIR)/src_vunify-vutil.Po' tmpdepfile='src/$(DEPDIR)/src_vunify-vutil.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_vunify_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/src_vunify-vutil.obj `if test -f 'src/vutil.cc'; then $(CYGPATH_W) 'src/vutil.cc'; else $(CYGPATH_W) '$(srcdir)/src/vutil.cc'; fi`
-
-tests/escaperoot.o: tests/escaperoot.cc
-@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tests/escaperoot.o -MD -MP -MF "tests/$(DEPDIR)/escaperoot.Tpo" -c -o tests/escaperoot.o `test -f 'tests/escaperoot.cc' || echo '$(srcdir)/'`tests/escaperoot.cc; \
-@am__fastdepCXX_TRUE@  then mv -f "tests/$(DEPDIR)/escaperoot.Tpo" "tests/$(DEPDIR)/escaperoot.Po"; else rm -f "tests/$(DEPDIR)/escaperoot.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='tests/escaperoot.cc' object='tests/escaperoot.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='tests/$(DEPDIR)/escaperoot.Po' tmpdepfile='tests/$(DEPDIR)/escaperoot.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tests/escaperoot.o `test -f 'tests/escaperoot.cc' || echo '$(srcdir)/'`tests/escaperoot.cc
-
-tests/escaperoot.obj: tests/escaperoot.cc
-@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tests/escaperoot.obj -MD -MP -MF "tests/$(DEPDIR)/escaperoot.Tpo" -c -o tests/escaperoot.obj `if test -f 'tests/escaperoot.cc'; then $(CYGPATH_W) 'tests/escaperoot.cc'; else $(CYGPATH_W) '$(srcdir)/tests/escaperoot.cc'; fi`; \
-@am__fastdepCXX_TRUE@  then mv -f "tests/$(DEPDIR)/escaperoot.Tpo" "tests/$(DEPDIR)/escaperoot.Po"; else rm -f "tests/$(DEPDIR)/escaperoot.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='tests/escaperoot.cc' object='tests/escaperoot.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='tests/$(DEPDIR)/escaperoot.Po' tmpdepfile='tests/$(DEPDIR)/escaperoot.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tests/escaperoot.obj `if test -f 'tests/escaperoot.cc'; then $(CYGPATH_W) 'tests/escaperoot.cc'; else $(CYGPATH_W) '$(srcdir)/tests/escaperoot.cc'; fi`
-
-tests/forkbomb.o: tests/forkbomb.cc
-@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tests/forkbomb.o -MD -MP -MF "tests/$(DEPDIR)/forkbomb.Tpo" -c -o tests/forkbomb.o `test -f 'tests/forkbomb.cc' || echo '$(srcdir)/'`tests/forkbomb.cc; \
-@am__fastdepCXX_TRUE@  then mv -f "tests/$(DEPDIR)/forkbomb.Tpo" "tests/$(DEPDIR)/forkbomb.Po"; else rm -f "tests/$(DEPDIR)/forkbomb.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='tests/forkbomb.cc' object='tests/forkbomb.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='tests/$(DEPDIR)/forkbomb.Po' tmpdepfile='tests/$(DEPDIR)/forkbomb.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tests/forkbomb.o `test -f 'tests/forkbomb.cc' || echo '$(srcdir)/'`tests/forkbomb.cc
-
-tests/forkbomb.obj: tests/forkbomb.cc
-@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tests/forkbomb.obj -MD -MP -MF "tests/$(DEPDIR)/forkbomb.Tpo" -c -o tests/forkbomb.obj `if test -f 'tests/forkbomb.cc'; then $(CYGPATH_W) 'tests/forkbomb.cc'; else $(CYGPATH_W) '$(srcdir)/tests/forkbomb.cc'; fi`; \
-@am__fastdepCXX_TRUE@  then mv -f "tests/$(DEPDIR)/forkbomb.Tpo" "tests/$(DEPDIR)/forkbomb.Po"; else rm -f "tests/$(DEPDIR)/forkbomb.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='tests/forkbomb.cc' object='tests/forkbomb.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='tests/$(DEPDIR)/forkbomb.Po' tmpdepfile='tests/$(DEPDIR)/forkbomb.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tests/forkbomb.obj `if test -f 'tests/forkbomb.cc'; then $(CYGPATH_W) 'tests/forkbomb.cc'; else $(CYGPATH_W) '$(srcdir)/tests/forkbomb.cc'; fi`
-
-tests/testipc.o: tests/testipc.cc
-@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tests/testipc.o -MD -MP -MF "tests/$(DEPDIR)/testipc.Tpo" -c -o tests/testipc.o `test -f 'tests/testipc.cc' || echo '$(srcdir)/'`tests/testipc.cc; \
-@am__fastdepCXX_TRUE@  then mv -f "tests/$(DEPDIR)/testipc.Tpo" "tests/$(DEPDIR)/testipc.Po"; else rm -f "tests/$(DEPDIR)/testipc.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='tests/testipc.cc' object='tests/testipc.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='tests/$(DEPDIR)/testipc.Po' tmpdepfile='tests/$(DEPDIR)/testipc.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tests/testipc.o `test -f 'tests/testipc.cc' || echo '$(srcdir)/'`tests/testipc.cc
-
-tests/testipc.obj: tests/testipc.cc
-@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tests/testipc.obj -MD -MP -MF "tests/$(DEPDIR)/testipc.Tpo" -c -o tests/testipc.obj `if test -f 'tests/testipc.cc'; then $(CYGPATH_W) 'tests/testipc.cc'; else $(CYGPATH_W) '$(srcdir)/tests/testipc.cc'; fi`; \
-@am__fastdepCXX_TRUE@  then mv -f "tests/$(DEPDIR)/testipc.Tpo" "tests/$(DEPDIR)/testipc.Po"; else rm -f "tests/$(DEPDIR)/testipc.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='tests/testipc.cc' object='tests/testipc.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='tests/$(DEPDIR)/testipc.Po' tmpdepfile='tests/$(DEPDIR)/testipc.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tests/testipc.obj `if test -f 'tests/testipc.cc'; then $(CYGPATH_W) 'tests/testipc.cc'; else $(CYGPATH_W) '$(srcdir)/tests/testipc.cc'; fi`
-
-tests/testlimit.o: tests/testlimit.cc
-@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tests/testlimit.o -MD -MP -MF "tests/$(DEPDIR)/testlimit.Tpo" -c -o tests/testlimit.o `test -f 'tests/testlimit.cc' || echo '$(srcdir)/'`tests/testlimit.cc; \
-@am__fastdepCXX_TRUE@  then mv -f "tests/$(DEPDIR)/testlimit.Tpo" "tests/$(DEPDIR)/testlimit.Po"; else rm -f "tests/$(DEPDIR)/testlimit.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='tests/testlimit.cc' object='tests/testlimit.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='tests/$(DEPDIR)/testlimit.Po' tmpdepfile='tests/$(DEPDIR)/testlimit.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tests/testlimit.o `test -f 'tests/testlimit.cc' || echo '$(srcdir)/'`tests/testlimit.cc
-
-tests/testlimit.obj: tests/testlimit.cc
-@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tests/testlimit.obj -MD -MP -MF "tests/$(DEPDIR)/testlimit.Tpo" -c -o tests/testlimit.obj `if test -f 'tests/testlimit.cc'; then $(CYGPATH_W) 'tests/testlimit.cc'; else $(CYGPATH_W) '$(srcdir)/tests/testlimit.cc'; fi`; \
-@am__fastdepCXX_TRUE@  then mv -f "tests/$(DEPDIR)/testlimit.Tpo" "tests/$(DEPDIR)/testlimit.Po"; else rm -f "tests/$(DEPDIR)/testlimit.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='tests/testlimit.cc' object='tests/testlimit.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='tests/$(DEPDIR)/testlimit.Po' tmpdepfile='tests/$(DEPDIR)/testlimit.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tests/testlimit.obj `if test -f 'tests/testlimit.cc'; then $(CYGPATH_W) 'tests/testlimit.cc'; else $(CYGPATH_W) '$(srcdir)/tests/testlimit.cc'; fi`
-
-tests/testopenf.o: tests/testopenf.cc
-@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tests/testopenf.o -MD -MP -MF "tests/$(DEPDIR)/testopenf.Tpo" -c -o tests/testopenf.o `test -f 'tests/testopenf.cc' || echo '$(srcdir)/'`tests/testopenf.cc; \
-@am__fastdepCXX_TRUE@  then mv -f "tests/$(DEPDIR)/testopenf.Tpo" "tests/$(DEPDIR)/testopenf.Po"; else rm -f "tests/$(DEPDIR)/testopenf.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='tests/testopenf.cc' object='tests/testopenf.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='tests/$(DEPDIR)/testopenf.Po' tmpdepfile='tests/$(DEPDIR)/testopenf.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tests/testopenf.o `test -f 'tests/testopenf.cc' || echo '$(srcdir)/'`tests/testopenf.cc
-
-tests/testopenf.obj: tests/testopenf.cc
-@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tests/testopenf.obj -MD -MP -MF "tests/$(DEPDIR)/testopenf.Tpo" -c -o tests/testopenf.obj `if test -f 'tests/testopenf.cc'; then $(CYGPATH_W) 'tests/testopenf.cc'; else $(CYGPATH_W) '$(srcdir)/tests/testopenf.cc'; fi`; \
-@am__fastdepCXX_TRUE@  then mv -f "tests/$(DEPDIR)/testopenf.Tpo" "tests/$(DEPDIR)/testopenf.Po"; else rm -f "tests/$(DEPDIR)/testopenf.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='tests/testopenf.cc' object='tests/testopenf.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='tests/$(DEPDIR)/testopenf.Po' tmpdepfile='tests/$(DEPDIR)/testopenf.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tests/testopenf.obj `if test -f 'tests/testopenf.cc'; then $(CYGPATH_W) 'tests/testopenf.cc'; else $(CYGPATH_W) '$(srcdir)/tests/testopenf.cc'; fi`
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+       -rm -rf ensc_fmt/.libs ensc_fmt/_libs
+       -rm -rf lib/.libs lib/_libs
+       -rm -rf src/.libs src/_libs
+
+distclean-libtool:
+       -rm -f libtool
 uninstall-info-am:
 install-man8: $(man8_MANS) $(man_MANS)
        @$(NORMAL_INSTALL)
@@ -1752,12 +7972,29 @@ uninstall-man8:
          echo " rm -f '$(DESTDIR)$(man8dir)/$$inst'"; \
          rm -f "$(DESTDIR)$(man8dir)/$$inst"; \
        done
+install-pkgconfDATA: $(pkgconf_DATA)
+       @$(NORMAL_INSTALL)
+       test -z "$(pkgconfdir)" || $(mkdir_p) "$(DESTDIR)$(pkgconfdir)"
+       @list='$(pkgconf_DATA)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         f=$(am__strip_dir) \
+         echo " $(pkgconfDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfdir)/$$f'"; \
+         $(pkgconfDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfdir)/$$f"; \
+       done
+
+uninstall-pkgconfDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(pkgconf_DATA)'; for p in $$list; do \
+         f=$(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(pkgconfdir)/$$f'"; \
+         rm -f "$(DESTDIR)$(pkgconfdir)/$$f"; \
+       done
 install-pkglibDATA: $(pkglib_DATA)
        @$(NORMAL_INSTALL)
        test -z "$(pkglibdir)" || $(mkdir_p) "$(DESTDIR)$(pkglibdir)"
        @list='$(pkglib_DATA)'; for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         f=$(am__strip_dir) \
          echo " $(pkglibDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkglibdir)/$$f'"; \
          $(pkglibDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkglibdir)/$$f"; \
        done
@@ -1765,33 +8002,16 @@ install-pkglibDATA: $(pkglib_DATA)
 uninstall-pkglibDATA:
        @$(NORMAL_UNINSTALL)
        @list='$(pkglib_DATA)'; for p in $$list; do \
-         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         f=$(am__strip_dir) \
          echo " rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
          rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
        done
-install-scriptscfgDATA: $(scriptscfg_DATA)
-       @$(NORMAL_INSTALL)
-       test -z "$(scriptscfgdir)" || $(mkdir_p) "$(DESTDIR)$(scriptscfgdir)"
-       @list='$(scriptscfg_DATA)'; for p in $$list; do \
-         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-         f="`echo $$p | sed -e 's|^.*/||'`"; \
-         echo " $(scriptscfgDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(scriptscfgdir)/$$f'"; \
-         $(scriptscfgDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(scriptscfgdir)/$$f"; \
-       done
-
-uninstall-scriptscfgDATA:
-       @$(NORMAL_UNINSTALL)
-       @list='$(scriptscfg_DATA)'; for p in $$list; do \
-         f="`echo $$p | sed -e 's|^.*/||'`"; \
-         echo " rm -f '$(DESTDIR)$(scriptscfgdir)/$$f'"; \
-         rm -f "$(DESTDIR)$(scriptscfgdir)/$$f"; \
-       done
 install-sysconfDATA: $(sysconf_DATA)
        @$(NORMAL_INSTALL)
        test -z "$(sysconfdir)" || $(mkdir_p) "$(DESTDIR)$(sysconfdir)"
        @list='$(sysconf_DATA)'; for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         f=$(am__strip_dir) \
          echo " $(sysconfDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(sysconfdir)/$$f'"; \
          $(sysconfDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(sysconfdir)/$$f"; \
        done
@@ -1799,33 +8019,16 @@ install-sysconfDATA: $(sysconf_DATA)
 uninstall-sysconfDATA:
        @$(NORMAL_UNINSTALL)
        @list='$(sysconf_DATA)'; for p in $$list; do \
-         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         f=$(am__strip_dir) \
          echo " rm -f '$(DESTDIR)$(sysconfdir)/$$f'"; \
          rm -f "$(DESTDIR)$(sysconfdir)/$$f"; \
        done
-install-vservercfgDATA: $(vservercfg_DATA)
-       @$(NORMAL_INSTALL)
-       test -z "$(vservercfgdir)" || $(mkdir_p) "$(DESTDIR)$(vservercfgdir)"
-       @list='$(vservercfg_DATA)'; for p in $$list; do \
-         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-         f="`echo $$p | sed -e 's|^.*/||'`"; \
-         echo " $(vservercfgDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(vservercfgdir)/$$f'"; \
-         $(vservercfgDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(vservercfgdir)/$$f"; \
-       done
-
-uninstall-vservercfgDATA:
-       @$(NORMAL_UNINSTALL)
-       @list='$(vservercfg_DATA)'; for p in $$list; do \
-         f="`echo $$p | sed -e 's|^.*/||'`"; \
-         echo " rm -f '$(DESTDIR)$(vservercfgdir)/$$f'"; \
-         rm -f "$(DESTDIR)$(vservercfgdir)/$$f"; \
-       done
 install-includeHEADERS: $(include_HEADERS)
        @$(NORMAL_INSTALL)
        test -z "$(includedir)" || $(mkdir_p) "$(DESTDIR)$(includedir)"
        @list='$(include_HEADERS)'; for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         f=$(am__strip_dir) \
          echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \
          $(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \
        done
@@ -1833,11 +8036,82 @@ install-includeHEADERS: $(include_HEADERS)
 uninstall-includeHEADERS:
        @$(NORMAL_UNINSTALL)
        @list='$(include_HEADERS)'; for p in $$list; do \
-         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         f=$(am__strip_dir) \
          echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \
          rm -f "$(DESTDIR)$(includedir)/$$f"; \
        done
 
+# 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):
+       @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; \
+         (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"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+       @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; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (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 \
@@ -1848,10 +8122,23 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
        mkid -fID $$unique
 tags: TAGS
 
-TAGS:  $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
        tags=; \
        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 || \
+             tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
        list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
@@ -1859,12 +8146,12 @@ TAGS:  $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
          $(AWK) '    { files[$$0] = 1; } \
               END { for (i in files) print i; }'`; \
        if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
-         test -z "$$unique" && unique=$$empty_fix; \
+         test -n "$$unique" || unique=$$empty_fix; \
          $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
            $$tags $$unique; \
        fi
 ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
        tags=; \
        here=`pwd`; \
@@ -1886,10 +8173,89 @@ GTAGS:
 distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
+check-TESTS: $(TESTS)
+       @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+       srcdir=$(srcdir); export srcdir; \
+       list='$(TESTS)'; \
+       if test -n "$$list"; then \
+         for tst in $$list; do \
+           if test -f ./$$tst; then dir=./; \
+           elif test -f $$tst; then dir=; \
+           else dir="$(srcdir)/"; fi; \
+           if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+             all=`expr $$all + 1`; \
+             case " $(XFAIL_TESTS) " in \
+             *" $$tst "*) \
+               xpass=`expr $$xpass + 1`; \
+               failed=`expr $$failed + 1`; \
+               echo "XPASS: $$tst"; \
+             ;; \
+             *) \
+               echo "PASS: $$tst"; \
+             ;; \
+             esac; \
+           elif test $$? -ne 77; then \
+             all=`expr $$all + 1`; \
+             case " $(XFAIL_TESTS) " in \
+             *" $$tst "*) \
+               xfail=`expr $$xfail + 1`; \
+               echo "XFAIL: $$tst"; \
+             ;; \
+             *) \
+               failed=`expr $$failed + 1`; \
+               echo "FAIL: $$tst"; \
+             ;; \
+             esac; \
+           else \
+             skip=`expr $$skip + 1`; \
+             echo "SKIP: $$tst"; \
+           fi; \
+         done; \
+         if test "$$failed" -eq 0; then \
+           if test "$$xfail" -eq 0; then \
+             banner="All $$all tests passed"; \
+           else \
+             banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+           fi; \
+         else \
+           if test "$$xpass" -eq 0; then \
+             banner="$$failed of $$all tests failed"; \
+           else \
+             banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+           fi; \
+         fi; \
+         dashes="$$banner"; \
+         skipped=""; \
+         if test "$$skip" -ne 0; then \
+           skipped="($$skip tests were not run)"; \
+           test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+             dashes="$$skipped"; \
+         fi; \
+         report=""; \
+         if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+           report="Please report to $(PACKAGE_BUGREPORT)"; \
+           test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+             dashes="$$report"; \
+         fi; \
+         dashes=`echo "$$dashes" | sed s/./=/g`; \
+         echo "$$dashes"; \
+         echo "$$banner"; \
+         test -z "$$skipped" || echo "$$skipped"; \
+         test -z "$$report" || echo "$$report"; \
+         echo "$$dashes"; \
+         test "$$failed" -eq 0; \
+       else :; fi
+
 distdir: $(DISTFILES)
+       @case `sed 15q $(srcdir)/NEWS` in \
+       *"$(VERSION)"*) : ;; \
+       *) \
+         echo "NEWS not updated; not releasing" 1>&2; \
+         exit 1;; \
+       esac
        $(am__remove_distdir)
        mkdir $(distdir)
-       $(mkdir_p) $(distdir)/. $(distdir)/distrib $(distdir)/doc $(distdir)/lib $(distdir)/linuxconf $(distdir)/m4 $(distdir)/man $(distdir)/scripts $(distdir)/src $(distdir)/sysv $(distdir)/tests
+       $(mkdir_p) $(distdir)/. $(distdir)/contrib $(distdir)/doc $(distdir)/ensc_fmt $(distdir)/ensc_vector $(distdir)/ensc_vector/testsuite $(distdir)/ensc_wrappers $(distdir)/kernel $(distdir)/lib $(distdir)/lib/apidoc $(distdir)/lib/testsuite $(distdir)/lib_internal $(distdir)/lib_internal/testsuite $(distdir)/m4 $(distdir)/man $(distdir)/scripts $(distdir)/scripts/legacy $(distdir)/src $(distdir)/src/testsuite $(distdir)/sysv $(distdir)/tests $(distdir)/vserver-start
        @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
        topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
        list='$(DISTFILES)'; for file in $$list; do \
@@ -1916,20 +8282,35 @@ distdir: $(DISTFILES)
            || 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; \
+           distdir=`$(am__cd) $(distdir) && pwd`; \
+           top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+           (cd $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$top_distdir" \
+               distdir="$$distdir/$$subdir" \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
        -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -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 $(SHELL) $(install_sh) -c -m a+r {} {} \; \
        || chmod -R a+r $(distdir)
 dist-gzip: distdir
-       $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+       tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
        $(am__remove_distdir)
 dist-bzip2: distdir
-       $(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
+       tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
        $(am__remove_distdir)
 
 dist-tarZ: distdir
-       $(AMTAR) chof - $(distdir) | compress -c >$(distdir).tar.Z
+       tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
        $(am__remove_distdir)
 
 dist-shar: distdir
@@ -1942,8 +8323,8 @@ dist-zip: distdir
        $(am__remove_distdir)
 
 dist dist-all: distdir
-       $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-       $(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
+       tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+       tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
        $(am__remove_distdir)
 
 # This target untars the dist file and tries a VPATH configuration.  Then
@@ -1952,11 +8333,11 @@ dist dist-all: distdir
 distcheck: dist
        case '$(DIST_ARCHIVES)' in \
        *.tar.gz*) \
-         GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - ;;\
+         GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
        *.tar.bz2*) \
-         bunzip2 -c $(distdir).tar.bz2 | $(AMTAR) xf - ;;\
+         bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
        *.tar.Z*) \
-         uncompress -c $(distdir).tar.Z | $(AMTAR) xf - ;;\
+         uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
        *.shar.gz*) \
          GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
        *.zip*) \
@@ -2014,24 +8395,27 @@ distcleancheck: distclean
               $(distcleancheck_listfiles) ; \
               exit 1; } >&2
 check-am: all-am
+       $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(check_SCRIPTS)
+       $(MAKE) $(AM_MAKEFLAGS) check-TESTS
 check: $(BUILT_SOURCES)
-       $(MAKE) $(AM_MAKEFLAGS) check-am
-all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(SCRIPTS) $(MANS) $(DATA) \
-               $(HEADERS) config.h
-installdirs:
-       for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(legacydir)" "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(sysvdir)" "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(scriptscfgdir)" "$(DESTDIR)$(sysconfdir)" "$(DESTDIR)$(vservercfgdir)" "$(DESTDIR)$(includedir)"; do \
+       $(MAKE) $(AM_MAKEFLAGS) check-recursive
+all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) \
+               $(MANS) $(DATA) $(HEADERS) config.h
+installdirs: installdirs-recursive
+installdirs-am:
+       for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(legacydir)" "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(initrddir)" "$(DESTDIR)$(legacydir)" "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(pkgconfdir)" "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(sysconfdir)" "$(DESTDIR)$(includedir)"; do \
          test -z "$$dir" || $(mkdir_p) "$$dir"; \
        done
 install: $(BUILT_SOURCES)
-       $(MAKE) $(AM_MAKEFLAGS) install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
+       $(MAKE) $(AM_MAKEFLAGS) 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-am
+installcheck: installcheck-recursive
 install-strip:
        $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
          install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
@@ -2043,167 +8427,280 @@ clean-generic:
        -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
 
 distclean-generic:
-       -rm -f $(CONFIG_CLEAN_FILES)
-       -rm -f tests/$(am__dirstamp)
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -rm -f ensc_fmt/$(DEPDIR)/$(am__dirstamp)
+       -rm -f ensc_fmt/$(am__dirstamp)
+       -rm -f ensc_vector/$(DEPDIR)/$(am__dirstamp)
+       -rm -f ensc_vector/$(am__dirstamp)
+       -rm -f ensc_vector/testsuite/$(DEPDIR)/$(am__dirstamp)
+       -rm -f ensc_vector/testsuite/$(am__dirstamp)
+       -rm -f lib/$(DEPDIR)/$(am__dirstamp)
        -rm -f lib/$(am__dirstamp)
+       -rm -f lib/testsuite/$(DEPDIR)/$(am__dirstamp)
+       -rm -f lib/testsuite/$(am__dirstamp)
+       -rm -f lib_internal/$(DEPDIR)/$(am__dirstamp)
+       -rm -f lib_internal/$(am__dirstamp)
+       -rm -f lib_internal/testsuite/$(DEPDIR)/$(am__dirstamp)
+       -rm -f lib_internal/testsuite/$(am__dirstamp)
+       -rm -f src/$(DEPDIR)/$(am__dirstamp)
        -rm -f src/$(am__dirstamp)
+       -rm -f src/testsuite/$(DEPDIR)/$(am__dirstamp)
+       -rm -f src/testsuite/$(am__dirstamp)
        -rm -f tests/$(DEPDIR)/$(am__dirstamp)
-       -rm -f lib/$(DEPDIR)/$(am__dirstamp)
-       -rm -f src/$(DEPDIR)/$(am__dirstamp)
+       -rm -f tests/$(am__dirstamp)
+       -rm -f vserver-start/$(DEPDIR)/$(am__dirstamp)
+       -rm -f vserver-start/$(am__dirstamp)
+       -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 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 "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
-clean: clean-am
+clean: clean-recursive
 
-clean-am: clean-generic clean-libLIBRARIES clean-noinstPROGRAMS \
-       clean-pkglibPROGRAMS clean-sbinPROGRAMS mostlyclean-am
+clean-am: clean-checkPROGRAMS clean-generic clean-legacyPROGRAMS \
+       clean-libLIBRARIES clean-libLTLIBRARIES clean-libtool \
+       clean-local clean-noinstLIBRARIES clean-noinstPROGRAMS \
+       clean-pkglibLTLIBRARIES clean-pkglibPROGRAMS \
+       clean-sbinPROGRAMS mostlyclean-am
 
-distclean: distclean-am
+distclean: distclean-recursive
        -rm -f $(am__CONFIG_DISTCLEAN_FILES)
-       -rm -rf lib/$(DEPDIR) src/$(DEPDIR) tests/$(DEPDIR)
+       -rm -rf ./$(DEPDIR) ensc_fmt/$(DEPDIR) ensc_vector/$(DEPDIR) ensc_vector/testsuite/$(DEPDIR) lib/$(DEPDIR) lib/testsuite/$(DEPDIR) lib_internal/$(DEPDIR) lib_internal/testsuite/$(DEPDIR) src/$(DEPDIR) src/testsuite/$(DEPDIR) tests/$(DEPDIR) vserver-start/$(DEPDIR)
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
-       distclean-hdr distclean-local distclean-tags
+       distclean-hdr distclean-libtool distclean-local distclean-tags
 
-dvi: dvi-am
+dvi: dvi-recursive
 
 dvi-am:
 
-html: html-am
+html: html-recursive
 
-info: info-am
+info: info-recursive
 
 info-am:
 
-install-data-am: install-includeHEADERS install-legacySCRIPTS \
-       install-man install-scriptscfgDATA install-sysvSCRIPTS \
-       install-vservercfgDATA
+install-data-am: install-includeHEADERS install-initrdSCRIPTS \
+       install-legacyPROGRAMS install-legacySCRIPTS install-man \
+       install-pkgconfDATA
+       @$(NORMAL_INSTALL)
+       $(MAKE) $(AM_MAKEFLAGS) install-data-hook
 
-install-exec-am: install-libLIBRARIES install-pkglibDATA \
+install-exec-am: install-libLIBRARIES install-libLTLIBRARIES \
+       install-pkglibDATA install-pkglibLTLIBRARIES \
        install-pkglibPROGRAMS install-pkglibSCRIPTS \
        install-sbinPROGRAMS install-sbinSCRIPTS install-sysconfDATA
+       @$(NORMAL_INSTALL)
+       $(MAKE) $(AM_MAKEFLAGS) install-exec-hook
 
-install-info: install-info-am
+install-info: install-info-recursive
 
 install-man: install-man8
 
-installcheck-am:
+installcheck-am: installcheck-initrdSCRIPTS \
+       installcheck-legacyPROGRAMS installcheck-legacySCRIPTS \
+       installcheck-pkglibPROGRAMS installcheck-pkglibSCRIPTS \
+       installcheck-sbinPROGRAMS installcheck-sbinSCRIPTS
 
-maintainer-clean: maintainer-clean-am
+maintainer-clean: maintainer-clean-recursive
        -rm -f $(am__CONFIG_DISTCLEAN_FILES)
        -rm -rf $(top_srcdir)/autom4te.cache
-       -rm -rf lib/$(DEPDIR) src/$(DEPDIR) tests/$(DEPDIR)
+       -rm -rf ./$(DEPDIR) ensc_fmt/$(DEPDIR) ensc_vector/$(DEPDIR) ensc_vector/testsuite/$(DEPDIR) lib/$(DEPDIR) lib/testsuite/$(DEPDIR) lib_internal/$(DEPDIR) lib_internal/testsuite/$(DEPDIR) src/$(DEPDIR) src/testsuite/$(DEPDIR) tests/$(DEPDIR) vserver-start/$(DEPDIR)
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
-mostlyclean: mostlyclean-am
+mostlyclean: mostlyclean-recursive
 
-mostlyclean-am: mostlyclean-compile mostlyclean-generic
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
 
-pdf: pdf-am
+pdf: pdf-recursive
 
 pdf-am:
 
-ps: ps-am
+ps: ps-recursive
 
 ps-am:
 
 uninstall-am: uninstall-includeHEADERS uninstall-info-am \
-       uninstall-legacySCRIPTS uninstall-libLIBRARIES uninstall-man \
-       uninstall-pkglibDATA uninstall-pkglibPROGRAMS \
-       uninstall-pkglibSCRIPTS uninstall-sbinPROGRAMS \
-       uninstall-sbinSCRIPTS uninstall-scriptscfgDATA \
-       uninstall-sysconfDATA uninstall-sysvSCRIPTS \
-       uninstall-vservercfgDATA
+       uninstall-initrdSCRIPTS uninstall-legacyPROGRAMS \
+       uninstall-legacySCRIPTS uninstall-libLIBRARIES \
+       uninstall-libLTLIBRARIES uninstall-man uninstall-pkgconfDATA \
+       uninstall-pkglibDATA uninstall-pkglibLTLIBRARIES \
+       uninstall-pkglibPROGRAMS uninstall-pkglibSCRIPTS \
+       uninstall-sbinPROGRAMS uninstall-sbinSCRIPTS \
+       uninstall-sysconfDATA
+
+uninstall-info: uninstall-info-recursive
 
 uninstall-man: uninstall-man8
 
-.PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \
-       clean-generic clean-libLIBRARIES clean-noinstPROGRAMS \
-       clean-pkglibPROGRAMS clean-sbinPROGRAMS ctags dist dist-all \
-       dist-bzip2 dist-gzip dist-shar dist-tarZ dist-zip distcheck \
-       distclean distclean-compile distclean-generic distclean-hdr \
-       distclean-local distclean-tags distcleancheck distdir \
-       distuninstallcheck dvi dvi-am html html-am info info-am \
-       install install-am install-data install-data-am install-exec \
-       install-exec-am install-includeHEADERS install-info \
-       install-info-am install-legacySCRIPTS install-libLIBRARIES \
-       install-man install-man8 install-pkglibDATA \
-       install-pkglibPROGRAMS install-pkglibSCRIPTS \
-       install-sbinPROGRAMS install-sbinSCRIPTS \
-       install-scriptscfgDATA install-strip install-sysconfDATA \
-       install-sysvSCRIPTS install-vservercfgDATA installcheck \
-       installcheck-am installdirs maintainer-clean \
-       maintainer-clean-generic mostlyclean mostlyclean-compile \
-       mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
-       uninstall-am uninstall-includeHEADERS uninstall-info-am \
-       uninstall-legacySCRIPTS uninstall-libLIBRARIES uninstall-man \
-       uninstall-man8 uninstall-pkglibDATA uninstall-pkglibPROGRAMS \
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
+       check-TESTS check-am clean clean-checkPROGRAMS clean-generic \
+       clean-legacyPROGRAMS clean-libLIBRARIES clean-libLTLIBRARIES \
+       clean-libtool clean-local clean-noinstLIBRARIES \
+       clean-noinstPROGRAMS clean-pkglibLTLIBRARIES \
+       clean-pkglibPROGRAMS clean-recursive clean-sbinPROGRAMS ctags \
+       ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \
+       dist-tarZ dist-zip distcheck distclean distclean-compile \
+       distclean-generic distclean-hdr distclean-libtool \
+       distclean-local distclean-recursive 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-exec install-exec-am \
+       install-exec-hook install-includeHEADERS install-info \
+       install-info-am install-initrdSCRIPTS install-legacyPROGRAMS \
+       install-legacySCRIPTS install-libLIBRARIES \
+       install-libLTLIBRARIES install-man install-man8 \
+       install-pkgconfDATA install-pkglibDATA \
+       install-pkglibLTLIBRARIES install-pkglibPROGRAMS \
+       install-pkglibSCRIPTS install-sbinPROGRAMS install-sbinSCRIPTS \
+       install-strip install-sysconfDATA installcheck installcheck-am \
+       installcheck-initrdSCRIPTS installcheck-legacyPROGRAMS \
+       installcheck-legacySCRIPTS installcheck-pkglibPROGRAMS \
+       installcheck-pkglibSCRIPTS installcheck-sbinPROGRAMS \
+       installcheck-sbinSCRIPTS installdirs installdirs-am \
+       maintainer-clean maintainer-clean-generic \
+       maintainer-clean-recursive mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
+       pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+       uninstall-includeHEADERS uninstall-info-am \
+       uninstall-initrdSCRIPTS uninstall-legacyPROGRAMS \
+       uninstall-legacySCRIPTS uninstall-libLIBRARIES \
+       uninstall-libLTLIBRARIES uninstall-man uninstall-man8 \
+       uninstall-pkgconfDATA uninstall-pkglibDATA \
+       uninstall-pkglibLTLIBRARIES uninstall-pkglibPROGRAMS \
        uninstall-pkglibSCRIPTS uninstall-sbinPROGRAMS \
-       uninstall-sbinSCRIPTS uninstall-scriptscfgDATA \
-       uninstall-sysconfDATA uninstall-sysvSCRIPTS \
-       uninstall-vservercfgDATA
+       uninstall-sbinSCRIPTS uninstall-sysconfDATA
 
 
-linuxcaps.h:   ${kernelincludedir}/linux/capability.h Makefile
-               @rm -f $@
-               echo '#include <stdint.h>' >$@.tmp
-               sed -e 's!^#include .*!!g;s!\<__u32\>!uint32_t!g;s!\<__user\>!!g;' $< >>$@.tmp
-               @-chmod --reference $< $@.tmp &>/dev/null
-               mv -f $@.tmp $@
-               @chmod a-w $@
+silent.%:              FORCE
+                       @t=$$(mktemp /tmp/build.XXXXXX) && \
+                       $(MAKE) '$*' -s 2>$$t >/dev/null && \
+                       ( cat $$t | \
+                               grep -v ': In function' | \
+                               grep -v 'your code still has assertions enabled' | \
+                               grep -v ' is obsoleted' | \
+                               grep -v 'warning: #warning'; \
+                               rm -f $$t || : )
 
 linuxvirtual.h:
-@ENSC_ENABLE_INTERNAL_HEADERS_TRUE@            ln -sf '$(top_srcdir)/lib/virtual.h' '$@'
-@ENSC_ENABLE_INTERNAL_HEADERS_FALSE@           ln -sf '$(kernelincludedir)/linux/virtual.h' '$@' && test -e '$@' || \
-@ENSC_ENABLE_INTERNAL_HEADERS_FALSE@           ln -sf '$(top_srcdir)/lib/virtual.h' '$@'
+@ENSC_ENABLE_INTERNAL_HEADERS_TRUE@                    ln -sf '$(top_srcdir)/lib/virtual.h' '$@'
+@ENSC_ENABLE_INTERNAL_HEADERS_FALSE@                   ln -sf '$(kernelincludedir)/linux/virtual.h' '$@' && test -e '$@' || \
+@ENSC_ENABLE_INTERNAL_HEADERS_FALSE@                   ln -sf '$(top_srcdir)/lib/virtual.h' '$@'
 
-#install-data-hook:            $(DESTDIR)$(pkglibdir)/setattr
+pathconfig.h:          .pathconfig.h.pathsubst.stamp
+.%.pathsubst.stamp:    %.pathsubst Makefile
+                       @mkdir -p $$(dirname '$@')
+                       @echo "$(SED) -e '...' $*.pathsubst >$*"
+                       @$(SED) -e '$(pathsubst_RULES)' '$<' >'$@.tmp'
+                       @-chmod --reference='$<' '$@.tmp'
+                       @if cmp -s '$@.tmp' '$*'; then \
+                               echo "... no changes, reusing old version"; \
+                               rm -f '$@.tmp'; \
+                       else \
+                               rm -f '$*'; mv '$@.tmp' '$*'; \
+                       fi
+                       @chmod a-w '$*'
+                       @touch '$@'
 
-#$(DESTDIR)$(pkglibdir)/setattr:
-#                              ln -s showattr '$@'
+update-doc:            doc
+                       $(top_srcdir)/update-doc
 
-src/setattr$(EXEEXT):          src/showattr$(EXEEXT)
-                               @rm -f '$@'
-                               ln -s showattr$(EXEEXT) '$@'
+install-data-hook:     install-fix-script-paths install-create-dirs
 
-scripts/%:             scripts/%.subst
-                       @mkdir -p $$(dirname '$@')
-                       sed -e 's!@'PKGLIBDIR'@!$(pkglibdir)!g; \
-                               s!@'SBINDIR'@!$(sbindir)!g; \
-                               s!@'VSERVERDIR'@!$(vserverdir)!g' '$<' >'$@.tmp'
-                       @-chmod --reference='$<' '$@.tmp'
-                       @-rm -f '$@'
-                       mv '$@.tmp' '$@'
-                       @chmod a-w '$@'
+install-create-dirs:
+                       $(mkinstalldirs) -m 755 $(DESTDIR)$(pkgstatedir) $(DESTDIR)$(pkgstatedir).rev $(DESTDIR)$(vshelperstatedir)
+                       $(mkinstalldirs) -m 755 $(DESTDIR)$(confdefaultsdir)
+                       f=$(DESTDIR)$(confdefaultsdir)/vdirbase; test -e "$$f" || ln -sf '$(vserverdir)'      "$$f"
+                       f=$(DESTDIR)$(pkgstaterevdir);           test -e "$$f" || ln -sf '$(pkgstatedir).rev' "$$f"
+
+install-fix-script-paths:
+                       test "/usr/lib/util-vserver" = "$(pkglibdir)" || \
+                       for i in $(fix_SCRPTS); do \
+                               f="$(DESTDIR)$$i"; \
+                               $(SED) -e 's!/usr/lib/util-vserver!$(pkglibdir)!g' "$$f" >"$$f.tmp"; \
+                               $(CMP) -s "$$f.tmp" "$$f" || cat "$$f.tmp" >"$$f"; \
+                               rm -f "$$f.tmp"; \
+                       done
+
+install-distribution:  _install-vserverdir _install-vshelperlink
+
+_install-vshelperlink:
+                       $(mkinstalldirs) $(DESTDIR)/sbin
+                       ln -sf ..$(pkglibdir)/vshelper $(DESTDIR)/sbin/vshelper
+
+_install-vserverdir:
+                       $(mkinstalldirs) $(DESTDIR)$(vserverdir) $(DESTDIR)$(vserverpkgdir)
+
+.fixups:               config.status util-vserver.spec
+                       chmod a-w util-vserver.spec
+                       touch $@
+
+@USE_DIETLIBC_TRUE@$(addsuffix $(EXEEXT), $(DIETPROGS)) \
+@USE_DIETLIBC_TRUE@$(addsuffix $(OBJEXT), $(DIETPROGS)) \
+@USE_DIETLIBC_TRUE@            :               CC=$(DIET_CC)
+
+doc:                   lib/apidoc/.apidoc
+clean-local:           clean_lib_apidoc
+
+clean_lib_apidoc:
+                       -rm -rf lib/apidoc/html lib/apidoc/latex lib/apidoc/man
+
+lib/apidoc/.apidoc:    lib/apidoc/Doxyfile lib/vserver.h lib/internal.h
+                       -rm -rf lib/apidoc/html lib/apidoc/latex lib/apidoc/man
+                       cd "$$(dirname '$<')" && $(DOXYGEN) "$$(basename '$<')"
+                       $(MAKE) -j1 -C lib/apidoc/latex
+                       touch '$@'
+
+install-exec-hook:             src_install_exec_hook
+
+src_install_exec_hook:
+                               -rm -f $(DESTDIR)$(pkglibdir)/rpm-fake.a $(DESTDIR)$(pkglibdir)/rpm-fake.la
+
+clean-local:           clean-testsuite
+
+clean-testsuite:
+                       rm -rf src/testsuite/.libs src/testsuite/_libs
+
+doc/configuration.html:                STYLESHEET=$(srcdir)/doc/configuration-xhtml.xsl
+doc/configuration.html:                $(srcdir)/doc/configuration-xhtml.xsl
+
+doc/compatibility.html:                STYLESHEET=$(srcdir)/doc/compatibility-xhtml.xsl
+doc/compatibility.html:                $(srcdir)/doc/compatibility-xhtml.xsl
+
+doc:                           doc_doc
+doc_doc:                       $(doc_gen_DOCS)
+@HAVE_XSLTP_TRUE@%.html:                               %.xml $(STYLESHEET)
+@HAVE_XSLTP_TRUE@                              @-rm -f '$@.tmp' '$@'
+@HAVE_XSLTP_TRUE@                              LANG=C $(XSLTP) $(XSLTP_AMFLAGS) -in '$<' -xsl $(STYLESHEET) -out '$@.tmp'
+@HAVE_XSLTP_TRUE@                              @mv -f '$@.tmp' '$@'
+@HAVE_XSLTPROC_TRUE@@HAVE_XSLTP_FALSE@%.html:                          %.xml $(STYLESHEET)
+@HAVE_XSLTPROC_TRUE@@HAVE_XSLTP_FALSE@                         @-rm -f '$@.tmp' '$@'
+@HAVE_XSLTPROC_TRUE@@HAVE_XSLTP_FALSE@                         $(XSLTPROC) $(XSLT_FLAGS) $(XSLT_AMFLAGS) -o '$@.tmp' "$(STYLESHEET)" "$<"
+@HAVE_XSLTPROC_TRUE@@HAVE_XSLTP_FALSE@                         @mv -f '$@.tmp' '$@'
+
+scripts/util-vserver-vars:     scripts/.util-vserver-vars.pathsubst.stamp
+scripts/legacy/vps:            scripts/legacy/.vps.pathsubst.stamp
 
 sysv/%:                        sysv/%.subst
                        @mkdir -p $$(dirname '$@')
-                       sed -e 's!/usr/lib/util-vserver!$(pkglibdir)!g; \
-                               s!^USR_SBIN=/usr/sbin$$!USR_SBIN=$(sbindir)!g; \
-                                s!^VROOTDIR=/vservers$$!VROOTDIR=$(vserverdir)!g; \
-                              ' '$<' >'$@.tmp'
-                       if cmp -s '$<' '$@.tmp'; then \
+                       sed -e '$(sysv_SUBSTRULE)' '$<' >'$@.tmp'
+                       @rm -f '$@'
+                       @if cmp -s '$<' '$@.tmp'; then \
                                cp -p '$<' '$@'; \
                        else \
                                mv -f '$@.tmp' '$@'; \
                        fi
-                       -rm -f '$@.tmp'
+                       @rm -f '$@.tmp'
                        @chmod a-w '$@'
 
-@ENSC_ENABLE_LINUXCONF_TRUE@linuxconf/%:               linuxconf/%.subst
-@ENSC_ENABLE_LINUXCONF_TRUE@                   @mkdir -p $$(dirname '$@')
-@ENSC_ENABLE_LINUXCONF_TRUE@                   sed -e 's!@'PKGLIBDIR'@!$(pkglibdir)!g; \
-@ENSC_ENABLE_LINUXCONF_TRUE@                           s!@'SBINDIR'@!$(sbindir)!g' '$<' >'$@.tmp'
-@ENSC_ENABLE_LINUXCONF_TRUE@                   @-chmod --reference='$<' '$@.tmp'
-@ENSC_ENABLE_LINUXCONF_TRUE@                   @-rm -f '$@'
-@ENSC_ENABLE_LINUXCONF_TRUE@                   mv '$@.tmp' '$@'
-@ENSC_ENABLE_LINUXCONF_TRUE@                   @chmod a-w '$@'
+contrib/manifest.dat:                  contrib/.manifest.dat.pathsubst.stamp
 
 gpgsig:
-                       gpg --armor --detach-sign $(distdir).tar.bz2
+                       gpgkey=$(GPG_KEY); \
+                       gpg $${gpgkey:+--default-key "$$gpgkey"} --armor --detach-sign $(distdir).tar.bz2
 
 $(BUILT_SOURCES) config.h:     .X$(subst /,_,$(sysconfdir))-up-to-date
 
@@ -2231,6 +8728,68 @@ ChangeLog.sed:
 @HAVE_CVS2CL_FALSE@@HAVE_RCS2LOG_TRUE@                         fi
 
 .PHONY:        ChangeLog
+
+%.pc:                  %.pc.subst Makefile
+                       rm -f $@
+                       @case '$(libdir)' in                                                    \
+                               $(BAD_LIB_PATHS))       libflags=;;                             \
+                               *)                      libflags='-L$${libdir} ';;              \
+                       esac;                                                                   \
+                       case '$(pkgincludedir)' in                                              \
+                               $(BAD_INC_PATHS))       pkgincflags=;;                          \
+                               *)                      pkgincflags='-I$${pkgincludedir} ';;    \
+                       esac;                                                                   \
+                       case '$(includedir)' in                                                 \
+                               $(BAD_INC_PATHS))       incflags=;;                             \
+                               *)                      incflags='-I$${includedir} ';;          \
+                       esac;                                                                   \
+                       sed -e 's!@'PACKAGE'@!$(PACKAGE)!g;                                     \
+                               s!@'VERSION'@!$(VERSION)!g;                                     \
+                               s!@'prefix'@!$(prefix)!g;                                       \
+                               s!@'exec_prefix'@!$(exec_prefix)!g;                             \
+                               s!@'libdir'@!$(libdir)!g;                                       \
+                               s!@'includedir'@!$(includedir)!g;                               \
+                               s!@'libflags"@!$${libflags}$(pkgconf_LIBFLAGS)!g;"'             \
+                               s!@'incflags"@!$${incflags}$(pkgconf_INCFLAGS)!g;"'             \
+                               s!@'pkgincflags"@!$${pkgincflags}$(pkgconf_PKGINCFLAGS)!g;"'    \
+                               s!@'pkgincludedir'@!$(pkgincludedir)!g'                         \
+                        $< >$@
+                       test -z "$(CHMOD_REFERENCE)" || $(CHMOD_REFERENCE) '$<' '$@'
+                       chmod a-w $@
+
+# if !ENSC_USE_DIETLIBC
+# if !ENSC_USE_GLIBC
+# nodist_lib_nolib_enabled_error_a_SOURCES = \
+#                              lib-nolib-enabled-error.c
+# endif
+# endif
+
+.PHONY:                lib-glibc-not-enabled-error.a \
+               lib-glibc-not-enabled-error.c \
+               lib-dietlibc-not-enabled-error.a \
+               lib-dietlibc-not-enabled-error.c \
+               lib-nolib-enabled-error.a \
+               lib-nolib-enabled-error.c
+
+install-exec-hook install-data-hook:   install-notify-xtra
+
+install-notify-xtra:
+               @echo
+               @echo
+               @echo '***************************'
+               @echo '*'
+               @echo '* NOTE: a plain "make install" installs only the files under $$(prefix)'
+               @echo '*       which might be insufficient. To complete the installation,'
+               @echo '*       "make install-distribution" should be executed. See README,'
+               @echo '*       "Notes for distributors" for details.'
+               @echo '*'
+               @echo '***************************'
+               @echo
+               @echo
+
+.PHONY:                        install-notify-xtra
+
+.PHONY:                FORCE update-doc
 # 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/NEWS b/NEWS
index c16d0cb..4b844e3 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,164 +1,7 @@
-Version 0.30
-============
+version 0.30.208
+================
 
-       - BUGFIX: vlimit: fixed communication with kernel so that it
-         should work now. Output of this tools has been enhanced too.
-
-       - BUGFIX: fixed off-by-one error when setting ipv4root; now the
-         full 16 IPs can be specified instead of 15 formerly
-
-       - added better detection for the syscall number; this can solve
-         problems on non-ix86 architectures where __NR_vserver is not 273
-
-       - BUGFIX/ENHANCEMENTS: the CLI interface of 'reducecap' was fixed
-         significantly: now it is possible to remove capabilities like
-         CHOWN'. Formerly, only privileged caps like SYS_* or *_ADMIN
-         could be removed because of a coding error. Changes in the
-         related code are making it possible that both '--CAP_XXX' and
-         '--XXX' syntax will be recognized (based on patches and reports
-         by Bodo Eggert).
-
-       - cleaned up the documentation and removed unused files
-
-       - "minimum" installation method: added fc1 target, fixed the rh9
-         filelist and use '-HS' in the sample.conf (reported by Arne
-         Blankerts)
-
-       - 'distrib-info' knows now how to deal with Debian; vunify &
-         related tools should now work there (patch provided by Matthew
-         Lavy)
-
-       - init-scripts are now a little bit more Debian compliantly
-         (Savannah patch #2633; provided by Noèl Köthe)
-
-       
-Version 0.29
-============
-
-       - further compilation fixes
-
-       - adapted the 'vserver ... build' command to the new barrier
-         mechanism
-
-       
-
-Version 0.28
-============
-       
-       - BUGFIX: fixed context creation when both fakeinit-flag and a
-         static context is wanted; previous versions ignored the fakeinit
-         flag in this situation
-
-       - BUGFIX: vserver-copy: autodetect mktemp/tempfile (reported by
-         DUCLOS Andre)
-
-       - FEATURE: allow to override start/stop commands of vservers
-         (patch by Erik Smit)
-
-       - BUGFIX: call 'chkconfig' to fix initscripts *after* generating
-         the configuration (reported by DUCLOS Andre)
-
-       - call programs with 'exec' on vserver's 'suexec' command (patch
-         by Alec Thomas)
-
-       - improved e2fsprogs header detection
-
-       - API-CHANGE: removed argument from vc_get_version() since the
-         only supported category is VC_CAT_COMPAT
-
-       
-Version 0.27
-============
-
-       - added new 'vkill' implementation which uses the syscall from
-         vserver 1.1.6+.
-       
-       - BUGFIX: fixed typo in vc_get_version() wrapper which caused an
-         infinite recursive call of this function; this should not have
-         affected any userspace program
-
-       - BUGFIX: 'vps' accepts multiple arguments now (from Debian patch)
-
-       - vc_ctx_kill() was added
-       
-       - chrootsafe() code was removed since such a functionality seems
-         to be impossible
-
-       - use 'vserver' instead of 'virtual_context' as the syscall name;
-         this will fix problems with architectures where the syscall is not
-         at #273.
-
-       - BUGFIX: fixed '--enable-apis' ./configure option; formerly, only
-         'ALL' or none were possible
-
-       - moved some old, unused programs/scripts into a seperate 'legacy'/
-         directory
-
-       - BUGFIX: /dev/pts will be mounted with correct options now
-
-       - added support for Slackware's init-method (thanks to Stephen
-         Pearce for the patch)
-
-       - API-CHANGE: followed kernel patches and renamed 'ctx_t' datatype
-         to 'xid_t'.
-
-
-Version 0.26
-============
-
-       - BUGFIX: uninitialized variables in 'ifspec' were fixed and
-         error-messages will be given out when ioctl() on the requested
-         interface fails (thanks to Herbert Poetzl)
-       
-       - BUGFIX: fixed vc_get_rlimit_mask() to return the queried
-         values. This step was missing in 0.25 which returned the
-         error-code only.
-       
-       - use the shipped 'virtual.h' header on default instead of the
-         kernel version. The old Behavior can be restored with the
-         '--disable-internal-headers' ./configure option
-       
-
-Version 0.25
-============
-
-       - BUGFIX: this version fixes handling of ctx >= 32768
-
-       - experimental support for new resource-limit syscall was add
-         (vserver >= 1.1.3); the new 'vlimit' tool replaces 'setctxlimit'
-
-       - some man-pages were added and init-scripts improved (taken from
-         Debian patches provided by Sam Vilain)
-
-       - basic Gentoo support was added to the 'vserver' script (thanks to
-         "Allen D. Parker II")
-
-       - compilation fixes for kernel 2.6 headers
-
-       - set mode/owner of /var/run/utmp (owner is customizable through
-         $UTMP_GROUP)
-
-       
-Version 0.24
-============
-
-       - updated to new syscall API (patch c17h and later)
-       
-       - revived copy-all-mode for 'vserver ... build' (can be disabled
-         with $UTIL_VSERVER_AVOID_COPY)
-
-       - use '-HS' ulimit switch for newly created vservers
-
-       - added QUOTACTL capability, removed OPENDEV capability
-
-       - location of vservers-rootdir can now be configured through a
-         '--with-vrootdir' configure switch; it defaults still to
-         '/vservers'
-
-       - build of 'newvserver' linuxconf-module is conditionalized since
-         it is unsupported and will be dropped in future versions. To
-         enable it. call './configure' with '--enable-linuxconf'.
+       - large revamping...
        
        
 version 0.23.6
diff --git a/README b/README
index 86b6e1d..7733231 100644 (file)
--- a/README
+++ b/README
-Build-Requirements:
+Some common notes/FAQs:
+======================
 
-    * at least gcc-2.95 (C and C++ frontends)
+* when vserver startup/shutdown fails, or when you get
 
-    * when using 2.6 kernel-headers, the 'e2fsprogs' headers are
-      required. RHL/Fedora Core ships them in the 'e2fsprogs-devel'
-      package, Mandrake in 'libext2fs2-devel'.
+  | Error: /proc must be mounted
 
-      Using these headers with kernel 2.4 will not hurt and can prevent
-      problems, so they are strongly recommended.
+  errors, make sure, that 'vprocunhide' was executed. When installing
+  'util-vserver' with packagemanagement, an appropriate initscript
+  should be installed
+
+* the name of old-style vservers is shown on 2.4 kernels only; the
+  needed functionality is not implemented for 2.6 kernels.
+
+
+
+Some distribution specific notes:
+=================================
+
+Red Hat 7.3, Red Hat 9, Fedora Core 1&2
+---------------------------------------
+* tested and running successfully as host and guest systems
+
+* it is *strongly* suggested to use the rpm packages which can be
+  created from the tarball with
+
+  | $ rpmbuild -tb util-vserver-<version>.tar.bz2
+
+  For distributions below Fedora Core 2, additional
+
+  | --without dietlibc --without xalan
+
+  flags are required for the 'rpmbuild' command. Builds on Red Hat 7.3
+  will require a
+
+  | --nodeps
+
+  also, since 'vconfig' is not available there. Since it is required
+  for path-detection only and paths from RH systems will be assumed by
+  default, this should not be a big problem.
+
+* guest systems can be created with the 'apt-rpm' or 'yum' build-methods.
+  The first one requires the 'apt' package e.g. from http://fedora.us and
+  the configuration of a near mirror in
+
+  | /etc/vservers/.distributions/<id>/apt/sources.list
+
+  (To avoid slashdotting by the masses of util-vserver-users, there
+  does not exist a standard mirror).
+
+  The 'yum' method uses the repository configuration shipped by the
+  fedora-release package.
+
+* RH/FC uses the 'sysv' initstyle which is assumed by default
+
+* when having existing vservers with RH 9 or Fedora Core 1, the startup
+  of the vserver will probably fail. You will have to add
+
+  | true
+
+  to etc/rc.d/rc (within the vserver root directory)
+
+* when having RH/FC guestsystems, it is *strongly* recommended to use
+  a dietlibc linked version of 'rpm-fake-resolver'. Else, package
+  installation with 'vrpm', 'vapt-get' or 'vyum' can fail since users
+  can not be resolved.
+
+
+
+Debian Woody & Sarge
+--------------------
+* tested and running successfully as guest systems on FC1/FC2 hosts
+
+* guest systems can be created with the 'debootstrap' method. When
+  not already existing, the needed package will be downloaded
+  automatically.  Since it is updated very often, it can happen
+  that a '404 Not found' error occurs; in this case look either
+  for a newer util-vserver package, or configure the new URI e.g. with
+
+  | echo 'http://ftp.debian.org/debian/pool/main/d/debootstrap/debootstrap_<version>_i386.deb' \
+  |    >/etc/vservers/.defaults/apps/debootstrap/uri
+
+  You can download a local copy of this tarball also, and register it
+  with
+
+  | echo '/<path-to-the-tarball>' \
+  |    >/etc/vservers/.defaults/apps/debootstrap/uri
+
+* it is known, that warning messages will be created at startup and
+  shutdown of guest servers. This is non fatal and can be ignored
+
+* Debian guest systems are running fine with the 'sysv' initstyle;
+  success with 'plain' was reported also
+
+* no packages for Debian hosts are known at time of writing (May 2004)
+
+
+
+Gentoo
+------
+* Gentoo guest systems are very complicated and are requiring lots of
+  modifications in the initscripts. Currently, no step-by-step guide
+  can be provided
+
+* 'sysv' initstyle is probably not working for Gentoo guests (e.g. you
+  will see messages about missing 'utmp' files); 'gentoo' should be
+  used instead of:
+
+  | echo 'gentoo' >/etc/vservers/<id>/apps/init/style
+
+* there does not exist a build-method for Gentoo guests; instead of,
+  create a skeleton with
+
+  | # vserver <id> build -m skeleton --initstyle gentoo <other-opts>*
+
+  and fill the vserver directory at /etc/vservers/<id>/vdir/ manually.
+
+
+
+Notes for distributors:
+=======================
+
+To generate FHS compliant paths, call configure with
+
+| ./configure --prefix=/usr --mandir=/usr/share/man \
+|             --sysconfdir=/etc --localstatedir=/var \
+|             --with-vrootdir=<an FHS compliant path for /vservers>
+
+Except the '--with-vrootdir' option, rpm's '%configure' option will
+expand to this.
+
+
+There exists a 'make install-distribution' target which installs
+files outside of the configured 'prefix'. In particular, these files are:
+
+* the /sbin/vshelper symlink
+* the /vservers and related directories (or whatever you configured
+  with '--with-vrootdir')
+
+Without this rule, 'make distcheck' would fail.
+
+
+It might be needed also, to call 'setattr --barrier /vservers' in an
+after-installation script.
+
+
+
+Which version shall I use?
+==========================
+
+As you probably know, two branches of 'util-vserver' are existing: the
+'stable' one, and the 'alpha' one. This terms are to be understood as
+a level of the featureset stability but not of the software stability.
+
+E.g. 'stable' is not really stable: it has huge security problems and
+missing functionality. But you can expect that the current configuration
+will work in future versions also. This version is untested on author's
+side and it will be hard to bring patches/fixes in, since it must be
+proofed that they will not break anything.
+
+In the opposite, the 'alpha' branch does not have known security issues
+and works well (at least on author's system ;)).  But it may happen
+that some behavior or configuration options change.
+
+With 'alpha' you should be still able to use vservers created with the
+'stable' branch, but you may encounter some oddities -- especially on
+kernel 2.6 systems (e.g. 'vserver-stat' will not show the names of old
+vservers).
+
+
+So let me summarize:
+
+* when you have productive vservers running for some years already, stay
+  at the 'stable' branch. A change to 'alpha' will need a completely
+  rewritten configuration which must be perhaps changed again.
+
+* when you are new at vservers, use the 'alpha' branch. You will have
+  to learn the principles of vserver configuration for both branches
+  but 'alpha' makes some things easier.
+
+* when you have existing vservers and want all the new kernel 2.6
+  functionality, use the 'alpha' branch.
+
+
+A last note: the 'alpha' branch works both with the stable 2.4 and the
+development 2.6 kernel patch.
+
+
+
+## $Id: README,v 1.7 2005/01/27 19:07:05 ensc Exp $
diff --git a/REQUIREMENTS b/REQUIREMENTS
new file mode 100644 (file)
index 0000000..4796318
--- /dev/null
@@ -0,0 +1,10 @@
+Build requirements:
+* iproute/iproute2
+* iptables
+* vconfig/vlan (see http://www.candelatech.com/~greear/vlan.html)
+* wget
+
+Recommended build environment:
+* gcc >= 3
+* beecrypt-devel
+* dietlibc >= 0.25
diff --git a/THANKS b/THANKS
index 707403f..a4232db 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -7,5 +7,8 @@ Jacques Gelinas <jack@solucorp.qc.ca>,
 Sam Vilain,
     for providing man-pages and patches used in the Debian package
 
+Olivier Poitrey
+    for his work on the XML/XSD based documentation format
+
 
 all the other people, who contributed to the original 'vserver' package
index c34e705..0b97cfa 100644 (file)
@@ -1,7 +1,7 @@
-# generated automatically by aclocal 1.8.4 -*- Autoconf -*-
+# generated automatically by aclocal 1.9.5 -*- Autoconf -*-
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
-# Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 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.
@@ -123,7 +123,7 @@ esac
 
 # Sed substitution that helps us do robust quoting.  It backslashifies
 # metacharacters that are still active within double-quoted strings.
-Xsed='sed -e s/^X//'
+Xsed='sed -e 1s/^X//'
 [sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g']
 
 # Same as above, but do not quote variable references.
@@ -191,6 +191,8 @@ if test -n "$RANLIB"; then
   old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
 fi
 
+_LT_CC_BASENAME([$compiler])
+
 # Only perform the check for file, if the check method requires it
 case $deplibs_check_method in
 file_magic*)
@@ -236,6 +238,48 @@ compiler=$CC
 ])# _LT_AC_SYS_COMPILER
 
 
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+AC_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_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+AC_DEFUN([_LT_COMPILER_BOILERPLATE],
+[ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/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.
+AC_DEFUN([_LT_LINKER_BOILERPLATE],
+[ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+])# _LT_LINKER_BOILERPLATE
+
+
 # _LT_AC_SYS_LIBPATH_AIX
 # ----------------------
 # Links a minimal program and checks the executable
@@ -308,7 +352,7 @@ fi
 
 # The HP-UX ksh and POSIX shell print the target directory to stdout
 # if CDPATH is set.
-if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
 if test -z "$ECHO"; then
 if test "X${echo_test_string+set}" != Xset; then
@@ -577,8 +621,10 @@ AC_CACHE_CHECK([$1], [$2],
    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
-     if test ! -s conftest.err; then
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+     $SED '/^$/d' conftest.err >conftest.er2
+     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
        $2=yes
      fi
    fi
@@ -609,6 +655,11 @@ AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
      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 > conftest.exp
+       $SED '/^$/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         $2=yes
+       fi
      else
        $2=yes
      fi
@@ -667,11 +718,38 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
     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 *BSD
+    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`
+    ;;
+  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
+    ;;
+  *)
     # 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"`$CONFIG_SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
+    SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+    while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
               = "XX$teststring") >/dev/null 2>&1 &&
            new_result=`expr "X$teststring" : ".*" 2>&1` &&
            lt_cv_sys_max_cmd_len=$new_result &&
@@ -937,7 +1015,9 @@ AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
    then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings
-     if test ! -s out/conftest.err; then
+     $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
+     $SED '/^$/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
        _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
      fi
    fi
@@ -1005,8 +1085,8 @@ AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH],
 [AC_MSG_CHECKING([how to hardcode library paths into programs])
 _LT_AC_TAGVAR(hardcode_action, $1)=
 if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \
-   test -n "$_LT_AC_TAGVAR(runpath_var $1)" || \
-   test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)"="Xyes" ; then
+   test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \
+   test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
 
   # We can hardcode non-existant directories.
   if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no &&
@@ -1173,7 +1253,7 @@ beos*)
   shlibpath_var=LIBRARY_PATH
   ;;
 
-bsdi4*)
+bsdi[[45]]*)
   version_type=linux
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -1231,7 +1311,7 @@ cygwin* | mingw* | pw32*)
       ;;
     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}'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
       ;;
     esac
     ;;
@@ -1289,7 +1369,9 @@ kfreebsd*-gnu)
   dynamic_linker='GNU ld.so'
   ;;
 
-freebsd*)
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
   objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
   version_type=freebsd-$objformat
   case $version_type in
@@ -1308,7 +1390,7 @@ freebsd*)
   freebsd2*)
     shlibpath_overrides_runpath=yes
     ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
+  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
     shlibpath_overrides_runpath=yes
     hardcode_into_libs=yes
     ;;
@@ -1451,7 +1533,7 @@ linux*)
 
   # Append ld.so.conf contents to the search path
   if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`$SED -e 's/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g' /etc/ld.so.conf | tr '\n' ' '`
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
     sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
   fi
 
@@ -1514,7 +1596,7 @@ nto-qnx*)
 openbsd*)
   version_type=sunos
   need_lib_prefix=no
-  need_version=yes
+  need_version=no
   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
@@ -1680,7 +1762,9 @@ if test -f "$ltmain" && test -n "$tagnames"; then
 
       case $tagname in
       CXX)
-       if test -n "$CXX" && test "X$CXX" != "Xno"; then
+       if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+           ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+           (test "X$CXX" != "Xg++"))) ; then
          AC_LIBTOOL_LANG_CXX_CONFIG
        else
          tagname=""
@@ -2085,6 +2169,15 @@ case $reload_flag in
 *) reload_flag=" $reload_flag" ;;
 esac
 reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
 ])# AC_PROG_LD_RELOAD_FLAG
 
 
@@ -2118,7 +2211,7 @@ beos*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-bsdi4*)
+bsdi[[45]]*)
   lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
   lt_cv_file_magic_cmd='/usr/bin/file -L'
   lt_cv_file_magic_test_file=/shlib/libc.so
@@ -2141,13 +2234,13 @@ darwin* | rhapsody*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-freebsd* | kfreebsd*-gnu)
+freebsd* | kfreebsd*-gnu | dragonfly*)
   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
     case $host_cpu in
     i*86 )
       # Not sure whether the presence of OpenBSD here was a mistake.
       # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library'
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
       lt_cv_file_magic_cmd=/usr/bin/file
       lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
       ;;
@@ -2191,15 +2284,6 @@ irix5* | irix6* | nonstopux*)
 
 # This must be Linux ELF.
 linux*)
-  case $host_cpu in
-  alpha*|hppa*|i*86|ia64*|m68*|mips*|powerpc*|sparc*|s390*|sh*|x86_64*)
-    lt_cv_deplibs_check_method=pass_all ;;
-  *)
-    # glibc up to 2.1.1 does not perform some relocations on ARM
-    # this will be overridden with pass_all, but let us keep it just in case
-    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;;
-  esac
-  lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
   lt_cv_deplibs_check_method=pass_all
   ;;
 
@@ -2222,12 +2306,10 @@ nto-qnx*)
   ;;
 
 openbsd*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
   if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object'
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
   else
-    lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
   fi
   ;;
 
@@ -2417,10 +2499,21 @@ AC_DEFUN([AC_LIBTOOL_CXX],
 # ---------------
 AC_DEFUN([_LT_AC_LANG_CXX],
 [AC_REQUIRE([AC_PROG_CXX])
-AC_REQUIRE([AC_PROG_CXXCPP])
+AC_REQUIRE([_LT_AC_PROG_CXXCPP])
 _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX])
 ])# _LT_AC_LANG_CXX
 
+# _LT_AC_PROG_CXXCPP
+# ---------------
+AC_DEFUN([_LT_AC_PROG_CXXCPP],
+[
+AC_REQUIRE([AC_PROG_CXX])
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+    (test "X$CXX" != "Xg++"))) ; then
+  AC_PROG_CXXCPP
+fi
+])# _LT_AC_PROG_CXXCPP
 
 # AC_LIBTOOL_F77
 # --------------
@@ -2493,6 +2586,10 @@ lt_simple_link_test_code='int main(){return(0);}\n'
 
 _LT_AC_SYS_COMPILER
 
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
 #
 # Check for any special shared library compilation flags.
 #
@@ -2555,43 +2652,6 @@ aix3*)
 aix4* | aix5*)
   if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
     test "$enable_shared" = yes && enable_static=no
-  fi
-  ;;
-  darwin* | rhapsody*)
-  if test "$GCC" = yes; then
-    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-    case "$host_os" in
-    rhapsody* | darwin1.[[012]])
-      _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
-      ;;
-    *) # Darwin 1.3 on
-      if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
-       _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
-      else
-        case ${MACOSX_DEPLOYMENT_TARGET} in
-          10.[[012]])
-            _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
-            ;;
-          10.*)
-            _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup'
-            ;;
-        esac
-      fi
-      ;;
-    esac
-    output_verbose_link_cmd='echo'
-    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring'
-    _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-    # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
-    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag  -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-    _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-    _LT_AC_TAGVAR(hardcode_direct, $1)=no
-    _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
-    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-    _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
-    _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-  else
-    _LT_AC_TAGVAR(ld_shlibs, $1)=no
   fi
     ;;
 esac
@@ -2618,7 +2678,7 @@ AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)])
 AC_DEFUN([_LT_AC_LANG_CXX_CONFIG],
 [AC_LANG_PUSH(C++)
 AC_REQUIRE([AC_PROG_CXX])
-AC_REQUIRE([AC_PROG_CXXCPP])
+AC_REQUIRE([_LT_AC_PROG_CXXCPP])
 
 _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
 _LT_AC_TAGVAR(allow_undefined_flag, $1)=
@@ -2662,6 +2722,10 @@ lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
 # ltmain only uses $CC for tagged configurations so make sure $CC is set.
 _LT_AC_SYS_COMPILER
 
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
 # Allow CC to be a program name with arguments.
 lt_save_CC=$CC
 lt_save_LD=$LD
@@ -2683,7 +2747,7 @@ test -z "${LDCXX+set}" || LD=$LDCXX
 CC=${CXX-"c++"}
 compiler=$CC
 _LT_AC_TAGVAR(compiler, $1)=$CC
-cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+_LT_CC_BASENAME([$compiler])
 
 # We don't want -fno-exception wen compiling C++ code, so set the
 # no_builtin_flag separately
@@ -2790,7 +2854,7 @@ case $host_os in
     _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
 
     if test "$GXX" = yes; then
-      case $host_os in aix4.[012]|aix4.[012].*)
+      case $host_os in aix4.[[012]]|aix4.[[012]].*)
       # We only want to do this on AIX 4.2 and lower, the check
       # below for broken collect2 doesn't work under 4.3+
        collect2name=`${CC} -print-prog-name=collect2`
@@ -2811,6 +2875,9 @@ case $host_os in
        fi
       esac
       shared_flag='-shared'
+      if test "$aix_use_runtimelinking" = yes; then
+       shared_flag="$shared_flag "'${wl}-G'
+      fi
     else
       # not using gcc
       if test "$host_cpu" = ia64; then
@@ -2870,6 +2937,7 @@ case $host_os in
     esac
     ;;
 
+
   cygwin* | mingw* | pw32*)
     # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
     # as there is no search path for DLLs.
@@ -2893,65 +2961,76 @@ case $host_os in
       _LT_AC_TAGVAR(ld_shlibs, $1)=no
     fi
   ;;
+      darwin* | rhapsody*)
+        case "$host_os" in
+        rhapsody* | darwin1.[[012]])
+         _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[[012]])
+               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+        esac
+      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
 
-  darwin* | rhapsody*)
-  if test "$GXX" = yes; then
-    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-    case "$host_os" in
-    rhapsody* | darwin1.[[012]])
-      _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
-      ;;
-    *) # Darwin 1.3 on
-      if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
-       _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
+    if test "$GXX" = yes ; then
+      lt_int_apple_cc_single_mod=no
+      output_verbose_link_cmd='echo'
+      if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+       lt_int_apple_cc_single_mod=yes
+      fi
+      if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
       else
-        case ${MACOSX_DEPLOYMENT_TARGET} in
-          10.[[012]])
-            _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
-            ;;
-          10.*)
-            _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup'
-            ;;
-        esac
+          _LT_AC_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'
+        fi
+        _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+        # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+          if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+            _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          else
+            _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "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~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          fi
+            _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+          _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+          _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+          _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         _LT_AC_TAGVAR(ld_shlibs, $1)=no
+          ;;
+      esac
       fi
-      ;;
-    esac
-    lt_int_apple_cc_single_mod=no
-    output_verbose_link_cmd='echo'
-    if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
-      lt_int_apple_cc_single_mod=yes
-    fi
-    if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
-      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-    else
-      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -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'
-    fi
-    _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-
-    # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
-    if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
-      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-    else
-      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-    fi
-    _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-    _LT_AC_TAGVAR(hardcode_direct, $1)=no
-    _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
-    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-    _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
-    _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-  else
-    _LT_AC_TAGVAR(ld_shlibs, $1)=no
-  fi
-    ;;
+        ;;
 
   dgux*)
     case $cc_basename in
-      ec++)
+      ec++*)
        # FIXME: insert proper C++ library support
        _LT_AC_TAGVAR(ld_shlibs, $1)=no
        ;;
-      ghcx)
+      ghcx*)
        # Green Hills C++ Compiler
        # FIXME: insert proper C++ library support
        _LT_AC_TAGVAR(ld_shlibs, $1)=no
@@ -2962,14 +3041,14 @@ case $host_os in
        ;;
     esac
     ;;
-  freebsd[12]*)
+  freebsd[[12]]*)
     # C++ shared libraries reported to be fairly broken before switch to ELF
     _LT_AC_TAGVAR(ld_shlibs, $1)=no
     ;;
   freebsd-elf*)
     _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
     ;;
-  freebsd* | kfreebsd*-gnu)
+  freebsd* | kfreebsd*-gnu | dragonfly*)
     # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
     # conventions
     _LT_AC_TAGVAR(ld_shlibs, $1)=yes
@@ -2986,11 +3065,11 @@ case $host_os in
                                # location of the library.
 
     case $cc_basename in
-    CC)
+    CC*)
       # FIXME: insert proper C++ library support
       _LT_AC_TAGVAR(ld_shlibs, $1)=no
       ;;
-    aCC)
+    aCC*)
       _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
       # Commands to make compiler produce verbose output that lists
       # what "hidden" libraries, object files and flags are used when
@@ -3000,7 +3079,7 @@ case $host_os in
       # explicitly linking system object files so we need to strip them
       # from the output so that they don't get included in the library
       # dependencies.
-      output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+      output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
       ;;
     *)
       if test "$GXX" = yes; then
@@ -3051,11 +3130,11 @@ case $host_os in
     esac
 
     case $cc_basename in
-      CC)
+      CC*)
        # FIXME: insert proper C++ library support
        _LT_AC_TAGVAR(ld_shlibs, $1)=no
        ;;
-      aCC)
+      aCC*)
        case "$host_cpu" in
        hppa*64*|ia64*)
          _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
@@ -3095,9 +3174,9 @@ case $host_os in
     ;;
   irix5* | irix6*)
     case $cc_basename in
-      CC)
+      CC*)
        # SGI C++
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
 
        # Archives containing C++ object files must be created using
        # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
@@ -3108,7 +3187,7 @@ case $host_os in
       *)
        if test "$GXX" = yes; then
          if test "$with_gnu_ld" = no; then
-           _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+           _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
          else
            _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
          fi
@@ -3121,7 +3200,7 @@ case $host_os in
     ;;
   linux*)
     case $cc_basename in
-      KCC)
+      KCC*)
        # Kuck and Associates, Inc. (KAI) C++ Compiler
 
        # KCC will only create a shared library if the output file
@@ -3146,17 +3225,41 @@ case $host_os in
        # "CC -Bstatic", where "CC" is the KAI C++ compiler.
        _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
        ;;
-      icpc)
+      icpc*)
        # Intel C++
        with_gnu_ld=yes
+       # version 8.0 and above of icpc choke on multiply defined symbols
+       # if we add $predep_objects and $postdep_objects, however 7.1 and
+       # earlier do not add the objects themselves.
+       case `$CC -V 2>&1` in
+       *"Version 7."*)
+         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+         _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+         ;;
+       *)  # Version 8.0 or newer
+         tmp_idyn=
+         case $host_cpu in
+           ia64*) tmp_idyn=' -i_dynamic';;
+         esac
+         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+         _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+         ;;
+       esac
        _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
        _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
        _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
        _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
        ;;
-      cxx)
+      pgCC*)
+        # Portland Group C++ compiler
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+
+       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+       _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+       _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+        ;;
+      cxx*)
        # Compaq C++
        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
        _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
@@ -3187,7 +3290,7 @@ case $host_os in
     ;;
   mvs*)
     case $cc_basename in
-      cxx)
+      cxx*)
        # FIXME: insert proper C++ library support
        _LT_AC_TAGVAR(ld_shlibs, $1)=no
        ;;
@@ -3208,9 +3311,25 @@ case $host_os in
     # Workaround some broken pre-1.5 toolchains
     output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
     ;;
+  openbsd2*)
+    # C++ shared libraries are fairly broken
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  openbsd*)
+    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+    if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    fi
+    output_verbose_link_cmd='echo'
+    ;;
   osf3*)
     case $cc_basename in
-      KCC)
+      KCC*)
        # Kuck and Associates, Inc. (KAI) C++ Compiler
 
        # KCC will only create a shared library if the output file
@@ -3226,14 +3345,14 @@ case $host_os in
        _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
 
        ;;
-      RCC)
+      RCC*)
        # Rational C++ 2.4.1
        # FIXME: insert proper C++ library support
        _LT_AC_TAGVAR(ld_shlibs, $1)=no
        ;;
-      cxx)
+      cxx*)
        _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
 
        _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
        _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
@@ -3251,7 +3370,7 @@ case $host_os in
       *)
        if test "$GXX" = yes && test "$with_gnu_ld" = no; then
          _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
 
          _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
          _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
@@ -3270,7 +3389,7 @@ case $host_os in
     ;;
   osf4* | osf5*)
     case $cc_basename in
-      KCC)
+      KCC*)
        # Kuck and Associates, Inc. (KAI) C++ Compiler
 
        # KCC will only create a shared library if the output file
@@ -3285,17 +3404,17 @@ case $host_os in
        # the KAI C++ compiler.
        _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs'
        ;;
-      RCC)
+      RCC*)
        # Rational C++ 2.4.1
        # FIXME: insert proper C++ library support
        _LT_AC_TAGVAR(ld_shlibs, $1)=no
        ;;
-      cxx)
+      cxx*)
        _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
        _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
          echo "-hidden">> $lib.exp~
-         $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp  `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~
+         $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp  `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~
          $rm $lib.exp'
 
        _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
@@ -3314,7 +3433,7 @@ case $host_os in
       *)
        if test "$GXX" = yes && test "$with_gnu_ld" = no; then
          _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
 
          _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
          _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
@@ -3338,7 +3457,7 @@ case $host_os in
   sco*)
     _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
     case $cc_basename in
-      CC)
+      CC*)
        # FIXME: insert proper C++ library support
        _LT_AC_TAGVAR(ld_shlibs, $1)=no
        ;;
@@ -3350,12 +3469,12 @@ case $host_os in
     ;;
   sunos4*)
     case $cc_basename in
-      CC)
+      CC*)
        # Sun C++ 4.x
        # FIXME: insert proper C++ library support
        _LT_AC_TAGVAR(ld_shlibs, $1)=no
        ;;
-      lcc)
+      lcc*)
        # Lucid
        # FIXME: insert proper C++ library support
        _LT_AC_TAGVAR(ld_shlibs, $1)=no
@@ -3368,7 +3487,7 @@ case $host_os in
     ;;
   solaris*)
     case $cc_basename in
-      CC)
+      CC*)
        # Sun C++ 4.2, 5.x and Centerline C++
        _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
@@ -3378,13 +3497,17 @@ case $host_os in
        _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
        _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
        case $host_os in
-         solaris2.[0-5] | solaris2.[0-5].*) ;;
+         solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
          *)
            # The C++ compiler is used as linker so we must use $wl
            # flag to pass the commands to the underlying system
-           # linker.
+           # linker. We must also pass each convience library through
+           # to the system linker between allextract/defaultextract.
+           # The C++ compiler will combine linker options so we
+           # cannot just pass the convience library names through
+           # without $wl.
            # Supported since Solaris 2.6 (maybe 2.5.1?)
-           _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+           _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
            ;;
        esac
        _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
@@ -3405,7 +3528,7 @@ case $host_os in
        # in the archive.
        _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
        ;;
-      gcx)
+      gcx*)
        # Green Hills C++ Compiler
        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
 
@@ -3448,7 +3571,7 @@ case $host_os in
     ;;
   tandem*)
     case $cc_basename in
-      NCC)
+      NCC*)
        # NonStop-UX NCC 3.20
        # FIXME: insert proper C++ library support
        _LT_AC_TAGVAR(ld_shlibs, $1)=no
@@ -3680,12 +3803,16 @@ lt_simple_link_test_code="      program t\n      end\n"
 # ltmain only uses $CC for tagged configurations so make sure $CC is set.
 _LT_AC_SYS_COMPILER
 
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
 # Allow CC to be a program name with arguments.
 lt_save_CC="$CC"
 CC=${F77-"f77"}
 compiler=$CC
 _LT_AC_TAGVAR(compiler, $1)=$CC
-cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+_LT_CC_BASENAME([$compiler])
 
 AC_MSG_CHECKING([if libtool supports shared libraries])
 AC_MSG_RESULT([$can_build_shared])
@@ -3704,7 +3831,9 @@ aix3*)
   fi
   ;;
 aix4* | aix5*)
-  test "$enable_shared" = yes && enable_static=no
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
   ;;
 esac
 AC_MSG_RESULT([$enable_shared])
@@ -3755,20 +3884,27 @@ _LT_AC_TAGVAR(objext, $1)=$objext
 lt_simple_compile_test_code="class foo {}\n"
 
 # Code to be used in simple link tests
-lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }\n'
 
 # ltmain only uses $CC for tagged configurations so make sure $CC is set.
 _LT_AC_SYS_COMPILER
 
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
 # Allow CC to be a program name with arguments.
 lt_save_CC="$CC"
 CC=${GCJ-"gcj"}
 compiler=$CC
 _LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
 
 # GCJ did not exist at the time GCC didn't implicitly link libc in.
 _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
 
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+
 AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
 AC_LIBTOOL_PROG_COMPILER_PIC($1)
 AC_LIBTOOL_PROG_CC_C_O($1)
@@ -3811,11 +3947,16 @@ lt_simple_link_test_code="$lt_simple_compile_test_code"
 # ltmain only uses $CC for tagged configurations so make sure $CC is set.
 _LT_AC_SYS_COMPILER
 
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
 # Allow CC to be a program name with arguments.
 lt_save_CC="$CC"
 CC=${RC-"windres"}
 compiler=$CC
 _LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
 _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
 
 AC_LIBTOOL_CONFIG($1)
@@ -3951,7 +4092,7 @@ ifelse([$1], [],
 #
 # 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.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -3962,11 +4103,11 @@ ifelse([$1], [],
 SED=$lt_SED
 
 # Sed that helps us avoid accidentally triggering echo(1) options like -n.
-Xsed="$SED -e s/^X//"
+Xsed="$SED -e 1s/^X//"
 
 # The HP-UX ksh and POSIX shell print the target directory to stdout
 # if CDPATH is set.
-if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
 # The names of the tagged configurations supported by this script.
 available_tags=
@@ -3997,6 +4138,12 @@ fast_install=$enable_fast_install
 # The host system.
 host_alias=$host_alias
 host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
 
 # An echo program that does not interpret backslashes.
 echo=$lt_echo
@@ -4073,7 +4220,7 @@ max_cmd_len=$lt_cv_sys_max_cmd_len
 # Does compiler simultaneously support -c and -o options?
 compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)
 
-# Must we lock files when doing compilation ?
+# Must we lock files when doing compilation?
 need_locks=$lt_need_locks
 
 # Do we need the lib prefix for modules?
@@ -4347,9 +4494,6 @@ symcode='[[BCDEGRST]]'
 # Regexp to match symbols that can be accessed directly from C.
 sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
 
-# Transform the above into a raw symbol and a C symbol.
-symxfrm='\1 \2\3 \3'
-
 # Transform an extracted symbol line into a proper C declaration
 lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
 
@@ -4371,6 +4515,13 @@ hpux*) # Its linker distinguishes data from code symbols
   lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
   lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
   ;;
+linux*)
+  if test "$host_cpu" = ia64; then
+    symcode='[[ABCDGIRSTW]]'
+    lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+    lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  fi
+  ;;
 irix* | nonstopux*)
   symcode='[[BCDEGRST]]'
   ;;
@@ -4402,8 +4553,11 @@ esac
 # Try without a prefix undercore, then with it.
 for ac_symprfx in "" "_"; do
 
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
   # Write the raw and C identifiers.
-  lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[     ]]\($symcode$symcode*\)[[       ]][[    ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
+  lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[     ]]\($symcode$symcode*\)[[       ]][[    ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
 
   # Check to see that the pipe works correctly.
   pipe_works=no
@@ -4592,18 +4746,28 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
        ;;
       chorus*)
        case $cc_basename in
-       cxch68)
+       cxch68*)
          # Green Hills C++ Compiler
          # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
          ;;
        esac
        ;;
+       darwin*)
+         # PIC is the default on this platform
+         # Common symbols not allowed in MH_DYLIB files
+         case $cc_basename in
+           xlc*)
+           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+           _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           ;;
+         esac
+       ;;
       dgux*)
        case $cc_basename in
-         ec++)
+         ec++*)
            _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
            ;;
-         ghcx)
+         ghcx*)
            # Green Hills C++ Compiler
            _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
            ;;
@@ -4611,19 +4775,19 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
            ;;
        esac
        ;;
-      freebsd* | kfreebsd*-gnu)
+      freebsd* | kfreebsd*-gnu | dragonfly*)
        # FreeBSD uses GNU C++
        ;;
       hpux9* | hpux10* | hpux11*)
        case $cc_basename in
-         CC)
+         CC*)
            _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
            _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
            if test "$host_cpu" != ia64; then
              _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
            fi
            ;;
-         aCC)
+         aCC*)
            _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
            _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
            case "$host_cpu" in
@@ -4641,7 +4805,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
        ;;
       irix5* | irix6* | nonstopux*)
        case $cc_basename in
-         CC)
+         CC*)
            _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
            _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
            # CC pic flag -KPIC is the default.
@@ -4652,18 +4816,24 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
        ;;
       linux*)
        case $cc_basename in
-         KCC)
+         KCC*)
            # KAI C++ Compiler
            _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
            _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
            ;;
-         icpc)
+         icpc* | ecpc*)
            # Intel C++
            _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
            _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
            _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
            ;;
-         cxx)
+         pgCC*)
+           # Portland Group C++ compiler.
+           _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+           _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+           ;;
+         cxx*)
            # Compaq C++
            # Make sure the PIC flag is empty.  It appears that all Alpha
            # Linux and Compaq Tru64 Unix objects are PIC.
@@ -4680,7 +4850,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
        ;;
       mvs*)
        case $cc_basename in
-         cxx)
+         cxx*)
            _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
            ;;
          *)
@@ -4691,14 +4861,14 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
        ;;
       osf3* | osf4* | osf5*)
        case $cc_basename in
-         KCC)
+         KCC*)
            _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
            ;;
-         RCC)
+         RCC*)
            # Rational C++ 2.4.1
            _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
            ;;
-         cxx)
+         cxx*)
            # Digital/Compaq C++
            _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
            # Make sure the PIC flag is empty.  It appears that all Alpha
@@ -4714,7 +4884,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
        ;;
       sco*)
        case $cc_basename in
-         CC)
+         CC*)
            _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
            ;;
          *)
@@ -4723,13 +4893,13 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
        ;;
       solaris*)
        case $cc_basename in
-         CC)
+         CC*)
            # Sun C++ 4.2, 5.x and Centerline C++
            _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
            _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
            _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
            ;;
-         gcx)
+         gcx*)
            # Green Hills C++ Compiler
            _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
            ;;
@@ -4739,12 +4909,12 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
        ;;
       sunos4*)
        case $cc_basename in
-         CC)
+         CC*)
            # Sun C++ 4.x
            _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
            _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
            ;;
-         lcc)
+         lcc*)
            # Lucid
            _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
            ;;
@@ -4754,7 +4924,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
        ;;
       tandem*)
        case $cc_basename in
-         NCC)
+         NCC*)
            # NonStop-UX NCC 3.20
            _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
            ;;
@@ -4851,6 +5021,16 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
        _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
       fi
       ;;
+      darwin*)
+        # PIC is the default on this platform
+        # Common symbols not allowed in MH_DYLIB files
+       case $cc_basename in
+         xlc*)
+         _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+         _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+         ;;
+       esac
+       ;;
 
     mingw* | pw32* | os2*)
       # This hack is so that the source file can tell whether it is being
@@ -4886,12 +5066,19 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
       ;;
 
     linux*)
-      case $CC in
+      case $cc_basename in
       icc* | ecc*)
        _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
        _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
        _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
         ;;
+      pgcc* | pgf77* | pgf90*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+       # which looks to be a dead project)
+       _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+       _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+       _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+        ;;
       ccc*)
         _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
         # All Alpha code is PIC.
@@ -4912,9 +5099,14 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
       ;;
 
     solaris*)
-      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+       _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+      *)
+       _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+      esac
       ;;
 
     sunos4*)
@@ -4936,6 +5128,11 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
       fi
       ;;
 
+    unicos*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+
     uts4*)
       _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
       _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
@@ -4996,7 +5193,7 @@ ifelse([$1],[CXX],[
     _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
   ;;
   cygwin* | mingw*)
-    _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+    _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
   ;;
   *)
     _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
@@ -5039,7 +5236,8 @@ ifelse([$1],[CXX],[
   # rely on this symbol name, it's probably fine to never include it in
   # preloaded symbol tables.
   extract_expsyms_cmds=
-
+  # Just being paranoid about ensuring that cc_basename is set.
+  _LT_CC_BASENAME([$compiler])
   case $host_os in
   cygwin* | mingw* | pw32*)
     # FIXME: the MSVC++ port hasn't been tested in a loooong time
@@ -5058,7 +5256,28 @@ ifelse([$1],[CXX],[
   if test "$with_gnu_ld" = yes; then
     # If archive_cmds runs LD, not CC, wlarc should be empty
     wlarc='${wl}'
-
+    
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+       _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+       _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>/dev/null` in
+      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+    
     # See if GNU ld supports shared libraries.
     case $host_os in
     aix3* | aix4* | aix5*)
@@ -5109,7 +5328,7 @@ EOF
       _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
       _LT_AC_TAGVAR(always_export_symbols, $1)=no
       _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
 
       if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
@@ -5123,7 +5342,37 @@ EOF
        fi~
        $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
       else
-       ld_shlibs=no
+       _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    linux*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+       tmp_addflag=
+       case $cc_basename,$host_cpu in
+       pgcc*)                          # Portland Group C compiler
+         _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+         ;;
+       pgf77* | pgf90* )                       # Portland Group f77 and f90 compilers
+         _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+         tmp_addflag=' -fpic -Mnomain' ;;
+       ecc*,ia64* | icc*,ia64*)                # Intel C compiler on ia64
+         tmp_addflag=' -i_dynamic' ;;
+       efc*,ia64* | ifort*,ia64*)      # Intel Fortran compiler on ia64
+         tmp_addflag=' -i_dynamic -nofor_main' ;;
+       ifc* | ifort*)                  # Intel Fortran compiler
+         tmp_addflag=' -nofor_main' ;;
+       esac
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+       if test $supports_anon_versioning = yes; then
+         _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
+  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+  $echo "local: *; };" >> $output_objdir/$libname.ver~
+         $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+       fi
+      else
+       _LT_AC_TAGVAR(ld_shlibs, $1)=no
       fi
       ;;
 
@@ -5165,31 +5414,6 @@ EOF
       _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
       ;;
 
-  linux*)
-    if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-        tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-       _LT_AC_TAGVAR(archive_cmds, $1)="$tmp_archive_cmds"
-      supports_anon_versioning=no
-      case `$LD -v 2>/dev/null` in
-        *\ [01].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
-        *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-        *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-        *\ 2.11.*) ;; # other 2.11 versions
-        *) supports_anon_versioning=yes ;;
-      esac
-      if test $supports_anon_versioning = yes; then
-        _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
-cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-$echo "local: *; };" >> $output_objdir/$libname.ver~
-        $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-      else
-        _LT_AC_TAGVAR(archive_expsym_cmds, $1)="$tmp_archive_cmds"
-      fi
-    else
-      _LT_AC_TAGVAR(ld_shlibs, $1)=no
-    fi
-    ;;
-
     *)
       if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
@@ -5200,16 +5424,11 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~
       ;;
     esac
 
-    if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = yes; then
-      runpath_var=LD_RUN_PATH
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
-      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-      # ancient GNU ld didn't support --whole-archive et. al.
-      if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
-       _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-      else
-       _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
-      fi
+    if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then
+      runpath_var=
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
     fi
   else
     # PORTME fill in a description of your system's linker (not GNU ld)
@@ -5273,7 +5492,7 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~
       _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
 
       if test "$GCC" = yes; then
-       case $host_os in aix4.[012]|aix4.[012].*)
+       case $host_os in aix4.[[012]]|aix4.[[012]].*)
        # We only want to do this on AIX 4.2 and lower, the check
        # below for broken collect2 doesn't work under 4.3+
          collect2name=`${CC} -print-prog-name=collect2`
@@ -5294,6 +5513,9 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~
          fi
        esac
        shared_flag='-shared'
+       if test "$aix_use_runtimelinking" = yes; then
+         shared_flag="$shared_flag "'${wl}-G'
+       fi
       else
        # not using gcc
        if test "$host_cpu" = ia64; then
@@ -5352,7 +5574,7 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~
       _LT_AC_TAGVAR(ld_shlibs, $1)=no
       ;;
 
-    bsdi4*)
+    bsdi[[45]]*)
       _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
       ;;
 
@@ -5373,57 +5595,57 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~
       _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
       # FIXME: Should let the user specify the lib program.
       _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs'
-      fix_srcfile_path='`cygpath -w "$srcfile"`'
+      _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
       _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
       ;;
 
     darwin* | rhapsody*)
-    if test "$GXX" = yes ; then
-      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
       case "$host_os" in
-      rhapsody* | darwin1.[[012]])
-       _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
-       ;;
-      *) # Darwin 1.3 on
-      if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
-       _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
-      else
-        case ${MACOSX_DEPLOYMENT_TARGET} in
-          10.[[012]])
-            _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
-            ;;
-          10.*)
-            _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup'
-            ;;
-        esac
-      fi
-       ;;
+        rhapsody* | darwin1.[[012]])
+         _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[[012]])
+               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
       esac
-       lt_int_apple_cc_single_mod=no
-       output_verbose_link_cmd='echo'
-       if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
-         lt_int_apple_cc_single_mod=yes
-       fi
-       if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
-         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-       else
-        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -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'
-      fi
-      _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
-        if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
-          _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-        else
-          _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -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~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-        fi
-          _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
       _LT_AC_TAGVAR(hardcode_direct, $1)=no
       _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
       _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
       _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+    if test "$GCC" = yes ; then
+       output_verbose_link_cmd='echo'
+        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
     else
-      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+         _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+         _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         _LT_AC_TAGVAR(ld_shlibs, $1)=no
+          ;;
+      esac
     fi
       ;;
 
@@ -5457,7 +5679,7 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~
       ;;
 
     # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | kfreebsd*-gnu)
+    freebsd* | kfreebsd*-gnu | dragonfly*)
       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
       _LT_AC_TAGVAR(hardcode_direct, $1)=yes
@@ -5568,6 +5790,7 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~
       _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
       if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
        _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
        _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
       else
@@ -5613,7 +5836,7 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~
        _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
        _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
        _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
-       $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+       $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
 
        # Both c and cxx compiler support -rpath directly
        _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
@@ -5632,10 +5855,12 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~
     solaris*)
       _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
       if test "$GCC" = yes; then
+       wlarc='${wl}'
        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
        _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
          $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
       else
+       wlarc=''
        _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
        _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
        $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
@@ -5644,8 +5869,18 @@ $echo "local: *; };" >> $output_objdir/$libname.ver~
       _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
       case $host_os in
       solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-      *) # Supported since Solaris 2.6 (maybe 2.5.1?)
-       _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
+      *)
+       # The compiler driver will combine linker options so we
+       # cannot just pass the convience library names through
+       # without $wl, iff we do not link with $LD.
+       # Luckily, gcc supports the same syntax we need for Sun Studio.
+       # Supported since Solaris 2.6 (maybe 2.5.1?)
+       case $wlarc in
+       '')
+         _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
+       *)
+         _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+       esac ;;
       esac
       _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
       ;;
@@ -5906,7 +6141,7 @@ lt_ac_count=0
 # Add /usr/xpg4/bin/sed as it is typically found on Solaris
 # along with /bin/sed that truncates output.
 for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
-  test ! -f $lt_ac_sed && break
+  test ! -f $lt_ac_sed && continue
   cat /dev/null > conftest.in
   lt_ac_count=0
   echo $ECHO_N "0123456789$ECHO_C" >conftest.in
@@ -5931,60 +6166,37 @@ for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
     fi
   done
 done
-SED=$lt_cv_path_SED
 ])
+SED=$lt_cv_path_SED
 AC_MSG_RESULT([$SED])
 ])
 
-#                                                        -*- Autoconf -*-
-# Copyright (C) 2002, 2003  Free Software Foundation, Inc.
-# Generated from amversion.in; do not edit by hand.
-
-# 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, 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
+# Copyright (C) 2002, 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_AUTOMAKE_VERSION(VERSION)
 # ----------------------------
 # Automake X.Y traces this macro to ensure aclocal.m4 has been
 # generated from the m4 files accompanying Automake X.Y.
-AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.8"])
+AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
 
 # AM_SET_CURRENT_AUTOMAKE_VERSION
 # -------------------------------
 # Call AM_AUTOMAKE_VERSION so it can be traced.
 # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-        [AM_AUTOMAKE_VERSION([1.8.4])])
-
-# AM_AUX_DIR_EXPAND
-
-# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+        [AM_AUTOMAKE_VERSION([1.9.5])])
 
-# 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, 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.
+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
-# 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.
+# 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
@@ -6031,26 +6243,16 @@ AC_PREREQ([2.50])dnl
 am_aux_dir=`cd $ac_aux_dir && pwd`
 ])
 
-# AM_CONDITIONAL                                              -*- Autoconf -*-
-
-# Copyright (C) 1997, 2000, 2001, 2003 Free Software Foundation, Inc.
-
-# 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, 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.
+# AM_CONDITIONAL                                            -*- Autoconf -*-
 
-# 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.
+# Copyright (C) 1997, 2000, 2001, 2003, 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 6
+# serial 7
 
 # AM_CONDITIONAL(NAME, SHELL-CONDITION)
 # -------------------------------------
@@ -6070,30 +6272,19 @@ else
 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.])
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# serial 7                                             -*- Autoconf -*-
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 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.
 
-# 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, 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.
-
+# serial 8
 
 # 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,
@@ -6102,7 +6293,6 @@ fi])])
 # CC etc. in the Makefile, will ask for an AC_PROG_CC use...
 
 
-
 # _AM_DEPENDENCIES(NAME)
 # ----------------------
 # See how the compiler implements dependency checking.
@@ -6242,26 +6432,16 @@ AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
 AC_SUBST([AMDEPBACKSLASH])
 ])
 
-# Generate code to set up dependency tracking.   -*- Autoconf -*-
+# Generate code to set up dependency tracking.              -*- Autoconf -*-
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-
-# 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, 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.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 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
+#serial 3
 
 # _AM_OUTPUT_DEPENDENCY_COMMANDS
 # ------------------------------
@@ -6280,27 +6460,21 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
   else
     continue
   fi
-  grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue
-  # Extract the definition of DEP_FILES from the Makefile without
-  # running `make'.
+  # 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"`
-  test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
-  # 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 '
-    /^DEP_FILES = .*\\\\$/ {
-      s/^DEP_FILES = //
-      :loop
-       s/\\\\$//
-       p
-       n
-       /\\\\$/ b loop
-      p
-    }
-    /^DEP_FILES = / s/^DEP_FILES = //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
@@ -6326,30 +6500,19 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
      [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
 ])
 
-# Do all the work for Automake.                            -*- Autoconf -*-
+# Do all the work for Automake.                             -*- Autoconf -*-
 
-# 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.
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 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.
 
-# 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, 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.
+# serial 12
 
-# serial 11
+# 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])
@@ -6407,7 +6570,6 @@ AM_MISSING_PROG(AUTOCONF, autoconf)
 AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
 AM_MISSING_PROG(AUTOHEADER, autoheader)
 AM_MISSING_PROG(MAKEINFO, makeinfo)
-AM_MISSING_PROG(AMTAR, tar)
 AM_PROG_INSTALL_SH
 AM_PROG_INSTALL_STRIP
 AC_REQUIRE([AM_PROG_MKDIR_P])dnl
@@ -6416,7 +6578,9 @@ AC_REQUIRE([AM_PROG_MKDIR_P])dnl
 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)],
@@ -6450,51 +6614,27 @@ for _am_header in $config_headers :; do
 done
 echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
 
+# 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_SH
 # ------------------
 # Define $install_sh.
-
-# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
-
-# 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, 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.
-
 AC_DEFUN([AM_PROG_INSTALL_SH],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
 install_sh=${install_sh-"$am_aux_dir/install-sh"}
 AC_SUBST(install_sh)])
 
-#                                                          -*- Autoconf -*-
-# Copyright (C) 2003  Free Software Foundation, Inc.
-
-# 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, 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.
+# 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 1
+# serial 2
 
 # Check whether the underlying file-system supports filenames
 # with a leading dot.  For instance MS-DOS doesn't.
@@ -6509,28 +6649,17 @@ fi
 rmdir .tst 2>/dev/null
 AC_SUBST([am__leading_dot])])
 
-# Add --enable-maintainer-mode option to configure.
+# Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
 # From Jim Meyering
 
-# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 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.
 
-# 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, 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.
-
-# serial 3
+# serial 4
 
 AC_DEFUN([AM_MAINTAINER_MODE],
 [AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
@@ -6549,26 +6678,15 @@ AC_DEFUN([AM_MAINTAINER_MODE],
 
 AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
 
-# Check to see how 'make' treats includes.     -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+# Check to see how 'make' treats includes.                 -*- Autoconf -*-
 
-# 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, 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.
+# Copyright (C) 2001, 2002, 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
+# serial 3
 
 # AM_MAKE_INCLUDE()
 # -----------------
@@ -6612,29 +6730,17 @@ AC_MSG_RESULT([$_am_result])
 rm -f confinc confmf
 ])
 
-# serial 2
+# Copyright (C) 1999, 2000, 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.
+
+# serial 3
 
 # AM_PROG_CC_C_O
 # --------------
 # Like AC_PROG_CC_C_O, but changed for automake.
-
-# Copyright (C) 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
-
-# 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, 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.
-
 AC_DEFUN([AM_PROG_CC_C_O],
 [AC_REQUIRE([AC_PROG_CC_C_O])dnl
 AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
@@ -6652,27 +6758,16 @@ if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then
 fi
 ])
 
-#  -*- Autoconf -*-
-
+# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
-# Copyright (C) 1997, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
-
-# 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, 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.
+# Copyright (C) 1997, 1999, 2000, 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.
 
-# serial 3
+# serial 4
 
 # AM_MISSING_PROG(NAME, PROGRAM)
 # ------------------------------
@@ -6698,27 +6793,16 @@ else
 fi
 ])
 
+# Copyright (C) 2003, 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.
+
 # AM_PROG_MKDIR_P
 # ---------------
 # Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
-
-# Copyright (C) 2003, 2004 Free Software Foundation, Inc.
-
-# 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, 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.
-
+#
 # Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
 # created by `make install' are always world readable, even if the
 # installer happens to have an overly restrictive umask (e.g. 077).
@@ -6739,13 +6823,21 @@ fi
 # this.)
 AC_DEFUN([AM_PROG_MKDIR_P],
 [if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
-  # Keeping the `.' argument allows $(mkdir_p) to be used without
-  # argument.  Indeed, we sometimes output rules like
+  # We used to keeping the `.' as first argument, in order to
+  # allow $(mkdir_p) to be used without argument.  As in
   #   $(mkdir_p) $(somedir)
-  # where $(somedir) is conditionally defined.
-  # (`test -n '$(somedir)' && $(mkdir_p) $(somedir)' is a more
-  # expensive solution, as it forces Make to start a sub-shell.)
-  mkdir_p='mkdir -p -- .'
+  # where $(somedir) is conditionally defined.  However this is wrong
+  # for two reasons:
+  #  1. if the package is installed by a user who cannot write `.'
+  #     make install will fail,
+  #  2. the above comment should most certainly read
+  #     $(mkdir_p) $(DESTDIR)$(somedir)
+  #     so it does not work when $(somedir) is undefined and
+  #     $(DESTDIR) is not.
+  #  To support the latter case, we have to write
+  #     test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+  #  so the `.' trick is pointless.
+  mkdir_p='mkdir -p --'
 else
   # On NextStep and OpenStep, the `mkdir' command does not
   # recognize any option.  It will interpret all options as
@@ -6764,26 +6856,15 @@ else
 fi
 AC_SUBST([mkdir_p])])
 
-# Helper functions for option handling.                    -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003  Free Software Foundation, Inc.
-
-# 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, 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.
+# Helper functions for option handling.                     -*- Autoconf -*-
 
-# 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.
+# Copyright (C) 2001, 2002, 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
+# serial 3
 
 # _AM_MANGLE_OPTION(NAME)
 # -----------------------
@@ -6808,28 +6889,16 @@ AC_DEFUN([_AM_SET_OPTIONS],
 AC_DEFUN([_AM_IF_OPTION],
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
-#
-# Check to make sure that the build environment is sane.
-#
-
-# Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, Inc.
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
-# 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, 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.
+# Copyright (C) 1996, 1997, 2000, 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.
 
-# serial 3
+# serial 4
 
 # AM_SANITY_CHECK
 # ---------------
@@ -6872,25 +6941,14 @@ Check your system clock])
 fi
 AC_MSG_RESULT(yes)])
 
-# AM_PROG_INSTALL_STRIP
-
-# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
-
-# 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, 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.
+# 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
 INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
+# 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([m4/ensc_cflags.m4])
 m4_include([m4/ensc_changelog.m4])
+m4_include([m4/ensc_cxxcompiler.m4])
+m4_include([m4/ensc_dietlibc.m4])
+m4_include([m4/ensc_dietlibc_compat.m4])
 m4_include([m4/ensc_e2fscheck.m4])
+m4_include([m4/ensc_initrddir.m4])
 m4_include([m4/ensc_kerneldir.m4])
+m4_include([m4/ensc_pathprog.m4])
+m4_include([m4/ensc_personality.m4])
+m4_include([m4/ensc_release.m4])
 m4_include([m4/ensc_syscall.m4])
 m4_include([m4/ensc_syscallnr.m4])
 m4_include([m4/ensc_uv_vrootdir.m4])
diff --git a/compat-c99.h b/compat-c99.h
new file mode 100644 (file)
index 0000000..7f3c566
--- /dev/null
@@ -0,0 +1,31 @@
+// $Id: compat-c99.h,v 1.1 2003/12/26 00:49:32 uid68581 Exp $    --*- c -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_COMPAT_C99_H
+#define H_UTIL_VSERVER_COMPAT_C99_H
+
+#if defined(__GNUC__) && __GNUC__ < 3 || (__GNUC__==3 && __GNUC_MINOR__<3)
+#  warning Enabling hacks to make it compilable with non-C99 compilers
+#  define BS { do {} while (0)
+#  define BE } do {} while (0)
+#else
+#  define BS do {} while (0)
+#  define BE do {} while (0)
+#endif
+
+#endif //  H_UTIL_VSERVER_COMPAT_C99_H
index 5b7291b..225af24 100644 (file)
--- a/compat.h
+++ b/compat.h
@@ -1,4 +1,4 @@
-// $Id: compat.h,v 1.1.4.3 2003/12/30 13:47:56 ensc Exp $    --*- c++ -*--
+// $Id: compat.h,v 1.17 2004/04/22 20:47:31 ensc Exp $    --*- c++ -*--
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 //  
 #ifndef H_UTIL_VSERVER_COMPAT_H
 #define H_UTIL_VSERVER_COMPAT_H
 
+#if defined(__dietlibc__) && !defined(ENSC_DIETLIBC_C99) && defined(__STRICT_ANSI__) && defined(__STDC_VERSION__)
+#  include <sys/cdefs.h>
+#  undef inline
+
+#  undef  __STRICT_ANSI__
+#  include <stdint.h>
+#  define __STRICT_ANSI__
+#endif
+
+#if defined(__dietlibc__)
+#  define ENSC_FIX_IOCTL(X)    do { if ((X)<-1) { errno=-(X); (X) = -1; } } while (0)
+#else
+#  define ENSC_FIX_IOCTL(X)    do { } while (0)
+#endif
+
 #if defined(__GNUC__)
 #  define UNUSED                __attribute__((__unused__))
 #  define NORETURN              __attribute__((__noreturn__))
-#  if __GNUC__ >= 3
+#  define CONST                        __attribute__((__const__))
+#  if __GNUC__*0x10000 + __GNUC_MINOR__*0x100 + __GNUC_PATCHLEVEL__ >= 0x30300
+#    define NONNULL(ARGS)      __attribute__((__nonnull__ ARGS))
 #    define ALWAYSINLINE        __attribute__((__always_inline__))
 #  else
+#    define NONNULL(ARGS)
 #    define ALWAYSINLINE
+#    define PURE
+#  endif
+#  if __GNUC__*0x10000 + __GNUC_MINOR__*0x100 + __GNUC_PATCHLEVEL__ >= 0x30303
+#    define PURE               __attribute__((__pure__))
+#  else
+#    define PURE
 #  endif
 #else
+#  define NONNULL(ARGS)
 #  define UNUSED
 #  define NORETURN
 #  define ALWAYSINLINE
+#  define PURE
+#  define CONST
+#endif
+
+  // shamelessly stolen from dietlibc
+#define LINK_WARNING(symbol,msg)                                       \
+  __asm__ (".section .gnu.warning." symbol "\n\t.string \"" msg "\"\n\t.previous")
+
+#if !defined(__builtin_expect) && (__GNUC__+0)<3
+#  define __builtin_expect(foo,bar)    (foo)
+#endif
+
+#if !defined(__STDC_VERSION__) || (__STDC_VERSION__<199901L)
+#  define restrict
 #endif
 
 #if !defined(HAVE_DECL_MS_MOVE) || !(HAVE_DECL_MS_MOVE)
 typedef uint32_t               xid_t;
 #endif
 
+#ifndef HAVE_NID_T
+#include <stdint.h>
+typedef uint32_t               nid_t;
+#endif
+
+
+#if defined(__dietlibc__)
+  #define TEMP_FAILURE_RETRY(expression)                               \
+  (__extension__                                                       \
+   ({ long int __result;                                               \
+   do __result = (long int) (expression);                              \
+   while (__result == -1L && errno == EINTR);                          \
+  __result; }))
+#endif
+
+#define FMT_PREFIX             utilvserver_fmt_
+
 #endif //  H_UTIL_VSERVER_COMPAT_H
diff --git a/compile b/compile
index a81e000..ad57e2f 100755 (executable)
--- a/compile
+++ b/compile
@@ -1,9 +1,9 @@
 #! /bin/sh
 # Wrapper for compilers which do not understand `-c -o'.
 
-scriptversion=2003-11-09.00
+scriptversion=2005-02-03.08
 
-# Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
 # Written by Tom Tromey <tromey@cygnus.com>.
 #
 # This program is free software; you can redistribute it and/or modify
@@ -47,45 +47,49 @@ right script to run: please start by reading the file `INSTALL'.
 
 Report bugs to <bug-automake@gnu.org>.
 EOF
-    exit 0
+    exit $?
     ;;
   -v | --v*)
     echo "compile $scriptversion"
-    exit 0
+    exit $?
     ;;
 esac
 
-
-prog=$1
-shift
-
 ofile=
 cfile=
-args=
-while test $# -gt 0; do
-  case "$1" in
-    -o)
-      # configure might choose to run compile as `compile cc -o foo foo.c'.
-      # So we do something ugly here.
-      ofile=$2
-      shift
-      case "$ofile" in
-       *.o | *.obj)
-         ;;
-       *)
-         args="$args -o $ofile"
-         ofile=
-         ;;
-      esac
-       ;;
-    *.c)
-      cfile=$1
-      args="$args $1"
-      ;;
-    *)
-      args="$args $1"
-      ;;
-  esac
+eat=
+
+for arg
+do
+  if test -n "$eat"; then
+    eat=
+  else
+    case $1 in
+      -o)
+       # configure might choose to run compile as `compile cc -o foo foo.c'.
+       # So we strip `-o arg' only if arg is an object.
+       eat=1
+       case $2 in
+         *.o | *.obj)
+           ofile=$2
+           ;;
+         *)
+           set x "$@" -o "$2"
+           shift
+           ;;
+       esac
+       ;;
+      *.c)
+       cfile=$1
+       set x "$@" "$1"
+       shift
+       ;;
+      *)
+       set x "$@" "$1"
+       shift
+       ;;
+    esac
+  fi
   shift
 done
 
@@ -95,36 +99,38 @@ if test -z "$ofile" || test -z "$cfile"; then
   # normal compilation that the losing compiler can handle.  If no
   # `.c' file was seen then we are probably linking.  That is also
   # ok.
-  exec "$prog" $args
+  exec "$@"
 fi
 
 # Name of file we expect compiler to create.
-cofile=`echo $cfile | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
+cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
 
 # Create the lock directory.
 # Note: use `[/.-]' here to ensure that we don't use the same name
 # that we are using for the .o file.  Also, base the name on the expected
 # object file name, since that is what matters with a parallel build.
-lockdir=`echo $cofile | sed -e 's|[/.-]|_|g'`.d
+lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d
 while true; do
-  if mkdir $lockdir > /dev/null 2>&1; then
+  if mkdir "$lockdir" >/dev/null 2>&1; then
     break
   fi
   sleep 1
 done
 # FIXME: race condition here if user kills between mkdir and trap.
-trap "rmdir $lockdir; exit 1" 1 2 15
+trap "rmdir '$lockdir'; exit 1" 1 2 15
 
 # Run the compile.
-"$prog" $args
-status=$?
+"$@"
+ret=$?
 
 if test -f "$cofile"; then
   mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+  mv "${cofile}bj" "$ofile"
 fi
 
-rmdir $lockdir
-exit $status
+rmdir "$lockdir"
+exit $ret
 
 # Local Variables:
 # mode: shell-script
diff --git a/config.guess b/config.guess
new file mode 100755 (executable)
index 0000000..892833f
--- /dev/null
@@ -0,0 +1,1459 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+timestamp='2005-02-10'
+
+# This file 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.
+
+# Originally written by Per Bothner <per@bothner.com>.
+# Please send patches to <config-patches@gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub.  If it succeeds, it prints the system name on stdout, and
+# exits with 0.  Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit 0 ;;
+    --version | -v )
+       echo "$version" ; exit 0 ;;
+    --help | --h* | -h )
+       echo "$usage"; exit 0 ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+       for c in cc gcc c89 c99 ; do
+         if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+            CC_FOR_BUILD="$c"; break ;
+         fi ;
+       done ;
+       if test x"$CC_FOR_BUILD" = x ; then
+         CC_FOR_BUILD=no_compiler_found ;
+       fi
+       ;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+       PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+       # NetBSD (nbsd) targets should (where applicable) match one or
+       # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+       # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+       # switched to ELF, *-*-netbsd* would select the old
+       # object file format.  This provides both forward
+       # compatibility and a consistent mechanism for selecting the
+       # object file format.
+       #
+       # Note: NetBSD doesn't particularly care about the vendor
+       # portion of the name.  We always set it to "unknown".
+       sysctl="sysctl -n hw.machine_arch"
+       UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+           /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+       case "${UNAME_MACHINE_ARCH}" in
+           armeb) machine=armeb-unknown ;;
+           arm*) machine=arm-unknown ;;
+           sh3el) machine=shl-unknown ;;
+           sh3eb) machine=sh-unknown ;;
+           *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+       esac
+       # The Operating System including object format, if it has switched
+       # to ELF recently, or will in the future.
+       case "${UNAME_MACHINE_ARCH}" in
+           arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+               eval $set_cc_for_build
+               if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+                       | grep __ELF__ >/dev/null
+               then
+                   # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+                   # Return netbsd for either.  FIX?
+                   os=netbsd
+               else
+                   os=netbsdelf
+               fi
+               ;;
+           *)
+               os=netbsd
+               ;;
+       esac
+       # The OS release
+       # Debian GNU/NetBSD machines have a different userland, and
+       # thus, need a distinct triplet. However, they do not need
+       # kernel version information, so it can be replaced with a
+       # suitable tag, in the style of linux-gnu.
+       case "${UNAME_VERSION}" in
+           Debian*)
+               release='-gnu'
+               ;;
+           *)
+               release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+               ;;
+       esac
+       # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+       # contains redundant information, the shorter form:
+       # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+       echo "${machine}-${os}${release}"
+       exit 0 ;;
+    amd64:OpenBSD:*:*)
+       echo x86_64-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    amiga:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    cats:OpenBSD:*:*)
+       echo arm-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    hp300:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    luna88k:OpenBSD:*:*)
+       echo m88k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    mac68k:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    macppc:OpenBSD:*:*)
+       echo powerpc-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    mvme68k:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    mvme88k:OpenBSD:*:*)
+       echo m88k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    mvmeppc:OpenBSD:*:*)
+       echo powerpc-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    sgi:OpenBSD:*:*)
+       echo mips64-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    sun3:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    *:OpenBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    *:ekkoBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+       exit 0 ;;
+    macppc:MirBSD:*:*)
+       echo powerppc-unknown-mirbsd${UNAME_RELEASE}
+       exit 0 ;;
+    *:MirBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+       exit 0 ;;
+    alpha:OSF1:*:*)
+       case $UNAME_RELEASE in
+       *4.0)
+               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+               ;;
+       *5.*)
+               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+               ;;
+       esac
+       # According to Compaq, /usr/sbin/psrinfo has been available on
+       # OSF/1 and Tru64 systems produced since 1995.  I hope that
+       # covers most systems running today.  This code pipes the CPU
+       # types through head -n 1, so we only detect the type of CPU 0.
+       ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+       case "$ALPHA_CPU_TYPE" in
+           "EV4 (21064)")
+               UNAME_MACHINE="alpha" ;;
+           "EV4.5 (21064)")
+               UNAME_MACHINE="alpha" ;;
+           "LCA4 (21066/21068)")
+               UNAME_MACHINE="alpha" ;;
+           "EV5 (21164)")
+               UNAME_MACHINE="alphaev5" ;;
+           "EV5.6 (21164A)")
+               UNAME_MACHINE="alphaev56" ;;
+           "EV5.6 (21164PC)")
+               UNAME_MACHINE="alphapca56" ;;
+           "EV5.7 (21164PC)")
+               UNAME_MACHINE="alphapca57" ;;
+           "EV6 (21264)")
+               UNAME_MACHINE="alphaev6" ;;
+           "EV6.7 (21264A)")
+               UNAME_MACHINE="alphaev67" ;;
+           "EV6.8CB (21264C)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.8AL (21264B)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.8CX (21264D)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.9A (21264/EV69A)")
+               UNAME_MACHINE="alphaev69" ;;
+           "EV7 (21364)")
+               UNAME_MACHINE="alphaev7" ;;
+           "EV7.9 (21364A)")
+               UNAME_MACHINE="alphaev79" ;;
+       esac
+       # A Pn.n version is a patched version.
+       # A Vn.n version is a released version.
+       # A Tn.n version is a released field test version.
+       # A Xn.n version is an unreleased experimental baselevel.
+       # 1.2 uses "1.2" for uname -r.
+       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+       exit 0 ;;
+    Alpha\ *:Windows_NT*:*)
+       # How do we know it's Interix rather than the generic POSIX subsystem?
+       # Should we change UNAME_MACHINE based on the output of uname instead
+       # of the specific Alpha model?
+       echo alpha-pc-interix
+       exit 0 ;;
+    21064:Windows_NT:50:3)
+       echo alpha-dec-winnt3.5
+       exit 0 ;;
+    Amiga*:UNIX_System_V:4.0:*)
+       echo m68k-unknown-sysv4
+       exit 0;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+       echo ${UNAME_MACHINE}-unknown-amigaos
+       exit 0 ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+       echo ${UNAME_MACHINE}-unknown-morphos
+       exit 0 ;;
+    *:OS/390:*:*)
+       echo i370-ibm-openedition
+       exit 0 ;;
+    *:z/VM:*:*)
+       echo s390-ibm-zvmoe
+       exit 0 ;;
+    *:OS400:*:*)
+        echo powerpc-ibm-os400
+       exit 0 ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+       echo arm-acorn-riscix${UNAME_RELEASE}
+       exit 0;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+       echo hppa1.1-hitachi-hiuxmpp
+       exit 0;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+       # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+       if test "`(/bin/universe) 2>/dev/null`" = att ; then
+               echo pyramid-pyramid-sysv3
+       else
+               echo pyramid-pyramid-bsd
+       fi
+       exit 0 ;;
+    NILE*:*:*:dcosx)
+       echo pyramid-pyramid-svr4
+       exit 0 ;;
+    DRS?6000:unix:4.0:6*)
+       echo sparc-icl-nx6
+       exit 0 ;;
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+       case `/usr/bin/uname -p` in
+           sparc) echo sparc-icl-nx7 && exit 0 ;;
+       esac ;;
+    sun4H:SunOS:5.*:*)
+       echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit 0 ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+       echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit 0 ;;
+    i86pc:SunOS:5.*:*)
+       echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit 0 ;;
+    sun4*:SunOS:6*:*)
+       # According to config.sub, this is the proper way to canonicalize
+       # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+       # it's likely to be more like Solaris than SunOS4.
+       echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit 0 ;;
+    sun4*:SunOS:*:*)
+       case "`/usr/bin/arch -k`" in
+           Series*|S4*)
+               UNAME_RELEASE=`uname -v`
+               ;;
+       esac
+       # Japanese Language versions have a version number like `4.1.3-JL'.
+       echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+       exit 0 ;;
+    sun3*:SunOS:*:*)
+       echo m68k-sun-sunos${UNAME_RELEASE}
+       exit 0 ;;
+    sun*:*:4.2BSD:*)
+       UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+       test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+       case "`/bin/arch`" in
+           sun3)
+               echo m68k-sun-sunos${UNAME_RELEASE}
+               ;;
+           sun4)
+               echo sparc-sun-sunos${UNAME_RELEASE}
+               ;;
+       esac
+       exit 0 ;;
+    aushp:SunOS:*:*)
+       echo sparc-auspex-sunos${UNAME_RELEASE}
+       exit 0 ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+       exit 0 ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+       echo m68k-atari-mint${UNAME_RELEASE}
+        exit 0 ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+       exit 0 ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+        echo m68k-milan-mint${UNAME_RELEASE}
+        exit 0 ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+        echo m68k-hades-mint${UNAME_RELEASE}
+        exit 0 ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+        echo m68k-unknown-mint${UNAME_RELEASE}
+        exit 0 ;;
+    m68k:machten:*:*)
+       echo m68k-apple-machten${UNAME_RELEASE}
+       exit 0 ;;
+    powerpc:machten:*:*)
+       echo powerpc-apple-machten${UNAME_RELEASE}
+       exit 0 ;;
+    RISC*:Mach:*:*)
+       echo mips-dec-mach_bsd4.3
+       exit 0 ;;
+    RISC*:ULTRIX:*:*)
+       echo mips-dec-ultrix${UNAME_RELEASE}
+       exit 0 ;;
+    VAX*:ULTRIX*:*:*)
+       echo vax-dec-ultrix${UNAME_RELEASE}
+       exit 0 ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+       echo clipper-intergraph-clix${UNAME_RELEASE}
+       exit 0 ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+       int main (int argc, char *argv[]) {
+#else
+       int main (argc, argv) int argc; char *argv[]; {
+#endif
+       #if defined (host_mips) && defined (MIPSEB)
+       #if defined (SYSTYPE_SYSV)
+         printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+       #endif
+       #if defined (SYSTYPE_SVR4)
+         printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+       #endif
+       #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+         printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+       #endif
+       #endif
+         exit (-1);
+       }
+EOF
+       $CC_FOR_BUILD -o $dummy $dummy.c \
+         && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+         && exit 0
+       echo mips-mips-riscos${UNAME_RELEASE}
+       exit 0 ;;
+    Motorola:PowerMAX_OS:*:*)
+       echo powerpc-motorola-powermax
+       exit 0 ;;
+    Motorola:*:4.3:PL8-*)
+       echo powerpc-harris-powermax
+       exit 0 ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+       echo powerpc-harris-powermax
+       exit 0 ;;
+    Night_Hawk:Power_UNIX:*:*)
+       echo powerpc-harris-powerunix
+       exit 0 ;;
+    m88k:CX/UX:7*:*)
+       echo m88k-harris-cxux7
+       exit 0 ;;
+    m88k:*:4*:R4*)
+       echo m88k-motorola-sysv4
+       exit 0 ;;
+    m88k:*:3*:R3*)
+       echo m88k-motorola-sysv3
+       exit 0 ;;
+    AViiON:dgux:*:*)
+        # DG/UX returns AViiON for all architectures
+        UNAME_PROCESSOR=`/usr/bin/uname -p`
+       if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+       then
+           if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+              [ ${TARGET_BINARY_INTERFACE}x = x ]
+           then
+               echo m88k-dg-dgux${UNAME_RELEASE}
+           else
+               echo m88k-dg-dguxbcs${UNAME_RELEASE}
+           fi
+       else
+           echo i586-dg-dgux${UNAME_RELEASE}
+       fi
+       exit 0 ;;
+    M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
+       echo m88k-dolphin-sysv3
+       exit 0 ;;
+    M88*:*:R3*:*)
+       # Delta 88k system running SVR3
+       echo m88k-motorola-sysv3
+       exit 0 ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+       echo m88k-tektronix-sysv3
+       exit 0 ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+       echo m68k-tektronix-bsd
+       exit 0 ;;
+    *:IRIX*:*:*)
+       echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+       exit 0 ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+       echo romp-ibm-aix      # uname -m gives an 8 hex-code CPU id
+       exit 0 ;;              # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+       echo i386-ibm-aix
+       exit 0 ;;
+    ia64:AIX:*:*)
+       if [ -x /usr/bin/oslevel ] ; then
+               IBM_REV=`/usr/bin/oslevel`
+       else
+               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+       fi
+       echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+       exit 0 ;;
+    *:AIX:2:3)
+       if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+               eval $set_cc_for_build
+               sed 's/^                //' << EOF >$dummy.c
+               #include <sys/systemcfg.h>
+
+               main()
+                       {
+                       if (!__power_pc())
+                               exit(1);
+                       puts("powerpc-ibm-aix3.2.5");
+                       exit(0);
+                       }
+EOF
+               $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+               echo rs6000-ibm-aix3.2.5
+       elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+               echo rs6000-ibm-aix3.2.4
+       else
+               echo rs6000-ibm-aix3.2
+       fi
+       exit 0 ;;
+    *:AIX:*:[45])
+       IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+       if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+               IBM_ARCH=rs6000
+       else
+               IBM_ARCH=powerpc
+       fi
+       if [ -x /usr/bin/oslevel ] ; then
+               IBM_REV=`/usr/bin/oslevel`
+       else
+               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+       fi
+       echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+       exit 0 ;;
+    *:AIX:*:*)
+       echo rs6000-ibm-aix
+       exit 0 ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+       echo romp-ibm-bsd4.4
+       exit 0 ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+       echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+       exit 0 ;;                           # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+       echo rs6000-bull-bosx
+       exit 0 ;;
+    DPX/2?00:B.O.S.:*:*)
+       echo m68k-bull-sysv3
+       exit 0 ;;
+    9000/[34]??:4.3bsd:1.*:*)
+       echo m68k-hp-bsd
+       exit 0 ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+       echo m68k-hp-bsd4.4
+       exit 0 ;;
+    9000/[34678]??:HP-UX:*:*)
+       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+       case "${UNAME_MACHINE}" in
+           9000/31? )            HP_ARCH=m68000 ;;
+           9000/[34]?? )         HP_ARCH=m68k ;;
+           9000/[678][0-9][0-9])
+               if [ -x /usr/bin/getconf ]; then
+                   sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+                    case "${sc_cpu_version}" in
+                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                      532)                      # CPU_PA_RISC2_0
+                        case "${sc_kernel_bits}" in
+                          32) HP_ARCH="hppa2.0n" ;;
+                          64) HP_ARCH="hppa2.0w" ;;
+                         '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+                        esac ;;
+                    esac
+               fi
+               if [ "${HP_ARCH}" = "" ]; then
+                   eval $set_cc_for_build
+                   sed 's/^              //' << EOF >$dummy.c
+
+              #define _HPUX_SOURCE
+              #include <stdlib.h>
+              #include <unistd.h>
+
+              int main ()
+              {
+              #if defined(_SC_KERNEL_BITS)
+                  long bits = sysconf(_SC_KERNEL_BITS);
+              #endif
+                  long cpu  = sysconf (_SC_CPU_VERSION);
+
+                  switch (cpu)
+               {
+               case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+               case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+               case CPU_PA_RISC2_0:
+              #if defined(_SC_KERNEL_BITS)
+                   switch (bits)
+                       {
+                       case 64: puts ("hppa2.0w"); break;
+                       case 32: puts ("hppa2.0n"); break;
+                       default: puts ("hppa2.0"); break;
+                       } break;
+              #else  /* !defined(_SC_KERNEL_BITS) */
+                   puts ("hppa2.0"); break;
+              #endif
+               default: puts ("hppa1.0"); break;
+               }
+                  exit (0);
+              }
+EOF
+                   (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+                   test -z "$HP_ARCH" && HP_ARCH=hppa
+               fi ;;
+       esac
+       if [ ${HP_ARCH} = "hppa2.0w" ]
+       then
+           # avoid double evaluation of $set_cc_for_build
+           test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
+           if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
+           then
+               HP_ARCH="hppa2.0w"
+           else
+               HP_ARCH="hppa64"
+           fi
+       fi
+       echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+       exit 0 ;;
+    ia64:HP-UX:*:*)
+       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+       echo ia64-hp-hpux${HPUX_REV}
+       exit 0 ;;
+    3050*:HI-UX:*:*)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #include <unistd.h>
+       int
+       main ()
+       {
+         long cpu = sysconf (_SC_CPU_VERSION);
+         /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+            true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+            results, however.  */
+         if (CPU_IS_PA_RISC (cpu))
+           {
+             switch (cpu)
+               {
+                 case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+                 case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+                 case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+                 default: puts ("hppa-hitachi-hiuxwe2"); break;
+               }
+           }
+         else if (CPU_IS_HP_MC68K (cpu))
+           puts ("m68k-hitachi-hiuxwe2");
+         else puts ("unknown-hitachi-hiuxwe2");
+         exit (0);
+       }
+EOF
+       $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+       echo unknown-hitachi-hiuxwe2
+       exit 0 ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+       echo hppa1.1-hp-bsd
+       exit 0 ;;
+    9000/8??:4.3bsd:*:*)
+       echo hppa1.0-hp-bsd
+       exit 0 ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+       echo hppa1.0-hp-mpeix
+       exit 0 ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+       echo hppa1.1-hp-osf
+       exit 0 ;;
+    hp8??:OSF1:*:*)
+       echo hppa1.0-hp-osf
+       exit 0 ;;
+    i*86:OSF1:*:*)
+       if [ -x /usr/sbin/sysversion ] ; then
+           echo ${UNAME_MACHINE}-unknown-osf1mk
+       else
+           echo ${UNAME_MACHINE}-unknown-osf1
+       fi
+       exit 0 ;;
+    parisc*:Lites*:*:*)
+       echo hppa1.1-hp-lites
+       exit 0 ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+       echo c1-convex-bsd
+        exit 0 ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+       if getsysinfo -f scalar_acc
+       then echo c32-convex-bsd
+       else echo c2-convex-bsd
+       fi
+        exit 0 ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+       echo c34-convex-bsd
+        exit 0 ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+       echo c38-convex-bsd
+        exit 0 ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+       echo c4-convex-bsd
+        exit 0 ;;
+    CRAY*Y-MP:*:*:*)
+       echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    CRAY*[A-Z]90:*:*:*)
+       echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+       | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+             -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+             -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    CRAY*TS:*:*:*)
+       echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    CRAY*T3E:*:*:*)
+       echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    CRAY*SV1:*:*:*)
+       echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    *:UNICOS/mp:*:*)
+       echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+       FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+        exit 0 ;;
+    5000:UNIX_System_V:4.*:*)
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+       exit 0 ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+       echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+       exit 0 ;;
+    sparc*:BSD/OS:*:*)
+       echo sparc-unknown-bsdi${UNAME_RELEASE}
+       exit 0 ;;
+    *:BSD/OS:*:*)
+       echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+       exit 0 ;;
+    *:FreeBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+       exit 0 ;;
+    i*:CYGWIN*:*)
+       echo ${UNAME_MACHINE}-pc-cygwin
+       exit 0 ;;
+    i*:MINGW*:*)
+       echo ${UNAME_MACHINE}-pc-mingw32
+       exit 0 ;;
+    i*:PW*:*)
+       echo ${UNAME_MACHINE}-pc-pw32
+       exit 0 ;;
+    x86:Interix*:[34]*)
+       echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
+       exit 0 ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+       echo i${UNAME_MACHINE}-pc-mks
+       exit 0 ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+       # How do we know it's Interix rather than the generic POSIX subsystem?
+       # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+       # UNAME_MACHINE based on the output of uname instead of i386?
+       echo i586-pc-interix
+       exit 0 ;;
+    i*:UWIN*:*)
+       echo ${UNAME_MACHINE}-pc-uwin
+       exit 0 ;;
+    amd64:CYGWIN*:*:*)
+       echo x86_64-unknown-cygwin
+       exit 0 ;;
+    p*:CYGWIN*:*)
+       echo powerpcle-unknown-cygwin
+       exit 0 ;;
+    prep*:SunOS:5.*:*)
+       echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit 0 ;;
+    *:GNU:*:*)
+       # the GNU system
+       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+       exit 0 ;;
+    *:GNU/*:*:*)
+       # other systems with GNU libc and userland
+       echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+       exit 0 ;;
+    i*86:Minix:*:*)
+       echo ${UNAME_MACHINE}-pc-minix
+       exit 0 ;;
+    arm*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    cris:Linux:*:*)
+       echo cris-axis-linux-gnu
+       exit 0 ;;
+    crisv32:Linux:*:*)
+       echo crisv32-axis-linux-gnu
+       exit 0 ;;
+    frv:Linux:*:*)
+       echo frv-unknown-linux-gnu
+       exit 0 ;;
+    ia64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    m32r*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    m68*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    mips:Linux:*:*)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #undef CPU
+       #undef mips
+       #undef mipsel
+       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+       CPU=mipsel
+       #else
+       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+       CPU=mips
+       #else
+       CPU=
+       #endif
+       #endif
+EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+       test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+       ;;
+    mips64:Linux:*:*)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #undef CPU
+       #undef mips64
+       #undef mips64el
+       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+       CPU=mips64el
+       #else
+       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+       CPU=mips64
+       #else
+       CPU=
+       #endif
+       #endif
+EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+       test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+       ;;
+    ppc:Linux:*:*)
+       echo powerpc-unknown-linux-gnu
+       exit 0 ;;
+    ppc64:Linux:*:*)
+       echo powerpc64-unknown-linux-gnu
+       exit 0 ;;
+    alpha:Linux:*:*)
+       case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+         EV5)   UNAME_MACHINE=alphaev5 ;;
+         EV56)  UNAME_MACHINE=alphaev56 ;;
+         PCA56) UNAME_MACHINE=alphapca56 ;;
+         PCA57) UNAME_MACHINE=alphapca56 ;;
+         EV6)   UNAME_MACHINE=alphaev6 ;;
+         EV67)  UNAME_MACHINE=alphaev67 ;;
+         EV68*) UNAME_MACHINE=alphaev68 ;;
+        esac
+       objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+       if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+       echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+       exit 0 ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+       # Look for CPU level
+       case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+         PA7*) echo hppa1.1-unknown-linux-gnu ;;
+         PA8*) echo hppa2.0-unknown-linux-gnu ;;
+         *)    echo hppa-unknown-linux-gnu ;;
+       esac
+       exit 0 ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+       echo hppa64-unknown-linux-gnu
+       exit 0 ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+       echo ${UNAME_MACHINE}-ibm-linux
+       exit 0 ;;
+    sh64*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    sh*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    x86_64:Linux:*:*)
+       echo x86_64-unknown-linux-gnu
+       exit 0 ;;
+    i*86:Linux:*:*)
+       # The BFD linker knows what the default object file format is, so
+       # first see if it will tell us. cd to the root directory to prevent
+       # problems with other programs or directories called `ld' in the path.
+       # Set LC_ALL=C to ensure ld outputs messages in English.
+       ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+                        | sed -ne '/supported targets:/!d
+                                   s/[         ][      ]*/ /g
+                                   s/.*supported targets: *//
+                                   s/ .*//
+                                   p'`
+        case "$ld_supported_targets" in
+         elf32-i386)
+               TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+               ;;
+         a.out-i386-linux)
+               echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+               exit 0 ;;
+         coff-i386)
+               echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+               exit 0 ;;
+         "")
+               # Either a pre-BFD a.out linker (linux-gnuoldld) or
+               # one that does not give us useful --help.
+               echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+               exit 0 ;;
+       esac
+       # Determine whether the default compiler is a.out or elf
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #include <features.h>
+       #ifdef __ELF__
+       # ifdef __GLIBC__
+       #  if __GLIBC__ >= 2
+       LIBC=gnu
+       #  else
+       LIBC=gnulibc1
+       #  endif
+       # else
+       LIBC=gnulibc1
+       # endif
+       #else
+       #ifdef __INTEL_COMPILER
+       LIBC=gnu
+       #else
+       LIBC=gnuaout
+       #endif
+       #endif
+       #ifdef __dietlibc__
+       LIBC=dietlibc
+       #endif
+EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+       test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
+       test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+       ;;
+    i*86:DYNIX/ptx:4*:*)
+       # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+       # earlier versions are messed up and put the nodename in both
+       # sysname and nodename.
+       echo i386-sequent-sysv4
+       exit 0 ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+        # Unixware is an offshoot of SVR4, but it has its own version
+        # number series starting with 2...
+        # I am not positive that other SVR4 systems won't match this,
+       # I just have to hope.  -- rms.
+        # Use sysv4.2uw... so that sysv4* matches it.
+       echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+       exit 0 ;;
+    i*86:OS/2:*:*)
+       # If we were able to find `uname', then EMX Unix compatibility
+       # is probably installed.
+       echo ${UNAME_MACHINE}-pc-os2-emx
+       exit 0 ;;
+    i*86:XTS-300:*:STOP)
+       echo ${UNAME_MACHINE}-unknown-stop
+       exit 0 ;;
+    i*86:atheos:*:*)
+       echo ${UNAME_MACHINE}-unknown-atheos
+       exit 0 ;;
+       i*86:syllable:*:*)
+       echo ${UNAME_MACHINE}-pc-syllable
+       exit 0 ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+       echo i386-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    i*86:*DOS:*:*)
+       echo ${UNAME_MACHINE}-pc-msdosdjgpp
+       exit 0 ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+       UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+       if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+               echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+       else
+               echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+       fi
+       exit 0 ;;
+    i*86:*:5:[78]*)
+       case `/bin/uname -X | grep "^Machine"` in
+           *486*)           UNAME_MACHINE=i486 ;;
+           *Pentium)        UNAME_MACHINE=i586 ;;
+           *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+       esac
+       echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+       exit 0 ;;
+    i*86:*:3.2:*)
+       if test -f /usr/options/cb.name; then
+               UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+               echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+       elif /bin/uname -X 2>/dev/null >/dev/null ; then
+               UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+               (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+               (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+                       && UNAME_MACHINE=i586
+               (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+                       && UNAME_MACHINE=i686
+               (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+                       && UNAME_MACHINE=i686
+               echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+       else
+               echo ${UNAME_MACHINE}-pc-sysv32
+       fi
+       exit 0 ;;
+    pc:*:*:*)
+       # Left here for compatibility:
+        # uname -m prints for DJGPP always 'pc', but it prints nothing about
+        # the processor, so we play safe by assuming i386.
+       echo i386-pc-msdosdjgpp
+        exit 0 ;;
+    Intel:Mach:3*:*)
+       echo i386-pc-mach3
+       exit 0 ;;
+    paragon:*:*:*)
+       echo i860-intel-osf1
+       exit 0 ;;
+    i860:*:4.*:*) # i860-SVR4
+       if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+         echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+       else # Add other i860-SVR4 vendors below as they are discovered.
+         echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+       fi
+       exit 0 ;;
+    mini*:CTIX:SYS*5:*)
+       # "miniframe"
+       echo m68010-convergent-sysv
+       exit 0 ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+       echo m68k-convergent-sysv
+       exit 0 ;;
+    M680?0:D-NIX:5.3:*)
+       echo m68k-diab-dnix
+       exit 0 ;;
+    M68*:*:R3V[5678]*:*)
+       test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+       OS_REL=''
+       test -r /etc/.relid \
+       && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+         && echo i486-ncr-sysv4.3${OS_REL} && exit 0
+       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+         && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+          && echo i486-ncr-sysv4 && exit 0 ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+       echo m68k-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    mc68030:UNIX_System_V:4.*:*)
+       echo m68k-atari-sysv4
+       exit 0 ;;
+    TSUNAMI:LynxOS:2.*:*)
+       echo sparc-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    rs6000:LynxOS:2.*:*)
+       echo rs6000-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+       echo powerpc-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    SM[BE]S:UNIX_SV:*:*)
+       echo mips-dde-sysv${UNAME_RELEASE}
+       exit 0 ;;
+    RM*:ReliantUNIX-*:*:*)
+       echo mips-sni-sysv4
+       exit 0 ;;
+    RM*:SINIX-*:*:*)
+       echo mips-sni-sysv4
+       exit 0 ;;
+    *:SINIX-*:*:*)
+       if uname -p 2>/dev/null >/dev/null ; then
+               UNAME_MACHINE=`(uname -p) 2>/dev/null`
+               echo ${UNAME_MACHINE}-sni-sysv4
+       else
+               echo ns32k-sni-sysv
+       fi
+       exit 0 ;;
+    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                      # says <Richard.M.Bartel@ccMail.Census.GOV>
+        echo i586-unisys-sysv4
+        exit 0 ;;
+    *:UNIX_System_V:4*:FTX*)
+       # From Gerald Hewes <hewes@openmarket.com>.
+       # How about differentiating between stratus architectures? -djm
+       echo hppa1.1-stratus-sysv4
+       exit 0 ;;
+    *:*:*:FTX*)
+       # From seanf@swdc.stratus.com.
+       echo i860-stratus-sysv4
+       exit 0 ;;
+    *:VOS:*:*)
+       # From Paul.Green@stratus.com.
+       echo hppa1.1-stratus-vos
+       exit 0 ;;
+    mc68*:A/UX:*:*)
+       echo m68k-apple-aux${UNAME_RELEASE}
+       exit 0 ;;
+    news*:NEWS-OS:6*:*)
+       echo mips-sony-newsos6
+       exit 0 ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+       if [ -d /usr/nec ]; then
+               echo mips-nec-sysv${UNAME_RELEASE}
+       else
+               echo mips-unknown-sysv${UNAME_RELEASE}
+       fi
+        exit 0 ;;
+    BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
+       echo powerpc-be-beos
+       exit 0 ;;
+    BeMac:BeOS:*:*)    # BeOS running on Mac or Mac clone, PPC only.
+       echo powerpc-apple-beos
+       exit 0 ;;
+    BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
+       echo i586-pc-beos
+       exit 0 ;;
+    SX-4:SUPER-UX:*:*)
+       echo sx4-nec-superux${UNAME_RELEASE}
+       exit 0 ;;
+    SX-5:SUPER-UX:*:*)
+       echo sx5-nec-superux${UNAME_RELEASE}
+       exit 0 ;;
+    SX-6:SUPER-UX:*:*)
+       echo sx6-nec-superux${UNAME_RELEASE}
+       exit 0 ;;
+    Power*:Rhapsody:*:*)
+       echo powerpc-apple-rhapsody${UNAME_RELEASE}
+       exit 0 ;;
+    *:Rhapsody:*:*)
+       echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+       exit 0 ;;
+    *:Darwin:*:*)
+       UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+       case $UNAME_PROCESSOR in
+           *86) UNAME_PROCESSOR=i686 ;;
+           unknown) UNAME_PROCESSOR=powerpc ;;
+       esac
+       echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+       exit 0 ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+       UNAME_PROCESSOR=`uname -p`
+       if test "$UNAME_PROCESSOR" = "x86"; then
+               UNAME_PROCESSOR=i386
+               UNAME_MACHINE=pc
+       fi
+       echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+       exit 0 ;;
+    *:QNX:*:4*)
+       echo i386-pc-qnx
+       exit 0 ;;
+    NSE-?:NONSTOP_KERNEL:*:*)
+       echo nse-tandem-nsk${UNAME_RELEASE}
+       exit 0 ;;
+    NSR-?:NONSTOP_KERNEL:*:*)
+       echo nsr-tandem-nsk${UNAME_RELEASE}
+       exit 0 ;;
+    *:NonStop-UX:*:*)
+       echo mips-compaq-nonstopux
+       exit 0 ;;
+    BS2000:POSIX*:*:*)
+       echo bs2000-siemens-sysv
+       exit 0 ;;
+    DS/*:UNIX_System_V:*:*)
+       echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+       exit 0 ;;
+    *:Plan9:*:*)
+       # "uname -m" is not consistent, so use $cputype instead. 386
+       # is converted to i386 for consistency with other x86
+       # operating systems.
+       if test "$cputype" = "386"; then
+           UNAME_MACHINE=i386
+       else
+           UNAME_MACHINE="$cputype"
+       fi
+       echo ${UNAME_MACHINE}-unknown-plan9
+       exit 0 ;;
+    *:TOPS-10:*:*)
+       echo pdp10-unknown-tops10
+       exit 0 ;;
+    *:TENEX:*:*)
+       echo pdp10-unknown-tenex
+       exit 0 ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+       echo pdp10-dec-tops20
+       exit 0 ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+       echo pdp10-xkl-tops20
+       exit 0 ;;
+    *:TOPS-20:*:*)
+       echo pdp10-unknown-tops20
+       exit 0 ;;
+    *:ITS:*:*)
+       echo pdp10-unknown-its
+       exit 0 ;;
+    SEI:*:*:SEIUX)
+        echo mips-sei-seiux${UNAME_RELEASE}
+       exit 0 ;;
+    *:DragonFly:*:*)
+       echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+       exit 0 ;;
+    *:*VMS:*:*)
+       UNAME_MACHINE=`(uname -p) 2>/dev/null`
+       case "${UNAME_MACHINE}" in
+           A*) echo alpha-dec-vms && exit 0 ;;
+           I*) echo ia64-dec-vms && exit 0 ;;
+           V*) echo vax-dec-vms && exit 0 ;;
+       esac ;;
+    *:XENIX:*:SysV)
+       echo i386-pc-xenix
+       exit 0 ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+          "4"
+#else
+         ""
+#endif
+         ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+    struct utsname un;
+
+    uname(&un);
+
+    if (strncmp(un.version, "V2", 2) == 0) {
+       printf ("i386-sequent-ptx2\n"); exit (0);
+    }
+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+       printf ("i386-sequent-ptx1\n"); exit (0);
+    }
+    printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD == 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD == 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# else
+    printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+       echo c1-convex-bsd
+       exit 0 ;;
+    c2*)
+       if getsysinfo -f scalar_acc
+       then echo c32-convex-bsd
+       else echo c2-convex-bsd
+       fi
+       exit 0 ;;
+    c34*)
+       echo c34-convex-bsd
+       exit 0 ;;
+    c38*)
+       echo c38-convex-bsd
+       exit 0 ;;
+    c4*)
+       echo c4-convex-bsd
+       exit 0 ;;
+    esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+    ftp://ftp.gnu.org/pub/gnu/config/
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
index 5beb7fa..0f11d78 100644 (file)
@@ -1,5 +1,8 @@
 /* config.h.in.  Generated from configure.ac by autoheader.  */
 
+/* Define to 1 if dietlibc supports C99 */
+#undef ENSC_DIETLIBC_C99
+
 /* define when <ext2fs/ext2_fs.h> is usable */
 #undef ENSC_HAVE_EXT2FS_EXT2_FS_H
 
 /* The number of the vserver syscall */
 #undef ENSC_SYSCALL__NR_vserver
 
+/* Use alternative _syscallX macros */
+#undef ENSC_USE_ALTERNATIVE_SYSCALL_MACROS
+
+/* Define to 1 if you have the declaration of `ADDR_LIMIT_32BIT', and to 0 if
+   you don't. */
+#undef HAVE_DECL_ADDR_LIMIT_32BIT
+
+/* Define to 1 if you have the declaration of `ADDR_LIMIT_3GB', and to 0 if
+   you don't. */
+#undef HAVE_DECL_ADDR_LIMIT_3GB
+
+/* Define to 1 if you have the declaration of `MMAP_PAGE_ZERO', and to 0 if
+   you don't. */
+#undef HAVE_DECL_MMAP_PAGE_ZERO
+
 /* Define to 1 if you have the declaration of `MS_MOVE', and to 0 if you
    don't. */
 #undef HAVE_DECL_MS_MOVE
 
+/* Define to 1 if you have the declaration of `PER_BSD', and to 0 if you
+   don't. */
+#undef HAVE_DECL_PER_BSD
+
+/* Define to 1 if you have the declaration of `PER_HPUX', and to 0 if you
+   don't. */
+#undef HAVE_DECL_PER_HPUX
+
+/* Define to 1 if you have the declaration of `PER_IRIX32', and to 0 if you
+   don't. */
+#undef HAVE_DECL_PER_IRIX32
+
+/* Define to 1 if you have the declaration of `PER_IRIX64', and to 0 if you
+   don't. */
+#undef HAVE_DECL_PER_IRIX64
+
+/* Define to 1 if you have the declaration of `PER_IRIXN32', and to 0 if you
+   don't. */
+#undef HAVE_DECL_PER_IRIXN32
+
+/* Define to 1 if you have the declaration of `PER_ISCR4', and to 0 if you
+   don't. */
+#undef HAVE_DECL_PER_ISCR4
+
+/* Define to 1 if you have the declaration of `PER_LINUX', and to 0 if you
+   don't. */
+#undef HAVE_DECL_PER_LINUX
+
+/* Define to 1 if you have the declaration of `PER_LINUX32', and to 0 if you
+   don't. */
+#undef HAVE_DECL_PER_LINUX32
+
+/* Define to 1 if you have the declaration of `PER_LINUX32_3GB', and to 0 if
+   you don't. */
+#undef HAVE_DECL_PER_LINUX32_3GB
+
+/* Define to 1 if you have the declaration of `PER_LINUX_32BIT', and to 0 if
+   you don't. */
+#undef HAVE_DECL_PER_LINUX_32BIT
+
+/* Define to 1 if you have the declaration of `PER_OSF4', and to 0 if you
+   don't. */
+#undef HAVE_DECL_PER_OSF4
+
+/* Define to 1 if you have the declaration of `PER_OSR5', and to 0 if you
+   don't. */
+#undef HAVE_DECL_PER_OSR5
+
+/* Define to 1 if you have the declaration of `PER_RISCOS', and to 0 if you
+   don't. */
+#undef HAVE_DECL_PER_RISCOS
+
+/* Define to 1 if you have the declaration of `PER_SCOSVR3', and to 0 if you
+   don't. */
+#undef HAVE_DECL_PER_SCOSVR3
+
+/* Define to 1 if you have the declaration of `PER_SOLARIS', and to 0 if you
+   don't. */
+#undef HAVE_DECL_PER_SOLARIS
+
+/* Define to 1 if you have the declaration of `PER_SUNOS', and to 0 if you
+   don't. */
+#undef HAVE_DECL_PER_SUNOS
+
+/* Define to 1 if you have the declaration of `PER_SVR3', and to 0 if you
+   don't. */
+#undef HAVE_DECL_PER_SVR3
+
+/* Define to 1 if you have the declaration of `PER_SVR4', and to 0 if you
+   don't. */
+#undef HAVE_DECL_PER_SVR4
+
+/* Define to 1 if you have the declaration of `PER_UW7', and to 0 if you
+   don't. */
+#undef HAVE_DECL_PER_UW7
+
+/* Define to 1 if you have the declaration of `PER_WYSEV386', and to 0 if you
+   don't. */
+#undef HAVE_DECL_PER_WYSEV386
+
+/* Define to 1 if you have the declaration of `PER_XENIX', and to 0 if you
+   don't. */
+#undef HAVE_DECL_PER_XENIX
+
+/* Define to 1 if you have the declaration of `SHORT_INODE', and to 0 if you
+   don't. */
+#undef HAVE_DECL_SHORT_INODE
+
+/* Define to 1 if you have the declaration of `STICKY_TIMEOUTS', and to 0 if
+   you don't. */
+#undef HAVE_DECL_STICKY_TIMEOUTS
+
+/* Define to 1 if you have the declaration of `WHOLE_SECONDS', and to 0 if you
+   don't. */
+#undef HAVE_DECL_WHOLE_SECONDS
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if the stack is on growing addresses */
+#undef HAVE_GROWING_STACK
+
 /* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
 
 /* Define to 1 if you have the <memory.h> header file. */
 #undef HAVE_MEMORY_H
 
+/* Define to 1 if the system has the type `nid_t'. */
+#undef HAVE_NID_T
+
 /* Define to 1 if you have the <stdint.h> header file. */
 #undef HAVE_STDINT_H
 
 /* Define to 1 if you have the <string.h> header file. */
 #undef HAVE_STRING_H
 
+/* Define to 1 if you have the <sys/capability.h> header file. */
+#undef HAVE_SYS_CAPABILITY_H
+
 /* Define to 1 if you have the <sys/stat.h> header file. */
 #undef HAVE_SYS_STAT_H
 
 /* Define to 1 if you have the ANSI C header files. */
 #undef STDC_HEADERS
 
-/* Enable support for compatibily syscall API */
+/* The utmp gid-number */
+#undef UTMP_GID
+
+/* Enable support for compatibility syscall API */
 #undef VC_ENABLE_API_COMPAT
 
+/* Enable support for filesystem compatibility API */
+#undef VC_ENABLE_API_FSCOMPAT
+
 /* Enable support for old, /proc parsing API */
 #undef VC_ENABLE_API_LEGACY
 
+/* Enable support for network context API */
+#undef VC_ENABLE_API_NET
+
+/* Enable API for a backward compatible /proc parsing */
+#undef VC_ENABLE_API_OLDPROC
+
+/* Enable API for a backward compatible uts handling */
+#undef VC_ENABLE_API_OLDUTS
+
 /* Enable support for API of vserver 1.1.x */
 #undef VC_ENABLE_API_V11
 
+/* Enable support for API of vserver 1.3.x */
+#undef VC_ENABLE_API_V13
+
 /* Version number of package */
 #undef VERSION
 
+/* Use 64bit interface for filesystem operations */
+#undef _FILE_OFFSET_BITS
+
 
 #if defined(__pic__) && defined(__i386) && !defined(ENSC_SYSCALL_TRADITIONAL)
 #  define ENSC_SYSCALL_TRADITIONAL     1
 #endif
+
+#include "compat.h"
+
diff --git a/config.sub b/config.sub
new file mode 100755 (executable)
index 0000000..d8fd2f8
--- /dev/null
@@ -0,0 +1,1566 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+timestamp='2005-02-10'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can.
+#
+# This file 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.
+
+# Please send patches to <config-patches@gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#      CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit 0 ;;
+    --version | -v )
+       echo "$version" ; exit 0 ;;
+    --help | --h* | -h )
+       echo "$usage"; exit 0 ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit 0;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
+  kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+       -sun*os*)
+               # Prevent following clause from handling this invalid input.
+               ;;
+       -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+       -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+       -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+       -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+       -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+       -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+       -apple | -axis | -knuth | -cray)
+               os=
+               basic_machine=$1
+               ;;
+       -sim | -cisco | -oki | -wec | -winbond)
+               os=
+               basic_machine=$1
+               ;;
+       -scout)
+               ;;
+       -wrs)
+               os=-vxworks
+               basic_machine=$1
+               ;;
+       -chorusos*)
+               os=-chorusos
+               basic_machine=$1
+               ;;
+       -chorusrdb)
+               os=-chorusrdb
+               basic_machine=$1
+               ;;
+       -hiux*)
+               os=-hiuxwe2
+               ;;
+       -sco5)
+               os=-sco3.2v5
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco4)
+               os=-sco3.2v4
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco3.2.[4-9]*)
+               os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco3.2v[4-9]*)
+               # Don't forget version if it is 3.2v4 or newer.
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco*)
+               os=-sco3.2v2
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -udk*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -isc)
+               os=-isc2.2
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -clix*)
+               basic_machine=clipper-intergraph
+               ;;
+       -isc*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -lynx*)
+               os=-lynxos
+               ;;
+       -ptx*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+               ;;
+       -windowsnt*)
+               os=`echo $os | sed -e 's/windowsnt/winnt/'`
+               ;;
+       -psos*)
+               os=-psos
+               ;;
+       -mint | -mint[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+       # Recognize the basic CPU types without company name.
+       # Some are omitted here because they have special meanings below.
+       1750a | 580 \
+       | a29k \
+       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+       | am33_2.0 \
+       | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+       | c4x | clipper \
+       | d10v | d30v | dlx | dsp16xx \
+       | fr30 | frv \
+       | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+       | i370 | i860 | i960 | ia64 \
+       | ip2k | iq2000 \
+       | m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \
+       | mips | mipsbe | mipseb | mipsel | mipsle \
+       | mips16 \
+       | mips64 | mips64el \
+       | mips64vr | mips64vrel \
+       | mips64orion | mips64orionel \
+       | mips64vr4100 | mips64vr4100el \
+       | mips64vr4300 | mips64vr4300el \
+       | mips64vr5000 | mips64vr5000el \
+       | mipsisa32 | mipsisa32el \
+       | mipsisa32r2 | mipsisa32r2el \
+       | mipsisa64 | mipsisa64el \
+       | mipsisa64r2 | mipsisa64r2el \
+       | mipsisa64sb1 | mipsisa64sb1el \
+       | mipsisa64sr71k | mipsisa64sr71kel \
+       | mipstx39 | mipstx39el \
+       | mn10200 | mn10300 \
+       | msp430 \
+       | ns16k | ns32k \
+       | openrisc | or32 \
+       | pdp10 | pdp11 | pj | pjl \
+       | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+       | pyramid \
+       | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+       | sh64 | sh64le \
+       | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \
+       | strongarm \
+       | tahoe | thumb | tic4x | tic80 | tron \
+       | v850 | v850e \
+       | we32k \
+       | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
+       | z8k)
+               basic_machine=$basic_machine-unknown
+               ;;
+       m6811 | m68hc11 | m6812 | m68hc12)
+               # Motorola 68HC11/12.
+               basic_machine=$basic_machine-unknown
+               os=-none
+               ;;
+       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+               ;;
+
+       # We use `pc' rather than `unknown'
+       # because (1) that's what they normally are, and
+       # (2) the word "unknown" tends to confuse beginning users.
+       i*86 | x86_64)
+         basic_machine=$basic_machine-pc
+         ;;
+       # Object if more than one company name word.
+       *-*-*)
+               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+               exit 1
+               ;;
+       # Recognize the basic CPU types with company name.
+       580-* \
+       | a29k-* \
+       | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+       | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+       | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+       | avr-* \
+       | bs2000-* \
+       | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+       | clipper-* | craynv-* | cydra-* \
+       | d10v-* | d30v-* | dlx-* \
+       | elxsi-* \
+       | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+       | h8300-* | h8500-* \
+       | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+       | i*86-* | i860-* | i960-* | ia64-* \
+       | ip2k-* | iq2000-* \
+       | m32r-* | m32rle-* \
+       | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+       | m88110-* | m88k-* | maxq-* | mcore-* \
+       | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+       | mips16-* \
+       | mips64-* | mips64el-* \
+       | mips64vr-* | mips64vrel-* \
+       | mips64orion-* | mips64orionel-* \
+       | mips64vr4100-* | mips64vr4100el-* \
+       | mips64vr4300-* | mips64vr4300el-* \
+       | mips64vr5000-* | mips64vr5000el-* \
+       | mipsisa32-* | mipsisa32el-* \
+       | mipsisa32r2-* | mipsisa32r2el-* \
+       | mipsisa64-* | mipsisa64el-* \
+       | mipsisa64r2-* | mipsisa64r2el-* \
+       | mipsisa64sb1-* | mipsisa64sb1el-* \
+       | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+       | mipstx39-* | mipstx39el-* \
+       | mmix-* \
+       | msp430-* \
+       | none-* | np1-* | ns16k-* | ns32k-* \
+       | orion-* \
+       | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+       | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+       | pyramid-* \
+       | romp-* | rs6000-* \
+       | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+       | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+       | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
+       | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+       | tahoe-* | thumb-* \
+       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+       | tron-* \
+       | v850-* | v850e-* | vax-* \
+       | we32k-* \
+       | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
+       | xstormy16-* | xtensa-* \
+       | ymp-* \
+       | z8k-*)
+               ;;
+       # Recognize the various machine names and aliases which stand
+       # for a CPU type and a company and sometimes even an OS.
+       386bsd)
+               basic_machine=i386-unknown
+               os=-bsd
+               ;;
+       3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+               basic_machine=m68000-att
+               ;;
+       3b*)
+               basic_machine=we32k-att
+               ;;
+       a29khif)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       abacus)
+               basic_machine=abacus-unknown
+               ;;
+       adobe68k)
+               basic_machine=m68010-adobe
+               os=-scout
+               ;;
+       alliant | fx80)
+               basic_machine=fx80-alliant
+               ;;
+       altos | altos3068)
+               basic_machine=m68k-altos
+               ;;
+       am29k)
+               basic_machine=a29k-none
+               os=-bsd
+               ;;
+       amd64)
+               basic_machine=x86_64-pc
+               ;;
+       amd64-*)
+               basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       amdahl)
+               basic_machine=580-amdahl
+               os=-sysv
+               ;;
+       amiga | amiga-*)
+               basic_machine=m68k-unknown
+               ;;
+       amigaos | amigados)
+               basic_machine=m68k-unknown
+               os=-amigaos
+               ;;
+       amigaunix | amix)
+               basic_machine=m68k-unknown
+               os=-sysv4
+               ;;
+       apollo68)
+               basic_machine=m68k-apollo
+               os=-sysv
+               ;;
+       apollo68bsd)
+               basic_machine=m68k-apollo
+               os=-bsd
+               ;;
+       aux)
+               basic_machine=m68k-apple
+               os=-aux
+               ;;
+       balance)
+               basic_machine=ns32k-sequent
+               os=-dynix
+               ;;
+       c90)
+               basic_machine=c90-cray
+               os=-unicos
+               ;;
+       convex-c1)
+               basic_machine=c1-convex
+               os=-bsd
+               ;;
+       convex-c2)
+               basic_machine=c2-convex
+               os=-bsd
+               ;;
+       convex-c32)
+               basic_machine=c32-convex
+               os=-bsd
+               ;;
+       convex-c34)
+               basic_machine=c34-convex
+               os=-bsd
+               ;;
+       convex-c38)
+               basic_machine=c38-convex
+               os=-bsd
+               ;;
+       cray | j90)
+               basic_machine=j90-cray
+               os=-unicos
+               ;;
+       craynv)
+               basic_machine=craynv-cray
+               os=-unicosmp
+               ;;
+       cr16c)
+               basic_machine=cr16c-unknown
+               os=-elf
+               ;;
+       crds | unos)
+               basic_machine=m68k-crds
+               ;;
+       crisv32 | crisv32-* | etraxfs*)
+               basic_machine=crisv32-axis
+               ;;
+       cris | cris-* | etrax*)
+               basic_machine=cris-axis
+               ;;
+       crx)
+               basic_machine=crx-unknown
+               os=-elf
+               ;;
+       da30 | da30-*)
+               basic_machine=m68k-da30
+               ;;
+       decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+               basic_machine=mips-dec
+               ;;
+       decsystem10* | dec10*)
+               basic_machine=pdp10-dec
+               os=-tops10
+               ;;
+       decsystem20* | dec20*)
+               basic_machine=pdp10-dec
+               os=-tops20
+               ;;
+       delta | 3300 | motorola-3300 | motorola-delta \
+             | 3300-motorola | delta-motorola)
+               basic_machine=m68k-motorola
+               ;;
+       delta88)
+               basic_machine=m88k-motorola
+               os=-sysv3
+               ;;
+       djgpp)
+               basic_machine=i586-pc
+               os=-msdosdjgpp
+               ;;
+       dpx20 | dpx20-*)
+               basic_machine=rs6000-bull
+               os=-bosx
+               ;;
+       dpx2* | dpx2*-bull)
+               basic_machine=m68k-bull
+               os=-sysv3
+               ;;
+       ebmon29k)
+               basic_machine=a29k-amd
+               os=-ebmon
+               ;;
+       elxsi)
+               basic_machine=elxsi-elxsi
+               os=-bsd
+               ;;
+       encore | umax | mmax)
+               basic_machine=ns32k-encore
+               ;;
+       es1800 | OSE68k | ose68k | ose | OSE)
+               basic_machine=m68k-ericsson
+               os=-ose
+               ;;
+       fx2800)
+               basic_machine=i860-alliant
+               ;;
+       genix)
+               basic_machine=ns32k-ns
+               ;;
+       gmicro)
+               basic_machine=tron-gmicro
+               os=-sysv
+               ;;
+       go32)
+               basic_machine=i386-pc
+               os=-go32
+               ;;
+       h3050r* | hiux*)
+               basic_machine=hppa1.1-hitachi
+               os=-hiuxwe2
+               ;;
+       h8300hms)
+               basic_machine=h8300-hitachi
+               os=-hms
+               ;;
+       h8300xray)
+               basic_machine=h8300-hitachi
+               os=-xray
+               ;;
+       h8500hms)
+               basic_machine=h8500-hitachi
+               os=-hms
+               ;;
+       harris)
+               basic_machine=m88k-harris
+               os=-sysv3
+               ;;
+       hp300-*)
+               basic_machine=m68k-hp
+               ;;
+       hp300bsd)
+               basic_machine=m68k-hp
+               os=-bsd
+               ;;
+       hp300hpux)
+               basic_machine=m68k-hp
+               os=-hpux
+               ;;
+       hp3k9[0-9][0-9] | hp9[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hp9k2[0-9][0-9] | hp9k31[0-9])
+               basic_machine=m68000-hp
+               ;;
+       hp9k3[2-9][0-9])
+               basic_machine=m68k-hp
+               ;;
+       hp9k6[0-9][0-9] | hp6[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hp9k7[0-79][0-9] | hp7[0-79][0-9])
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k78[0-9] | hp78[0-9])
+               # FIXME: really hppa2.0-hp
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+               # FIXME: really hppa2.0-hp
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[0-9][13679] | hp8[0-9][13679])
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[0-9][0-9] | hp8[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hppa-next)
+               os=-nextstep3
+               ;;
+       hppaosf)
+               basic_machine=hppa1.1-hp
+               os=-osf
+               ;;
+       hppro)
+               basic_machine=hppa1.1-hp
+               os=-proelf
+               ;;
+       i370-ibm* | ibm*)
+               basic_machine=i370-ibm
+               ;;
+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+       i*86v32)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv32
+               ;;
+       i*86v4*)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv4
+               ;;
+       i*86v)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv
+               ;;
+       i*86sol2)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-solaris2
+               ;;
+       i386mach)
+               basic_machine=i386-mach
+               os=-mach
+               ;;
+       i386-vsta | vsta)
+               basic_machine=i386-unknown
+               os=-vsta
+               ;;
+       iris | iris4d)
+               basic_machine=mips-sgi
+               case $os in
+                   -irix*)
+                       ;;
+                   *)
+                       os=-irix4
+                       ;;
+               esac
+               ;;
+       isi68 | isi)
+               basic_machine=m68k-isi
+               os=-sysv
+               ;;
+       m88k-omron*)
+               basic_machine=m88k-omron
+               ;;
+       magnum | m3230)
+               basic_machine=mips-mips
+               os=-sysv
+               ;;
+       merlin)
+               basic_machine=ns32k-utek
+               os=-sysv
+               ;;
+       mingw32)
+               basic_machine=i386-pc
+               os=-mingw32
+               ;;
+       miniframe)
+               basic_machine=m68000-convergent
+               ;;
+       *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
+       mips3*-*)
+               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+               ;;
+       mips3*)
+               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+               ;;
+       monitor)
+               basic_machine=m68k-rom68k
+               os=-coff
+               ;;
+       morphos)
+               basic_machine=powerpc-unknown
+               os=-morphos
+               ;;
+       msdos)
+               basic_machine=i386-pc
+               os=-msdos
+               ;;
+       mvs)
+               basic_machine=i370-ibm
+               os=-mvs
+               ;;
+       ncr3000)
+               basic_machine=i486-ncr
+               os=-sysv4
+               ;;
+       netbsd386)
+               basic_machine=i386-unknown
+               os=-netbsd
+               ;;
+       netwinder)
+               basic_machine=armv4l-rebel
+               os=-linux
+               ;;
+       news | news700 | news800 | news900)
+               basic_machine=m68k-sony
+               os=-newsos
+               ;;
+       news1000)
+               basic_machine=m68030-sony
+               os=-newsos
+               ;;
+       news-3600 | risc-news)
+               basic_machine=mips-sony
+               os=-newsos
+               ;;
+       necv70)
+               basic_machine=v70-nec
+               os=-sysv
+               ;;
+       next | m*-next )
+               basic_machine=m68k-next
+               case $os in
+                   -nextstep* )
+                       ;;
+                   -ns2*)
+                     os=-nextstep2
+                       ;;
+                   *)
+                     os=-nextstep3
+                       ;;
+               esac
+               ;;
+       nh3000)
+               basic_machine=m68k-harris
+               os=-cxux
+               ;;
+       nh[45]000)
+               basic_machine=m88k-harris
+               os=-cxux
+               ;;
+       nindy960)
+               basic_machine=i960-intel
+               os=-nindy
+               ;;
+       mon960)
+               basic_machine=i960-intel
+               os=-mon960
+               ;;
+       nonstopux)
+               basic_machine=mips-compaq
+               os=-nonstopux
+               ;;
+       np1)
+               basic_machine=np1-gould
+               ;;
+       nsr-tandem)
+               basic_machine=nsr-tandem
+               ;;
+       op50n-* | op60c-*)
+               basic_machine=hppa1.1-oki
+               os=-proelf
+               ;;
+       or32 | or32-*)
+               basic_machine=or32-unknown
+               os=-coff
+               ;;
+       os400)
+               basic_machine=powerpc-ibm
+               os=-os400
+               ;;
+       OSE68000 | ose68000)
+               basic_machine=m68000-ericsson
+               os=-ose
+               ;;
+       os68k)
+               basic_machine=m68k-none
+               os=-os68k
+               ;;
+       pa-hitachi)
+               basic_machine=hppa1.1-hitachi
+               os=-hiuxwe2
+               ;;
+       paragon)
+               basic_machine=i860-intel
+               os=-osf
+               ;;
+       pbd)
+               basic_machine=sparc-tti
+               ;;
+       pbb)
+               basic_machine=m68k-tti
+               ;;
+       pc532 | pc532-*)
+               basic_machine=ns32k-pc532
+               ;;
+       pentium | p5 | k5 | k6 | nexgen | viac3)
+               basic_machine=i586-pc
+               ;;
+       pentiumpro | p6 | 6x86 | athlon | athlon_*)
+               basic_machine=i686-pc
+               ;;
+       pentiumii | pentium2 | pentiumiii | pentium3)
+               basic_machine=i686-pc
+               ;;
+       pentium4)
+               basic_machine=i786-pc
+               ;;
+       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+               basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentiumpro-* | p6-* | 6x86-* | athlon-*)
+               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentium4-*)
+               basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pn)
+               basic_machine=pn-gould
+               ;;
+       power)  basic_machine=power-ibm
+               ;;
+       ppc)    basic_machine=powerpc-unknown
+               ;;
+       ppc-*)  basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppcle | powerpclittle | ppc-le | powerpc-little)
+               basic_machine=powerpcle-unknown
+               ;;
+       ppcle-* | powerpclittle-*)
+               basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppc64)  basic_machine=powerpc64-unknown
+               ;;
+       ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+               basic_machine=powerpc64le-unknown
+               ;;
+       ppc64le-* | powerpc64little-*)
+               basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ps2)
+               basic_machine=i386-ibm
+               ;;
+       pw32)
+               basic_machine=i586-unknown
+               os=-pw32
+               ;;
+       rom68k)
+               basic_machine=m68k-rom68k
+               os=-coff
+               ;;
+       rm[46]00)
+               basic_machine=mips-siemens
+               ;;
+       rtpc | rtpc-*)
+               basic_machine=romp-ibm
+               ;;
+       s390 | s390-*)
+               basic_machine=s390-ibm
+               ;;
+       s390x | s390x-*)
+               basic_machine=s390x-ibm
+               ;;
+       sa29200)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       sb1)
+               basic_machine=mipsisa64sb1-unknown
+               ;;
+       sb1el)
+               basic_machine=mipsisa64sb1el-unknown
+               ;;
+       sei)
+               basic_machine=mips-sei
+               os=-seiux
+               ;;
+       sequent)
+               basic_machine=i386-sequent
+               ;;
+       sh)
+               basic_machine=sh-hitachi
+               os=-hms
+               ;;
+       sh64)
+               basic_machine=sh64-unknown
+               ;;
+       sparclite-wrs | simso-wrs)
+               basic_machine=sparclite-wrs
+               os=-vxworks
+               ;;
+       sps7)
+               basic_machine=m68k-bull
+               os=-sysv2
+               ;;
+       spur)
+               basic_machine=spur-unknown
+               ;;
+       st2000)
+               basic_machine=m68k-tandem
+               ;;
+       stratus)
+               basic_machine=i860-stratus
+               os=-sysv4
+               ;;
+       sun2)
+               basic_machine=m68000-sun
+               ;;
+       sun2os3)
+               basic_machine=m68000-sun
+               os=-sunos3
+               ;;
+       sun2os4)
+               basic_machine=m68000-sun
+               os=-sunos4
+               ;;
+       sun3os3)
+               basic_machine=m68k-sun
+               os=-sunos3
+               ;;
+       sun3os4)
+               basic_machine=m68k-sun
+               os=-sunos4
+               ;;
+       sun4os3)
+               basic_machine=sparc-sun
+               os=-sunos3
+               ;;
+       sun4os4)
+               basic_machine=sparc-sun
+               os=-sunos4
+               ;;
+       sun4sol2)
+               basic_machine=sparc-sun
+               os=-solaris2
+               ;;
+       sun3 | sun3-*)
+               basic_machine=m68k-sun
+               ;;
+       sun4)
+               basic_machine=sparc-sun
+               ;;
+       sun386 | sun386i | roadrunner)
+               basic_machine=i386-sun
+               ;;
+       sv1)
+               basic_machine=sv1-cray
+               os=-unicos
+               ;;
+       symmetry)
+               basic_machine=i386-sequent
+               os=-dynix
+               ;;
+       t3e)
+               basic_machine=alphaev5-cray
+               os=-unicos
+               ;;
+       t90)
+               basic_machine=t90-cray
+               os=-unicos
+               ;;
+       tic54x | c54x*)
+               basic_machine=tic54x-unknown
+               os=-coff
+               ;;
+       tic55x | c55x*)
+               basic_machine=tic55x-unknown
+               os=-coff
+               ;;
+       tic6x | c6x*)
+               basic_machine=tic6x-unknown
+               os=-coff
+               ;;
+       tx39)
+               basic_machine=mipstx39-unknown
+               ;;
+       tx39el)
+               basic_machine=mipstx39el-unknown
+               ;;
+       toad1)
+               basic_machine=pdp10-xkl
+               os=-tops20
+               ;;
+       tower | tower-32)
+               basic_machine=m68k-ncr
+               ;;
+       tpf)
+               basic_machine=s390x-ibm
+               os=-tpf
+               ;;
+       udi29k)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       ultra3)
+               basic_machine=a29k-nyu
+               os=-sym1
+               ;;
+       v810 | necv810)
+               basic_machine=v810-nec
+               os=-none
+               ;;
+       vaxv)
+               basic_machine=vax-dec
+               os=-sysv
+               ;;
+       vms)
+               basic_machine=vax-dec
+               os=-vms
+               ;;
+       vpp*|vx|vx-*)
+               basic_machine=f301-fujitsu
+               ;;
+       vxworks960)
+               basic_machine=i960-wrs
+               os=-vxworks
+               ;;
+       vxworks68)
+               basic_machine=m68k-wrs
+               os=-vxworks
+               ;;
+       vxworks29k)
+               basic_machine=a29k-wrs
+               os=-vxworks
+               ;;
+       w65*)
+               basic_machine=w65-wdc
+               os=-none
+               ;;
+       w89k-*)
+               basic_machine=hppa1.1-winbond
+               os=-proelf
+               ;;
+       xbox)
+               basic_machine=i686-pc
+               os=-mingw32
+               ;;
+       xps | xps100)
+               basic_machine=xps100-honeywell
+               ;;
+       ymp)
+               basic_machine=ymp-cray
+               os=-unicos
+               ;;
+       z8k-*-coff)
+               basic_machine=z8k-unknown
+               os=-sim
+               ;;
+       none)
+               basic_machine=none-none
+               os=-none
+               ;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+       w89k)
+               basic_machine=hppa1.1-winbond
+               ;;
+       op50n)
+               basic_machine=hppa1.1-oki
+               ;;
+       op60c)
+               basic_machine=hppa1.1-oki
+               ;;
+       romp)
+               basic_machine=romp-ibm
+               ;;
+       mmix)
+               basic_machine=mmix-knuth
+               ;;
+       rs6000)
+               basic_machine=rs6000-ibm
+               ;;
+       vax)
+               basic_machine=vax-dec
+               ;;
+       pdp10)
+               # there are many clones, so DEC is not a safe bet
+               basic_machine=pdp10-unknown
+               ;;
+       pdp11)
+               basic_machine=pdp11-dec
+               ;;
+       we32k)
+               basic_machine=we32k-att
+               ;;
+       sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
+               basic_machine=sh-unknown
+               ;;
+       sh64)
+               basic_machine=sh64-unknown
+               ;;
+       sparc | sparcv8 | sparcv9 | sparcv9b)
+               basic_machine=sparc-sun
+               ;;
+       cydra)
+               basic_machine=cydra-cydrome
+               ;;
+       orion)
+               basic_machine=orion-highlevel
+               ;;
+       orion105)
+               basic_machine=clipper-highlevel
+               ;;
+       mac | mpw | mac-mpw)
+               basic_machine=m68k-apple
+               ;;
+       pmac | pmac-mpw)
+               basic_machine=powerpc-apple
+               ;;
+       *-unknown)
+               # Make sure to match an already-canonicalized machine name.
+               ;;
+       *)
+               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+               exit 1
+               ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+       *-digital*)
+               basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+               ;;
+       *-commodore*)
+               basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+               ;;
+       *)
+               ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+        # First match some system type aliases
+        # that might get confused with valid system types.
+       # -solaris* is a basic system type, with this one exception.
+       -solaris1 | -solaris1.*)
+               os=`echo $os | sed -e 's|solaris1|sunos4|'`
+               ;;
+       -solaris)
+               os=-solaris2
+               ;;
+       -svr4*)
+               os=-sysv4
+               ;;
+       -unixware*)
+               os=-sysv4.2uw
+               ;;
+       -gnu/linux*)
+               os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+               ;;
+       # First accept the basic system types.
+       # The portable systems comes first.
+       # Each alternative MUST END IN A *, to match a version number.
+       # -sysv* is not here because it comes later, after sysvr4.
+       -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+             | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+             | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+             | -aos* \
+             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+             | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+             | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
+             | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+             | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+             | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+             | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+             | -chorusos* | -chorusrdb* \
+             | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+             | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
+             | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+             | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+             | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+             | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+             | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+             | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*)
+       # Remember, each alternative MUST END IN *, to match a version number.
+               ;;
+       -qnx*)
+               case $basic_machine in
+                   x86-* | i*86-*)
+                       ;;
+                   *)
+                       os=-nto$os
+                       ;;
+               esac
+               ;;
+       -nto-qnx*)
+               ;;
+       -nto*)
+               os=`echo $os | sed -e 's|nto|nto-qnx|'`
+               ;;
+       -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+             | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+             | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+               ;;
+       -mac*)
+               os=`echo $os | sed -e 's|mac|macos|'`
+               ;;
+       -linux-dietlibc)
+               os=-linux-dietlibc
+               ;;
+       -linux*)
+               os=`echo $os | sed -e 's|linux|linux-gnu|'`
+               ;;
+       -sunos5*)
+               os=`echo $os | sed -e 's|sunos5|solaris2|'`
+               ;;
+       -sunos6*)
+               os=`echo $os | sed -e 's|sunos6|solaris3|'`
+               ;;
+       -opened*)
+               os=-openedition
+               ;;
+        -os400*)
+               os=-os400
+               ;;
+       -wince*)
+               os=-wince
+               ;;
+       -osfrose*)
+               os=-osfrose
+               ;;
+       -osf*)
+               os=-osf
+               ;;
+       -utek*)
+               os=-bsd
+               ;;
+       -dynix*)
+               os=-bsd
+               ;;
+       -acis*)
+               os=-aos
+               ;;
+       -atheos*)
+               os=-atheos
+               ;;
+       -syllable*)
+               os=-syllable
+               ;;
+       -386bsd)
+               os=-bsd
+               ;;
+       -ctix* | -uts*)
+               os=-sysv
+               ;;
+       -nova*)
+               os=-rtmk-nova
+               ;;
+       -ns2 )
+               os=-nextstep2
+               ;;
+       -nsk*)
+               os=-nsk
+               ;;
+       # Preserve the version number of sinix5.
+       -sinix5.*)
+               os=`echo $os | sed -e 's|sinix|sysv|'`
+               ;;
+       -sinix*)
+               os=-sysv4
+               ;;
+        -tpf*)
+               os=-tpf
+               ;;
+       -triton*)
+               os=-sysv3
+               ;;
+       -oss*)
+               os=-sysv3
+               ;;
+       -svr4)
+               os=-sysv4
+               ;;
+       -svr3)
+               os=-sysv3
+               ;;
+       -sysvr4)
+               os=-sysv4
+               ;;
+       # This must come after -sysvr4.
+       -sysv*)
+               ;;
+       -ose*)
+               os=-ose
+               ;;
+       -es1800*)
+               os=-ose
+               ;;
+       -xenix)
+               os=-xenix
+               ;;
+       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+               os=-mint
+               ;;
+       -aros*)
+               os=-aros
+               ;;
+       -kaos*)
+               os=-kaos
+               ;;
+       -zvmoe)
+               os=-zvmoe
+               ;;
+       -none)
+               ;;
+       *)
+               # Get rid of the `-' at the beginning of $os.
+               os=`echo $os | sed 's/[^-]*-//'`
+               echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+               exit 1
+               ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+       *-acorn)
+               os=-riscix1.2
+               ;;
+       arm*-rebel)
+               os=-linux
+               ;;
+       arm*-semi)
+               os=-aout
+               ;;
+    c4x-* | tic4x-*)
+        os=-coff
+        ;;
+       # This must come before the *-dec entry.
+       pdp10-*)
+               os=-tops20
+               ;;
+       pdp11-*)
+               os=-none
+               ;;
+       *-dec | vax-*)
+               os=-ultrix4.2
+               ;;
+       m68*-apollo)
+               os=-domain
+               ;;
+       i386-sun)
+               os=-sunos4.0.2
+               ;;
+       m68000-sun)
+               os=-sunos3
+               # This also exists in the configure program, but was not the
+               # default.
+               # os=-sunos4
+               ;;
+       m68*-cisco)
+               os=-aout
+               ;;
+       mips*-cisco)
+               os=-elf
+               ;;
+       mips*-*)
+               os=-elf
+               ;;
+       or32-*)
+               os=-coff
+               ;;
+       *-tti)  # must be before sparc entry or we get the wrong os.
+               os=-sysv3
+               ;;
+       sparc-* | *-sun)
+               os=-sunos4.1.1
+               ;;
+       *-be)
+               os=-beos
+               ;;
+       *-ibm)
+               os=-aix
+               ;;
+       *-knuth)
+               os=-mmixware
+               ;;
+       *-wec)
+               os=-proelf
+               ;;
+       *-winbond)
+               os=-proelf
+               ;;
+       *-oki)
+               os=-proelf
+               ;;
+       *-hp)
+               os=-hpux
+               ;;
+       *-hitachi)
+               os=-hiux
+               ;;
+       i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+               os=-sysv
+               ;;
+       *-cbm)
+               os=-amigaos
+               ;;
+       *-dg)
+               os=-dgux
+               ;;
+       *-dolphin)
+               os=-sysv3
+               ;;
+       m68k-ccur)
+               os=-rtu
+               ;;
+       m88k-omron*)
+               os=-luna
+               ;;
+       *-next )
+               os=-nextstep
+               ;;
+       *-sequent)
+               os=-ptx
+               ;;
+       *-crds)
+               os=-unos
+               ;;
+       *-ns)
+               os=-genix
+               ;;
+       i370-*)
+               os=-mvs
+               ;;
+       *-next)
+               os=-nextstep3
+               ;;
+       *-gould)
+               os=-sysv
+               ;;
+       *-highlevel)
+               os=-bsd
+               ;;
+       *-encore)
+               os=-bsd
+               ;;
+       *-sgi)
+               os=-irix
+               ;;
+       *-siemens)
+               os=-sysv4
+               ;;
+       *-masscomp)
+               os=-rtu
+               ;;
+       f30[01]-fujitsu | f700-fujitsu)
+               os=-uxpv
+               ;;
+       *-rom68k)
+               os=-coff
+               ;;
+       *-*bug)
+               os=-coff
+               ;;
+       *-apple)
+               os=-macos
+               ;;
+       *-atari*)
+               os=-mint
+               ;;
+       *)
+               os=-none
+               ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+       *-unknown)
+               case $os in
+                       -riscix*)
+                               vendor=acorn
+                               ;;
+                       -sunos*)
+                               vendor=sun
+                               ;;
+                       -aix*)
+                               vendor=ibm
+                               ;;
+                       -beos*)
+                               vendor=be
+                               ;;
+                       -hpux*)
+                               vendor=hp
+                               ;;
+                       -mpeix*)
+                               vendor=hp
+                               ;;
+                       -hiux*)
+                               vendor=hitachi
+                               ;;
+                       -unos*)
+                               vendor=crds
+                               ;;
+                       -dgux*)
+                               vendor=dg
+                               ;;
+                       -luna*)
+                               vendor=omron
+                               ;;
+                       -genix*)
+                               vendor=ns
+                               ;;
+                       -mvs* | -opened*)
+                               vendor=ibm
+                               ;;
+                       -os400*)
+                               vendor=ibm
+                               ;;
+                       -ptx*)
+                               vendor=sequent
+                               ;;
+                       -tpf*)
+                               vendor=ibm
+                               ;;
+                       -vxsim* | -vxworks* | -windiss*)
+                               vendor=wrs
+                               ;;
+                       -aux*)
+                               vendor=apple
+                               ;;
+                       -hms*)
+                               vendor=hitachi
+                               ;;
+                       -mpw* | -macos*)
+                               vendor=apple
+                               ;;
+                       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+                               vendor=atari
+                               ;;
+                       -vos*)
+                               vendor=stratus
+                               ;;
+               esac
+               basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+               ;;
+esac
+
+echo $basic_machine$os
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
index eb2a46c..ea85acf 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.59 for util-vserver 0.30.
+# Generated by GNU Autoconf 2.59 for util-vserver 0.30.208.
 #
 # Report bugs to <enrico.scholz@informatik.tu-chemnitz.de>.
 #
@@ -243,6 +243,160 @@ IFS="     $as_nl"
 $as_unset CDPATH
 
 
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','`
+  ;;
+esac
+
+echo=${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 <<EOF
+$*
+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 "$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 &&
+       echo_test_string="`eval $cmd`" &&
+       (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.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+   ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
+fi
+
+
+
+
+tagnames=${tagnames+${tagnames},}CXX
+
+tagnames=${tagnames+${tagnames},}F77
+
 # Name of the host.
 # hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
 # so uname gets run too.
@@ -269,8 +423,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='util-vserver'
 PACKAGE_TARNAME='util-vserver'
-PACKAGE_VERSION='0.30'
-PACKAGE_STRING='util-vserver 0.30'
+PACKAGE_VERSION='0.30.208'
+PACKAGE_STRING='util-vserver 0.30.208'
 PACKAGE_BUGREPORT='enrico.scholz@informatik.tu-chemnitz.de'
 
 ac_unique_file="src/capchroot.c"
@@ -311,7 +465,7 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CC CFLAGS ac_ct_CC CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE LN_S RANLIB ac_ct_RANLIB kernelincludedir vserverdir CVS2CL_TAG CVS2CL HAVE_CVS2CL_TRUE HAVE_CVS2CL_FALSE RCS2LOG HAVE_RCS2LOG_TRUE HAVE_RCS2LOG_FALSE ENSC_ENABLE_LINUXCONF_TRUE ENSC_ENABLE_LINUXCONF_FALSE ENSC_ENABLE_INTERNAL_HEADERS_TRUE ENSC_ENABLE_INTERNAL_HEADERS_FALSE CPP EGREP CXXCPP LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT build build_cpu build_vendor build_os host host_cpu host_vendor host_os GPG_KEY CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CC CFLAGS ac_ct_CC CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE LN_S ENSC_HAVE_CXX_COMPILER_TRUE ENSC_HAVE_CXX_COMPILER_FALSE ENSC_HAVE_C99_COMPILER_TRUE ENSC_HAVE_C99_COMPILER_FALSE ENSC_PATHPROG_SED CAT CHOWN CMP CP DIRNAME EGREP ENV GREP LN MKDIR MKFIFO MKTEMP MOUNT MV NICE PS RM RMDIR SED SH TAC TAR TOUCH TTY UMOUNT WC IP IPTABLES MODPROBE NAMEIF NOHUP RMMOD VCONFIG WGET DOXYGEN XSLTP XSLTPROC HAVE_XSLTP_TRUE HAVE_XSLTP_FALSE HAVE_XSLTPROC_TRUE HAVE_XSLTPROC_FALSE LIB_DEBUG_CPPFLAGS ENSC_USE_EXPENSIVE_TESTS initrddir RELEASE_CPPFLAGS DIET DIETFLAGS USE_DIETLIBC_TRUE USE_DIETLIBC_FALSE USE_DIETLIBC_COMPAT_TRUE USE_DIETLIBC_COMPAT_FALSE ENSC_USE_DIETLIBC_TRUE ENSC_USE_DIETLIBC_FALSE ENSC_USE_GLIBC_TRUE ENSC_USE_GLIBC_FALSE ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL kernelincludedir vserverdir CVS2CL_TAG CVS2CL HAVE_CVS2CL_TRUE HAVE_CVS2CL_FALSE RCS2LOG HAVE_RCS2LOG_TRUE HAVE_RCS2LOG_FALSE ENSC_ENABLE_INTERNAL_HEADERS_TRUE ENSC_ENABLE_INTERNAL_HEADERS_FALSE ENSC_HAVE_BEECRYPT_TRUE ENSC_HAVE_BEECRYPT_FALSE ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE LIBOBJS LTLIBOBJS'
 ac_subst_files=''
 
 # Initialize some variables set by options.
@@ -776,6 +930,14 @@ ac_env_CFLAGS_set=${CFLAGS+set}
 ac_env_CFLAGS_value=$CFLAGS
 ac_cv_env_CFLAGS_set=${CFLAGS+set}
 ac_cv_env_CFLAGS_value=$CFLAGS
+ac_env_DIET_set=${DIET+set}
+ac_env_DIET_value=$DIET
+ac_cv_env_DIET_set=${DIET+set}
+ac_cv_env_DIET_value=$DIET
+ac_env_DIETFLAGS_set=${DIETFLAGS+set}
+ac_env_DIETFLAGS_value=$DIETFLAGS
+ac_cv_env_DIETFLAGS_set=${DIETFLAGS+set}
+ac_cv_env_DIETFLAGS_value=$DIETFLAGS
 ac_env_CPP_set=${CPP+set}
 ac_env_CPP_value=$CPP
 ac_cv_env_CPP_set=${CPP+set}
@@ -784,6 +946,14 @@ ac_env_CXXCPP_set=${CXXCPP+set}
 ac_env_CXXCPP_value=$CXXCPP
 ac_cv_env_CXXCPP_set=${CXXCPP+set}
 ac_cv_env_CXXCPP_value=$CXXCPP
+ac_env_F77_set=${F77+set}
+ac_env_F77_value=$F77
+ac_cv_env_F77_set=${F77+set}
+ac_cv_env_F77_value=$F77
+ac_env_FFLAGS_set=${FFLAGS+set}
+ac_env_FFLAGS_value=$FFLAGS
+ac_cv_env_FFLAGS_set=${FFLAGS+set}
+ac_cv_env_FFLAGS_value=$FFLAGS
 
 #
 # Report the --help message.
@@ -792,7 +962,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures util-vserver 0.30 to adapt to many kinds of systems.
+\`configure' configures util-vserver 0.30.208 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -849,12 +1019,16 @@ Program names:
   --program-prefix=PREFIX            prepend PREFIX to installed program names
   --program-suffix=SUFFIX            append SUFFIX to installed program names
   --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
 _ACEOF
 fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of util-vserver 0.30:";;
+     short | recursive ) echo "Configuration of util-vserver 0.30.208:";;
    esac
   cat <<\_ACEOF
 
@@ -865,16 +1039,43 @@ Optional Features:
                          (and sometimes confusing) to the casual installer
   --disable-dependency-tracking  speeds up one-time build
   --enable-dependency-tracking   do not reject slow dependency extractors
-  --enable-linuxconf      enable 'newvserver' linuxconf module (default: no)
+  --disable-extra-optimizations
+                          disable certain extra optimizations (default: no)
+  --enable-lib-debug      enable additional debug code in library (default:
+                          no)
+  --disable-expensive-tests
+                          disable tests which might be expensive on some
+                          systems (default: no)
+  --enable-release        enable release mode (default: no)
+  --disable-dietlibc      do not use dietlibc resp. enforce its usage (with
+                          --enable-dietlibc) (default: autodetect dietlibc)
+  --disable-alternative-syscalls
+                          do not use the alternative _syscallX macros provided
+                          by Herbert Poetzl (default: use them)
+  --enable-shared[=PKGS]
+                          build shared libraries [default=yes]
+  --enable-static[=PKGS]
+                          build static libraries [default=yes]
+  --enable-fast-install[=PKGS]
+                          optimize for fast installation [default=yes]
+  --disable-libtool-lock  avoid locking (might break parallel builds)
   --disable-internal-headers
                           use vserver specific headers from the kernel instead
                           of the shipped versions (default: no)
   --enable-apis=APIS      enable support for the given apis; possible values
-                          are: legacy,compat,v11,ALL (default: ALL)
+                          are: legacy,compat,v11,v13,fscompat,net,ALL
+                          (default: all except 'legacy')
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-initrddir <DIR>  use <DIR> as directory for SysV init-files (default:
+                          $sysconfdir/init.d)
+  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-pic              try to use only PIC/non-PIC objects [default=use
+                          both]
+  --with-tags[=TAGS]
+                          include additional configurations [automatic]
   --with-kerneldir=DIR    assume kernelsources in DIR (default:
                           /lib/modules/<current>/build)
   --with-vrootdir=DIR     place vservers under DIR (default: /vservers)
@@ -891,8 +1092,12 @@ Some influential environment variables:
               headers in a nonstandard directory <include dir>
   CC          C compiler command
   CFLAGS      C compiler flags
+  DIET        The 'diet' wrapper (default: diet)
+  DIETFLAGS   Flags passed to the 'diet' wrapper (default: -O)
   CPP         C preprocessor
   CXXCPP      C++ preprocessor
+  F77         Fortran 77 compiler command
+  FFLAGS      Fortran 77 compiler flags
 
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
@@ -993,7 +1198,7 @@ fi
 test -n "$ac_init_help" && exit 0
 if $ac_init_version; then
   cat <<\_ACEOF
-util-vserver configure 0.30
+util-vserver configure 0.30.208
 generated by GNU Autoconf 2.59
 
 Copyright (C) 2003 Free Software Foundation, Inc.
@@ -1007,7 +1212,7 @@ cat >&5 <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by util-vserver $as_me 0.30, which was
+It was created by util-vserver $as_me 0.30.208, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   $ $0 $@
@@ -1347,7 +1552,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
           ac_config_headers="$ac_config_headers config.h"
 
 
-am__api_version="1.8"
+am__api_version="1.9"
 ac_aux_dir=
 for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
   if test -f $ac_dir/install-sh; then
@@ -1524,13 +1729,21 @@ echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
 fi
 
 if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
-  # Keeping the `.' argument allows $(mkdir_p) to be used without
-  # argument.  Indeed, we sometimes output rules like
+  # We used to keeping the `.' as first argument, in order to
+  # allow $(mkdir_p) to be used without argument.  As in
   #   $(mkdir_p) $(somedir)
-  # where $(somedir) is conditionally defined.
-  # (`test -n '$(somedir)' && $(mkdir_p) $(somedir)' is a more
-  # expensive solution, as it forces Make to start a sub-shell.)
-  mkdir_p='mkdir -p -- .'
+  # where $(somedir) is conditionally defined.  However this is wrong
+  # for two reasons:
+  #  1. if the package is installed by a user who cannot write `.'
+  #     make install will fail,
+  #  2. the above comment should most certainly read
+  #     $(mkdir_p) $(DESTDIR)$(somedir)
+  #     so it does not work when $(somedir) is undefined and
+  #     $(DESTDIR) is not.
+  #  To support the latter case, we have to write
+  #     test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+  #  so the `.' trick is pointless.
+  mkdir_p='mkdir -p --'
 else
   # On NextStep and OpenStep, the `mkdir' command does not
   # recognize any option.  It will interpret all options as
@@ -1646,7 +1859,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='util-vserver'
- VERSION='0.30'
+ VERSION='0.30.208'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -1674,9 +1887,6 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
 
 MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
 
-
-AMTAR=${AMTAR-"${am_missing_run}tar"}
-
 install_sh=${install_sh-"$am_aux_dir/install-sh"}
 
 # Installed binaries are usually stripped using `strip' when the user
@@ -1769,6 +1979,13 @@ INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
 
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
 
 
 
@@ -1797,6 +2014,63 @@ fi
 
 
 
+# Make sure we can run config.sub.
+$ac_config_sub sun4 >/dev/null 2>&1 ||
+  { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
+echo "$as_me: error: cannot run $ac_config_sub" >&2;}
+   { (exit 1); exit 1; }; }
+
+echo "$as_me:$LINENO: checking build system type" >&5
+echo $ECHO_N "checking build system type... $ECHO_C" >&6
+if test "${ac_cv_build+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_build_alias=$build_alias
+test -z "$ac_cv_build_alias" &&
+  ac_cv_build_alias=`$ac_config_guess`
+test -z "$ac_cv_build_alias" &&
+  { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+   { (exit 1); exit 1; }; }
+ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
+  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+echo "${ECHO_T}$ac_cv_build" >&6
+build=$ac_cv_build
+build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+echo "$as_me:$LINENO: checking host system type" >&5
+echo $ECHO_N "checking host system type... $ECHO_C" >&6
+if test "${ac_cv_host+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_host_alias=$host_alias
+test -z "$ac_cv_host_alias" &&
+  ac_cv_host_alias=$ac_cv_build_alias
+ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
+  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+echo "${ECHO_T}$ac_cv_host" >&6
+host=$ac_cv_host
+host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+
+GPG_KEY="0xFFD316AC53ACA43A!"
+
 
 # Checks for programs.
 ac_ext=cc
@@ -3457,86 +3731,6 @@ else
 echo "${ECHO_T}no, using $LN_S" >&6
 fi
 
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_RANLIB+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  echo "$as_me:$LINENO: result: $RANLIB" >&5
-echo "${ECHO_T}$RANLIB" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
-  ac_ct_RANLIB=$RANLIB
-  # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$ac_ct_RANLIB"; then
-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
-echo "${ECHO_T}$ac_ct_RANLIB" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  RANLIB=$ac_ct_RANLIB
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
-
 if test "x$CC" != xcc; then
   echo "$as_me:$LINENO: checking whether $CC and cc understand -c and -o together" >&5
 echo $ECHO_N "checking whether $CC and cc understand -c and -o together... $ECHO_C" >&6
@@ -3644,31 +3838,22 @@ fi
 
 
 
-       warn_flags="-Werror -W"
-       echo "$as_me:$LINENO: checking whether the C-compiler accepts ${warn_flags}" >&5
-echo $ECHO_N "checking whether the C-compiler accepts ${warn_flags}... $ECHO_C" >&6
-       ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+       echo "$as_me:$LINENO: checking whether $CXX is a C++ compiler" >&5
+echo $ECHO_N "checking whether $CXX is a C++ compiler... $ECHO_C" >&6
+if test "${ensc_cv_cxx_cxxcompiler+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
 
-       __ensc_check_warnflags_old_CFLAGS="${CFLAGS}"
-       CFLAGS="$warn_flags"
-       cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-inline static void f(){}
-int
-main ()
-{
+               ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+               cat >conftest.$ac_ext <<_ACEOF
+
+                   #include <ostream>
 
-  ;
-  return 0;
-}
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
@@ -3679,7 +3864,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"
+        { ac_try='test -z "$ac_cxx_werror_flag"
                         || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -3692,79 +3877,65 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ensc_sys_compilerwarnflags_C=${warn_flags}
+  ensc_cv_cxx_cxxcompiler=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ensc_sys_compilerwarnflags_C=
+ensc_cv_cxx_cxxcompiler=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-       ac_ext=c
+               ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-       CFLAGS="$__ensc_check_warnflags_old_CFLAGS"
 
-       if test x"${ensc_sys_compilerwarnflags_C}" = x; then
-               echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-       else
-               echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-       fi
+fi
+echo "$as_me:$LINENO: result: $ensc_cv_cxx_cxxcompiler" >&5
+echo "${ECHO_T}$ensc_cv_cxx_cxxcompiler" >&6
 
 
 
+if test x"$ensc_cv_cxx_cxxcompiler" = xyes; then
+  ENSC_HAVE_CXX_COMPILER_TRUE=
+  ENSC_HAVE_CXX_COMPILER_FALSE='#'
+else
+  ENSC_HAVE_CXX_COMPILER_TRUE='#'
+  ENSC_HAVE_CXX_COMPILER_FALSE=
+fi
 
 
-echo 'void f(){}' > conftest.c
-  for i in -std=c99 -Wall -pedantic -W -Wno-unused-parameter
-  do
-    echo "$as_me:$LINENO: checking whether $CC accepts $i" >&5
-echo $ECHO_N "checking whether $CC accepts $i... $ECHO_C" >&6
-    if test -z "`${CC} ${ensc_sys_compilerwarnflags_C} $i -c conftest.c 2>&1`"
-    then
-      CFLAGS="${CFLAGS} $i"
-      echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-    else
-      echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-    fi
-  done
-  rm -f conftest.c conftest.o
+       if test x"$ensc_cv_cxx_cxxcompiler" = xno; then
+               { echo "$as_me:$LINENO: WARNING: *** some programs will not be built because a C++ compiler is lacking" >&5
+echo "$as_me: WARNING: *** some programs will not be built because a C++ compiler is lacking" >&2;}
+       fi
 
 
 
 
-       warn_flags="-Werror -W"
-       echo "$as_me:$LINENO: checking whether the C++-compiler accepts ${warn_flags}" >&5
-echo $ECHO_N "checking whether the C++-compiler accepts ${warn_flags}... $ECHO_C" >&6
-       ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 
-       __ensc_check_warnflags_old_CFLAGS="${CXXFLAGS}"
-       CXXFLAGS="$warn_flags"
-       cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-inline static void f(){}
-int
-main ()
-{
+       echo "$as_me:$LINENO: checking whether $CC is a C99 compiler" >&5
+echo $ECHO_N "checking whether $CC is a C99 compiler... $ECHO_C" >&6
+if test "${ensc_cv_c99_c99compiler+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
 
-  ;
-  return 0;
+               ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+               cat >conftest.$ac_ext <<_ACEOF
+
+int main(int argc, char *argv) {
+  struct { int x; }   a = { .x = argc };
+  if (0) return 0;
+  int b;
 }
+
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
@@ -3775,7 +3946,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_cxx_werror_flag"
+        { ac_try='test -z "$ac_c_werror_flag"
                         || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -3788,584 +3959,22305 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ensc_sys_compilerwarnflags_CXX=${warn_flags}
+  ensc_cv_c99_c99compiler=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ensc_sys_compilerwarnflags_CXX=
+ensc_cv_c99_c99compiler=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-       ac_ext=c
+               ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-       CXXFLAGS="$__ensc_check_warnflags_old_CFLAGS"
 
-       if test x"${ensc_sys_compilerwarnflags_CXX}" = x; then
-               echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-       else
-               echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-       fi
+fi
+echo "$as_me:$LINENO: result: $ensc_cv_c99_c99compiler" >&5
+echo "${ECHO_T}$ensc_cv_c99_c99compiler" >&6
 
 
 
+if test x"$ensc_cv_c99_c99compiler" = xyes; then
+  ENSC_HAVE_C99_COMPILER_TRUE=
+  ENSC_HAVE_C99_COMPILER_FALSE='#'
+else
+  ENSC_HAVE_C99_COMPILER_TRUE='#'
+  ENSC_HAVE_C99_COMPILER_FALSE=
+fi
 
 
-  echo 'void f(){}' > conftest.cc
-  for i in -ansi   -Wall -pedantic -W -fmessage-length=0
-  do
-    echo "$as_me:$LINENO: checking whether $CXX accepts $i" >&5
-echo $ECHO_N "checking whether $CXX accepts $i... $ECHO_C" >&6
-    if test -z "`${CXX} ${ensc_sys_compilerwarnflags_CXX} $i -c conftest.cc 2>&1`"
-    then
-      CXXFLAGS="${CXXFLAGS} $i"
-      echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-    else
-      echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-    fi
-  done
-  rm -f conftest.cc conftest.o
+       if test x"$ensc_cv_c99_c99compiler" = xno; then
+               { echo "$as_me:$LINENO: WARNING: *** some programs will not be built because system is lacking a C99 compiler" >&5
+echo "$as_me: WARNING: *** some programs will not be built because system is lacking a C99 compiler" >&2;}
+       fi
 
 
 
+       ensc_searchpath="$PATH:/sbin:/usr/sbin:/usr/local/sbin"
 
-       echo "$as_me:$LINENO: checking for linux kernel dir" >&5
-echo $ECHO_N "checking for linux kernel dir... $ECHO_C" >&6
-if test "${ensc_cv_path_kerneldir+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
 
+       ENSC_PATHPROG_SED=
 
-# Check whether --with-kerneldir or --without-kerneldir was given.
-if test "${with_kerneldir+set}" = set; then
-  withval="$with_kerneldir"
-  case "$withval" in
-               yes|no) { { echo "$as_me:$LINENO: error: '$withval' is not a valid value for kerneldir" >&5
-echo "$as_me: error: '$withval' is not a valid value for kerneldir" >&2;}
-   { (exit 1); exit 1; }; };;
-               *)      ensc_cv_path_kerneldir=$withval;;
-            esac
-else
-  ensc_cv_path_kerneldir=
-            for i in /lib/modules/$(uname -r)/build /usr/src/linux /usr; do
-               test -e $i/include/linux/version.h && { ensc_cv_path_kerneldir=$i; break; }
-            done
-fi;
 
-fi
-echo "$as_me:$LINENO: result: $ensc_cv_path_kerneldir" >&5
-echo "${ECHO_T}$ensc_cv_path_kerneldir" >&6
 
-       test "$ensc_cv_path_kerneldir" -a -e "$ensc_cv_path_kerneldir"/include/linux/version.h || {
-               { { echo "$as_me:$LINENO: error: Can not find kernelsources" >&5
-echo "$as_me: error: Can not find kernelsources" >&2;}
-   { (exit 1); exit 1; }; }
-       }
 
 
 
 
-       echo "$as_me:$LINENO: checking for linux kernel headers" >&5
-echo $ECHO_N "checking for linux kernel headers... $ECHO_C" >&6
-if test "${ensc_cv_path_kernelheaders+set}" = set; then
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_AWK+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
+  case $AWK in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_AWK="$AWK" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_AWK="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
 
-               ensc_cv_path_kernelheaders=$ensc_cv_path_kerneldir/include
+  ;;
+esac
+fi
+AWK=$ac_cv_path_AWK
 
+if test -n "$AWK"; then
+  echo "$as_me:$LINENO: result: $AWK" >&5
+echo "${ECHO_T}$AWK" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
 fi
-echo "$as_me:$LINENO: result: $ensc_cv_path_kernelheaders" >&5
-echo "${ECHO_T}$ensc_cv_path_kernelheaders" >&6
 
-       if test x"kernelincludedir" != x; then
-               kernelincludedir=$ensc_cv_path_kernelheaders
+  test -n "$AWK" && break
+done
+test -n "$AWK" || AWK="$ensc_dflt"
 
-       fi
 
+       if test -z "${AWK}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'awk' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'awk' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'awk' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'awk' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
 
-       echo "$as_me:$LINENO: checking which vserver-rootdir is to use" >&5
-echo $ECHO_N "checking which vserver-rootdir is to use... $ECHO_C" >&6
+       test "${AWK}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'AWK'@!${AWK}!g;"
 
-# Check whether --with-vrootdir or --without-vrootdir was given.
-if test "${with_vrootdir+set}" = set; then
-  withval="$with_vrootdir"
-  case "$withval" in
-                       yes|no) { { echo "$as_me:$LINENO: error: '$withval' is not a valid value for vrootdir" >&5
-echo "$as_me: error: '$withval' is not a valid value for vrootdir" >&2;}
-   { (exit 1); exit 1; }; };;
-                       *)      ensc_uv_path_vrootdir=$withval;;
-                    esac
-else
-  ensc_uv_path_vrootdir=/vservers
-fi;
-       echo "$as_me:$LINENO: result: $ensc_uv_path_vrootdir" >&5
-echo "${ECHO_T}$ensc_uv_path_vrootdir" >&6
+       test "${AWK}"
 
-       if test x"vserverdir" != x; then
-               vserverdir=$ensc_uv_path_vrootdir
 
-       fi
 
 
-       if test x"SYSCALL_SWITCH" != x; then
-               CVS2CL_TAG='-F SYSCALL_SWITCH'
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
 
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
        fi
 
-       for ac_prog in cvs2cl
+       for ac_prog in cat
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo "$as_me:$LINENO: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CVS2CL+set}" = set; then
+if test "${ac_cv_path_CAT+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  if test -n "$CVS2CL"; then
-  ac_cv_prog_CVS2CL="$CVS2CL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
+  case $CAT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_CAT="$CAT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
   for ac_exec_ext in '' $ac_executable_extensions; do
   if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CVS2CL="$ac_prog"
+    ac_cv_path_CAT="$as_dir/$ac_word$ac_exec_ext"
     echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
 done
 
+  ;;
+esac
 fi
-fi
-CVS2CL=$ac_cv_prog_CVS2CL
-if test -n "$CVS2CL"; then
-  echo "$as_me:$LINENO: result: $CVS2CL" >&5
-echo "${ECHO_T}$CVS2CL" >&6
+CAT=$ac_cv_path_CAT
+
+if test -n "$CAT"; then
+  echo "$as_me:$LINENO: result: $CAT" >&5
+echo "${ECHO_T}$CAT" >&6
 else
   echo "$as_me:$LINENO: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
-  test -n "$CVS2CL" && break
+  test -n "$CAT" && break
 done
+test -n "$CAT" || CAT="$ensc_dflt"
 
 
+       if test -z "${CAT}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'cat' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'cat' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'cat' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'cat' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
 
-if test x"$CVS2CL" != x; then
-  HAVE_CVS2CL_TRUE=
-  HAVE_CVS2CL_FALSE='#'
-else
-  HAVE_CVS2CL_TRUE='#'
-  HAVE_CVS2CL_FALSE=
-fi
+       test "${CAT}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'CAT'@!${CAT}!g;"
 
+       test "${CAT}"
 
-       for ac_prog in rcs2log
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in chown
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo "$as_me:$LINENO: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_RCS2LOG+set}" = set; then
+if test "${ac_cv_path_CHOWN+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  if test -n "$RCS2LOG"; then
-  ac_cv_prog_RCS2LOG="$RCS2LOG" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
+  case $CHOWN in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_CHOWN="$CHOWN" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
   for ac_exec_ext in '' $ac_executable_extensions; do
   if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_RCS2LOG="$ac_prog"
+    ac_cv_path_CHOWN="$as_dir/$ac_word$ac_exec_ext"
     echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
 done
 
+  ;;
+esac
 fi
-fi
-RCS2LOG=$ac_cv_prog_RCS2LOG
-if test -n "$RCS2LOG"; then
-  echo "$as_me:$LINENO: result: $RCS2LOG" >&5
-echo "${ECHO_T}$RCS2LOG" >&6
+CHOWN=$ac_cv_path_CHOWN
+
+if test -n "$CHOWN"; then
+  echo "$as_me:$LINENO: result: $CHOWN" >&5
+echo "${ECHO_T}$CHOWN" >&6
 else
   echo "$as_me:$LINENO: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
-  test -n "$RCS2LOG" && break
+  test -n "$CHOWN" && break
 done
+test -n "$CHOWN" || CHOWN="$ensc_dflt"
 
 
+       if test -z "${CHOWN}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'chown' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'chown' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'chown' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'chown' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
 
-if test x"$RCS2LOG" != x; then
-  HAVE_RCS2LOG_TRUE=
-  HAVE_RCS2LOG_FALSE='#'
-else
-  HAVE_RCS2LOG_TRUE='#'
-  HAVE_RCS2LOG_FALSE=
-fi
+       test "${CHOWN}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'CHOWN'@!${CHOWN}!g;"
 
+       test "${CHOWN}"
 
 
-echo "$as_me:$LINENO: checking whether to enable linuxconf modules" >&5
-echo $ECHO_N "checking whether to enable linuxconf modules... $ECHO_C" >&6
-# Check whether --enable-linuxconf or --disable-linuxconf was given.
-if test "${enable_linuxconf+set}" = set; then
-  enableval="$enable_linuxconf"
-  case "$enableval" in
-                 yes|no) ;;
-                 *)      { { echo "$as_me:$LINENO: error: '$i' is not a supported value for '--enable-linuxconf'" >&5
-echo "$as_me: error: '$i' is not a supported value for '--enable-linuxconf'" >&2;}
-   { (exit 1); exit 1; }; };;
-              esac
-else
-  enable_linuxconf=no
-fi;
 
 
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
 
-if test x"$enable_linuxconf" = xyes; then
-  ENSC_ENABLE_LINUXCONF_TRUE=
-  ENSC_ENABLE_LINUXCONF_FALSE='#'
+       for ac_prog in cmp
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_CMP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  ENSC_ENABLE_LINUXCONF_TRUE='#'
-  ENSC_ENABLE_LINUXCONF_FALSE=
+  case $CMP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_CMP="$CMP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_CMP="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
 fi
+CMP=$ac_cv_path_CMP
 
-echo "$as_me:$LINENO: result: $enable_linuxconf" >&5
-echo "${ECHO_T}$enable_linuxconf" >&6
+if test -n "$CMP"; then
+  echo "$as_me:$LINENO: result: $CMP" >&5
+echo "${ECHO_T}$CMP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
 
+  test -n "$CMP" && break
+done
+test -n "$CMP" || CMP="$ensc_dflt"
 
-echo "$as_me:$LINENO: checking whether to use internal kernel headers" >&5
-echo $ECHO_N "checking whether to use internal kernel headers... $ECHO_C" >&6
-# Check whether --enable-internal-headers or --disable-internal-headers was given.
-if test "${enable_internal_headers+set}" = set; then
-  enableval="$enable_internal_headers"
-  case "$enableval" in
-                 yes|no) ;;
-                 *)      { { echo "$as_me:$LINENO: error: '$i' is not a supported value for '--disable-internal-headers'" >&5
-echo "$as_me: error: '$i' is not a supported value for '--disable-internal-headers'" >&2;}
-   { (exit 1); exit 1; }; };;
-              esac
-else
-  enable_internal_headers=yes
-fi;
 
+       if test -z "${CMP}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'cmp' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'cmp' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'cmp' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'cmp' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
 
+       test "${CMP}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'CMP'@!${CMP}!g;"
 
-if test x"$enable_internal_headers" = xyes; then
-  ENSC_ENABLE_INTERNAL_HEADERS_TRUE=
-  ENSC_ENABLE_INTERNAL_HEADERS_FALSE='#'
-else
-  ENSC_ENABLE_INTERNAL_HEADERS_TRUE='#'
-  ENSC_ENABLE_INTERNAL_HEADERS_FALSE=
-fi
+       test "${CMP}"
 
-echo "$as_me:$LINENO: result: $enable_internal_headers" >&5
-echo "${ECHO_T}$enable_internal_headers" >&6
 
 
-echo "$as_me:$LINENO: checking for supported APIs" >&5
-echo $ECHO_N "checking for supported APIs... $ECHO_C" >&6
-# Check whether --enable-apis or --disable-apis was given.
-if test "${enable_apis+set}" = set; then
-  enableval="$enable_apis"
 
-else
-  enable_apis=ALL
-fi;
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
 
-test x"$enable_apis" != xALL || enable_apis='legacy,compat,v11'
-old_IFS=$IFS
-IFS=,;
-for i in $enable_apis; do
-       case "$i" in
-               compat)
-cat >>confdefs.h <<\_ACEOF
-#define VC_ENABLE_API_COMPAT 1
-_ACEOF
-;;
-               legacy)
-cat >>confdefs.h <<\_ACEOF
-#define VC_ENABLE_API_LEGACY 1
-_ACEOF
-;;
-               v11)
-cat >>confdefs.h <<\_ACEOF
-#define VC_ENABLE_API_V11 1
-_ACEOF
-;;
-               *)      { { echo "$as_me:$LINENO: error: '$i' is not a supported API" >&5
-echo "$as_me: error: '$i' is not a supported API" >&2;}
-   { (exit 1); exit 1; }; };;
-       esac
-done
-IFS=$old_IFS
-echo "$as_me:$LINENO: result: $enable_apis" >&5
-echo "${ECHO_T}$enable_apis" >&6
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
 
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-  if test "${ac_cv_prog_CPP+set}" = set; then
+       for ac_prog in cp
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_CP+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
+  case $CP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_CP="$CP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
 do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_CP="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
   fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+done
+done
 
-  # Broken: fails on valid input.
-continue
+  ;;
+esac
 fi
-rm -f conftest.err conftest.$ac_ext
+CP=$ac_cv_path_CP
 
-  # OK, works on sane cases.  Now check whether non-existent headers
-  # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  # Broken: success on invalid input.
-continue
+if test -n "$CP"; then
+  echo "$as_me:$LINENO: result: $CP" >&5
+echo "${ECHO_T}$CP" >&6
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # Passes both tests.
-ac_preproc_ok=:
-break
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
 fi
-rm -f conftest.err conftest.$ac_ext
 
+  test -n "$CP" && break
 done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
-  break
-fi
+test -n "$CP" || CP="$ensc_dflt"
 
-    done
-    ac_cv_prog_CPP=$CPP
 
-fi
-  CPP=$ac_cv_prog_CPP
+       if test -z "${CP}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'cp' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'cp' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'cp' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'cp' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${CP}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'CP'@!${CP}!g;"
+
+       test "${CP}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in dirname
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_DIRNAME+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  ac_cv_prog_CPP=$CPP
-fi
-echo "$as_me:$LINENO: result: $CPP" >&5
-echo "${ECHO_T}$CPP" >&6
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
+  case $DIRNAME in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DIRNAME="$DIRNAME" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
 do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_DIRNAME="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
   fi
-else
-  ac_cpp_err=yes
+done
+done
+
+  ;;
+esac
 fi
-if test -z "$ac_cpp_err"; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+DIRNAME=$ac_cv_path_DIRNAME
 
-  # Broken: fails on valid input.
-continue
+if test -n "$DIRNAME"; then
+  echo "$as_me:$LINENO: result: $DIRNAME" >&5
+echo "${ECHO_T}$DIRNAME" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
 fi
-rm -f conftest.err conftest.$ac_ext
 
-  # OK, works on sane cases.  Now check whether non-existent headers
-  # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  test -n "$DIRNAME" && break
+done
+test -n "$DIRNAME" || DIRNAME="$ensc_dflt"
+
+
+       if test -z "${DIRNAME}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'dirname' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'dirname' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'dirname' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'dirname' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${DIRNAME}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'DIRNAME'@!${DIRNAME}!g;"
+
+       test "${DIRNAME}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in egrep
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_EGREP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $EGREP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_EGREP="$EGREP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_EGREP="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+EGREP=$ac_cv_path_EGREP
+
+if test -n "$EGREP"; then
+  echo "$as_me:$LINENO: result: $EGREP" >&5
+echo "${ECHO_T}$EGREP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$EGREP" && break
+done
+test -n "$EGREP" || EGREP="$ensc_dflt"
+
+
+       if test -z "${EGREP}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'egrep' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'egrep' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'egrep' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'egrep' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${EGREP}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'EGREP'@!${EGREP}!g;"
+
+       test "${EGREP}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in env
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_ENV+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $ENV in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ENV="$ENV" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ENV="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+ENV=$ac_cv_path_ENV
+
+if test -n "$ENV"; then
+  echo "$as_me:$LINENO: result: $ENV" >&5
+echo "${ECHO_T}$ENV" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ENV" && break
+done
+test -n "$ENV" || ENV="$ensc_dflt"
+
+
+       if test -z "${ENV}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'env' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'env' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'env' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'env' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${ENV}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'ENV'@!${ENV}!g;"
+
+       test "${ENV}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in grep
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_GREP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $GREP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_GREP="$GREP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_GREP="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+GREP=$ac_cv_path_GREP
+
+if test -n "$GREP"; then
+  echo "$as_me:$LINENO: result: $GREP" >&5
+echo "${ECHO_T}$GREP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$GREP" && break
+done
+test -n "$GREP" || GREP="$ensc_dflt"
+
+
+       if test -z "${GREP}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'grep' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'grep' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'grep' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'grep' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${GREP}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'GREP'@!${GREP}!g;"
+
+       test "${GREP}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in ln
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_LN+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $LN in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_LN="$LN" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_LN="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+LN=$ac_cv_path_LN
+
+if test -n "$LN"; then
+  echo "$as_me:$LINENO: result: $LN" >&5
+echo "${ECHO_T}$LN" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$LN" && break
+done
+test -n "$LN" || LN="$ensc_dflt"
+
+
+       if test -z "${LN}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'ln' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'ln' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'ln' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'ln' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${LN}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'LN'@!${LN}!g;"
+
+       test "${LN}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in mkdir
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_MKDIR+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MKDIR in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MKDIR="$MKDIR" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_MKDIR="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+MKDIR=$ac_cv_path_MKDIR
+
+if test -n "$MKDIR"; then
+  echo "$as_me:$LINENO: result: $MKDIR" >&5
+echo "${ECHO_T}$MKDIR" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$MKDIR" && break
+done
+test -n "$MKDIR" || MKDIR="$ensc_dflt"
+
+
+       if test -z "${MKDIR}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'mkdir' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'mkdir' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'mkdir' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'mkdir' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${MKDIR}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'MKDIR'@!${MKDIR}!g;"
+
+       test "${MKDIR}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in mkfifo
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_MKFIFO+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MKFIFO in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MKFIFO="$MKFIFO" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_MKFIFO="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+MKFIFO=$ac_cv_path_MKFIFO
+
+if test -n "$MKFIFO"; then
+  echo "$as_me:$LINENO: result: $MKFIFO" >&5
+echo "${ECHO_T}$MKFIFO" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$MKFIFO" && break
+done
+test -n "$MKFIFO" || MKFIFO="$ensc_dflt"
+
+
+       if test -z "${MKFIFO}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'mkfifo' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'mkfifo' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'mkfifo' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'mkfifo' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${MKFIFO}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'MKFIFO'@!${MKFIFO}!g;"
+
+       test "${MKFIFO}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in mktemp
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_MKTEMP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MKTEMP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MKTEMP="$MKTEMP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_MKTEMP="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+MKTEMP=$ac_cv_path_MKTEMP
+
+if test -n "$MKTEMP"; then
+  echo "$as_me:$LINENO: result: $MKTEMP" >&5
+echo "${ECHO_T}$MKTEMP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$MKTEMP" && break
+done
+test -n "$MKTEMP" || MKTEMP="$ensc_dflt"
+
+
+       if test -z "${MKTEMP}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'mktemp' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'mktemp' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'mktemp' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'mktemp' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${MKTEMP}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'MKTEMP'@!${MKTEMP}!g;"
+
+       test "${MKTEMP}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in mount
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_MOUNT+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MOUNT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MOUNT="$MOUNT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_MOUNT="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+MOUNT=$ac_cv_path_MOUNT
+
+if test -n "$MOUNT"; then
+  echo "$as_me:$LINENO: result: $MOUNT" >&5
+echo "${ECHO_T}$MOUNT" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$MOUNT" && break
+done
+test -n "$MOUNT" || MOUNT="$ensc_dflt"
+
+
+       if test -z "${MOUNT}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'mount' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'mount' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'mount' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'mount' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${MOUNT}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'MOUNT'@!${MOUNT}!g;"
+
+       test "${MOUNT}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in mv
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_MV+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MV in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MV="$MV" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_MV="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+MV=$ac_cv_path_MV
+
+if test -n "$MV"; then
+  echo "$as_me:$LINENO: result: $MV" >&5
+echo "${ECHO_T}$MV" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$MV" && break
+done
+test -n "$MV" || MV="$ensc_dflt"
+
+
+       if test -z "${MV}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'mv' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'mv' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'mv' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'mv' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${MV}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'MV'@!${MV}!g;"
+
+       test "${MV}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in nice
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_NICE+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $NICE in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_NICE="$NICE" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_NICE="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+NICE=$ac_cv_path_NICE
+
+if test -n "$NICE"; then
+  echo "$as_me:$LINENO: result: $NICE" >&5
+echo "${ECHO_T}$NICE" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$NICE" && break
+done
+test -n "$NICE" || NICE="$ensc_dflt"
+
+
+       if test -z "${NICE}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'nice' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'nice' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'nice' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'nice' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${NICE}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'NICE'@!${NICE}!g;"
+
+       test "${NICE}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in ps
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PS+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $PS in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PS="$PS" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PS="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+PS=$ac_cv_path_PS
+
+if test -n "$PS"; then
+  echo "$as_me:$LINENO: result: $PS" >&5
+echo "${ECHO_T}$PS" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$PS" && break
+done
+test -n "$PS" || PS="$ensc_dflt"
+
+
+       if test -z "${PS}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'ps' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'ps' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'ps' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'ps' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${PS}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'PS'@!${PS}!g;"
+
+       test "${PS}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in rm
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_RM+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $RM in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_RM="$RM" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_RM="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+RM=$ac_cv_path_RM
+
+if test -n "$RM"; then
+  echo "$as_me:$LINENO: result: $RM" >&5
+echo "${ECHO_T}$RM" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$RM" && break
+done
+test -n "$RM" || RM="$ensc_dflt"
+
+
+       if test -z "${RM}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'rm' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'rm' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'rm' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'rm' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${RM}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'RM'@!${RM}!g;"
+
+       test "${RM}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in rmdir
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_RMDIR+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $RMDIR in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_RMDIR="$RMDIR" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_RMDIR="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+RMDIR=$ac_cv_path_RMDIR
+
+if test -n "$RMDIR"; then
+  echo "$as_me:$LINENO: result: $RMDIR" >&5
+echo "${ECHO_T}$RMDIR" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$RMDIR" && break
+done
+test -n "$RMDIR" || RMDIR="$ensc_dflt"
+
+
+       if test -z "${RMDIR}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'rmdir' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'rmdir' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'rmdir' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'rmdir' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${RMDIR}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'RMDIR'@!${RMDIR}!g;"
+
+       test "${RMDIR}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in sed
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_SED+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $SED in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_SED="$SED" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_SED="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+SED=$ac_cv_path_SED
+
+if test -n "$SED"; then
+  echo "$as_me:$LINENO: result: $SED" >&5
+echo "${ECHO_T}$SED" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$SED" && break
+done
+test -n "$SED" || SED="$ensc_dflt"
+
+
+       if test -z "${SED}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'sed' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'sed' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'sed' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'sed' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${SED}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'SED'@!${SED}!g;"
+
+       test "${SED}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in sh
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_SH+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $SH in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_SH="$SH" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_SH="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+SH=$ac_cv_path_SH
+
+if test -n "$SH"; then
+  echo "$as_me:$LINENO: result: $SH" >&5
+echo "${ECHO_T}$SH" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$SH" && break
+done
+test -n "$SH" || SH="$ensc_dflt"
+
+
+       if test -z "${SH}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'sh' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'sh' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'sh' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'sh' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${SH}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'SH'@!${SH}!g;"
+
+       test "${SH}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in tac
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_TAC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $TAC in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_TAC="$TAC" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_TAC="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+TAC=$ac_cv_path_TAC
+
+if test -n "$TAC"; then
+  echo "$as_me:$LINENO: result: $TAC" >&5
+echo "${ECHO_T}$TAC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$TAC" && break
+done
+test -n "$TAC" || TAC="$ensc_dflt"
+
+
+       if test -z "${TAC}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'tac' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'tac' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'tac' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'tac' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${TAC}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'TAC'@!${TAC}!g;"
+
+       test "${TAC}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in tar
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_TAR+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $TAR in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_TAR="$TAR" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_TAR="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+TAR=$ac_cv_path_TAR
+
+if test -n "$TAR"; then
+  echo "$as_me:$LINENO: result: $TAR" >&5
+echo "${ECHO_T}$TAR" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$TAR" && break
+done
+test -n "$TAR" || TAR="$ensc_dflt"
+
+
+       if test -z "${TAR}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'tar' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'tar' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'tar' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'tar' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${TAR}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'TAR'@!${TAR}!g;"
+
+       test "${TAR}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in touch
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_TOUCH+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $TOUCH in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_TOUCH="$TOUCH" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_TOUCH="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+TOUCH=$ac_cv_path_TOUCH
+
+if test -n "$TOUCH"; then
+  echo "$as_me:$LINENO: result: $TOUCH" >&5
+echo "${ECHO_T}$TOUCH" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$TOUCH" && break
+done
+test -n "$TOUCH" || TOUCH="$ensc_dflt"
+
+
+       if test -z "${TOUCH}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'touch' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'touch' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'touch' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'touch' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${TOUCH}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'TOUCH'@!${TOUCH}!g;"
+
+       test "${TOUCH}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in tty
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_TTY+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $TTY in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_TTY="$TTY" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_TTY="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+TTY=$ac_cv_path_TTY
+
+if test -n "$TTY"; then
+  echo "$as_me:$LINENO: result: $TTY" >&5
+echo "${ECHO_T}$TTY" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$TTY" && break
+done
+test -n "$TTY" || TTY="$ensc_dflt"
+
+
+       if test -z "${TTY}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'tty' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'tty' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'tty' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'tty' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${TTY}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'TTY'@!${TTY}!g;"
+
+       test "${TTY}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in umount
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_UMOUNT+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $UMOUNT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_UMOUNT="$UMOUNT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_UMOUNT="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+UMOUNT=$ac_cv_path_UMOUNT
+
+if test -n "$UMOUNT"; then
+  echo "$as_me:$LINENO: result: $UMOUNT" >&5
+echo "${ECHO_T}$UMOUNT" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$UMOUNT" && break
+done
+test -n "$UMOUNT" || UMOUNT="$ensc_dflt"
+
+
+       if test -z "${UMOUNT}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'umount' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'umount' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'umount' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'umount' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${UMOUNT}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'UMOUNT'@!${UMOUNT}!g;"
+
+       test "${UMOUNT}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in wc
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_WC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $WC in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_WC="$WC" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_WC="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+WC=$ac_cv_path_WC
+
+if test -n "$WC"; then
+  echo "$as_me:$LINENO: result: $WC" >&5
+echo "${ECHO_T}$WC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$WC" && break
+done
+test -n "$WC" || WC="$ensc_dflt"
+
+
+       if test -z "${WC}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'wc' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'wc' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'wc' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'wc' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${WC}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'WC'@!${WC}!g;"
+
+       test "${WC}"
+
+
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in ip
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_IP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $IP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_IP="$IP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_IP="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+IP=$ac_cv_path_IP
+
+if test -n "$IP"; then
+  echo "$as_me:$LINENO: result: $IP" >&5
+echo "${ECHO_T}$IP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$IP" && break
+done
+test -n "$IP" || IP="$ensc_dflt"
+
+
+       if test -z "${IP}" && $rq; then
+               if test -z "Usually, this tool is shipped in the 'iproute' or 'iproute2' package of your distribution"; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'ip' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'ip' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'ip' tool within '${ensc_searchpath:-$PATH}'.
+Usually, this tool is shipped in the 'iproute' or 'iproute2' package of your distribution" >&5
+echo "$as_me: error:
+Can not find the 'ip' tool within '${ensc_searchpath:-$PATH}'.
+Usually, this tool is shipped in the 'iproute' or 'iproute2' package of your distribution" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${IP}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'IP'@!${IP}!g;"
+
+       test "${IP}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in iptables
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_IPTABLES+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $IPTABLES in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_IPTABLES="$IPTABLES" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_IPTABLES="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+IPTABLES=$ac_cv_path_IPTABLES
+
+if test -n "$IPTABLES"; then
+  echo "$as_me:$LINENO: result: $IPTABLES" >&5
+echo "${ECHO_T}$IPTABLES" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$IPTABLES" && break
+done
+test -n "$IPTABLES" || IPTABLES="$ensc_dflt"
+
+
+       if test -z "${IPTABLES}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'iptables' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'iptables' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'iptables' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'iptables' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${IPTABLES}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'IPTABLES'@!${IPTABLES}!g;"
+
+       test "${IPTABLES}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in modprobe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_MODPROBE+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MODPROBE in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MODPROBE="$MODPROBE" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_MODPROBE="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+MODPROBE=$ac_cv_path_MODPROBE
+
+if test -n "$MODPROBE"; then
+  echo "$as_me:$LINENO: result: $MODPROBE" >&5
+echo "${ECHO_T}$MODPROBE" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$MODPROBE" && break
+done
+test -n "$MODPROBE" || MODPROBE="$ensc_dflt"
+
+
+       if test -z "${MODPROBE}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'modprobe' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'modprobe' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'modprobe' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'modprobe' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${MODPROBE}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'MODPROBE'@!${MODPROBE}!g;"
+
+       test "${MODPROBE}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in nameif
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_NAMEIF+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $NAMEIF in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_NAMEIF="$NAMEIF" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_NAMEIF="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+NAMEIF=$ac_cv_path_NAMEIF
+
+if test -n "$NAMEIF"; then
+  echo "$as_me:$LINENO: result: $NAMEIF" >&5
+echo "${ECHO_T}$NAMEIF" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$NAMEIF" && break
+done
+test -n "$NAMEIF" || NAMEIF="$ensc_dflt"
+
+
+       if test -z "${NAMEIF}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'nameif' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'nameif' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'nameif' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'nameif' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${NAMEIF}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'NAMEIF'@!${NAMEIF}!g;"
+
+       test "${NAMEIF}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in nohup
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_NOHUP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $NOHUP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_NOHUP="$NOHUP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_NOHUP="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+NOHUP=$ac_cv_path_NOHUP
+
+if test -n "$NOHUP"; then
+  echo "$as_me:$LINENO: result: $NOHUP" >&5
+echo "${ECHO_T}$NOHUP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$NOHUP" && break
+done
+test -n "$NOHUP" || NOHUP="$ensc_dflt"
+
+
+       if test -z "${NOHUP}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'nohup' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'nohup' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'nohup' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'nohup' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${NOHUP}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'NOHUP'@!${NOHUP}!g;"
+
+       test "${NOHUP}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in rmmod
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_RMMOD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $RMMOD in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_RMMOD="$RMMOD" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_RMMOD="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+RMMOD=$ac_cv_path_RMMOD
+
+if test -n "$RMMOD"; then
+  echo "$as_me:$LINENO: result: $RMMOD" >&5
+echo "${ECHO_T}$RMMOD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$RMMOD" && break
+done
+test -n "$RMMOD" || RMMOD="$ensc_dflt"
+
+
+       if test -z "${RMMOD}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'rmmod' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'rmmod' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'rmmod' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'rmmod' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${RMMOD}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'RMMOD'@!${RMMOD}!g;"
+
+       test "${RMMOD}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in vconfig
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_VCONFIG+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $VCONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_VCONFIG="$VCONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_VCONFIG="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+VCONFIG=$ac_cv_path_VCONFIG
+
+if test -n "$VCONFIG"; then
+  echo "$as_me:$LINENO: result: $VCONFIG" >&5
+echo "${ECHO_T}$VCONFIG" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$VCONFIG" && break
+done
+test -n "$VCONFIG" || VCONFIG="$ensc_dflt"
+
+
+       if test -z "${VCONFIG}" && $rq; then
+               if test -z "See http://www.candelatech.com/~greear/vlan.html; usually this tool is shipped in the 'vconfig' or 'vlan' package of your distribution"; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'vconfig' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'vconfig' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'vconfig' tool within '${ensc_searchpath:-$PATH}'.
+See http://www.candelatech.com/~greear/vlan.html; usually this tool is shipped in the 'vconfig' or 'vlan' package of your distribution" >&5
+echo "$as_me: error:
+Can not find the 'vconfig' tool within '${ensc_searchpath:-$PATH}'.
+See http://www.candelatech.com/~greear/vlan.html; usually this tool is shipped in the 'vconfig' or 'vlan' package of your distribution" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${VCONFIG}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'VCONFIG'@!${VCONFIG}!g;"
+
+       test "${VCONFIG}"
+
+
+
+
+       if test -z ""; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=""
+       fi
+
+       for ac_prog in wget
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_WGET+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $WGET in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_WGET="$WGET" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_WGET="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+WGET=$ac_cv_path_WGET
+
+if test -n "$WGET"; then
+  echo "$as_me:$LINENO: result: $WGET" >&5
+echo "${ECHO_T}$WGET" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$WGET" && break
+done
+test -n "$WGET" || WGET="$ensc_dflt"
+
+
+       if test -z "${WGET}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'wget' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'wget' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'wget' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'wget' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${WGET}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'WGET'@!${WGET}!g;"
+
+       test "${WGET}"
+
+
+
+
+
+       if test -z ":"; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=":"
+       fi
+
+       for ac_prog in doxygen
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_DOXYGEN+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $DOXYGEN in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DOXYGEN="$DOXYGEN" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_DOXYGEN="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+DOXYGEN=$ac_cv_path_DOXYGEN
+
+if test -n "$DOXYGEN"; then
+  echo "$as_me:$LINENO: result: $DOXYGEN" >&5
+echo "${ECHO_T}$DOXYGEN" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$DOXYGEN" && break
+done
+test -n "$DOXYGEN" || DOXYGEN="$ensc_dflt"
+
+
+       if test -z "${DOXYGEN}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'doxygen' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'doxygen' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'doxygen' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'doxygen' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${DOXYGEN}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'DOXYGEN'@!${DOXYGEN}!g;"
+
+       test "${DOXYGEN}"
+
+
+
+
+       if test -z ":"; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=":"
+       fi
+
+       for ac_prog in xsltp
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_XSLTP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $XSLTP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_XSLTP="$XSLTP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_XSLTP="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+XSLTP=$ac_cv_path_XSLTP
+
+if test -n "$XSLTP"; then
+  echo "$as_me:$LINENO: result: $XSLTP" >&5
+echo "${ECHO_T}$XSLTP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$XSLTP" && break
+done
+test -n "$XSLTP" || XSLTP="$ensc_dflt"
+
+
+       if test -z "${XSLTP}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'xsltp' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'xsltp' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'xsltp' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'xsltp' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${XSLTP}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'XSLTP'@!${XSLTP}!g;"
+
+       test "${XSLTP}"
+
+
+
+
+       if test -z ":"; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt=":"
+       fi
+
+       for ac_prog in xsltproc
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_XSLTPROC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $XSLTPROC in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_XSLTPROC="$XSLTPROC" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $ensc_searchpath
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_XSLTPROC="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+XSLTPROC=$ac_cv_path_XSLTPROC
+
+if test -n "$XSLTPROC"; then
+  echo "$as_me:$LINENO: result: $XSLTPROC" >&5
+echo "${ECHO_T}$XSLTPROC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$XSLTPROC" && break
+done
+test -n "$XSLTPROC" || XSLTPROC="$ensc_dflt"
+
+
+       if test -z "${XSLTPROC}" && $rq; then
+               if test -z ""; then
+                       { { echo "$as_me:$LINENO: error: Can not find the 'xsltproc' tool within '${ensc_searchpath:-$PATH}'." >&5
+echo "$as_me: error: Can not find the 'xsltproc' tool within '${ensc_searchpath:-$PATH}'." >&2;}
+   { (exit 1); exit 1; }; }
+               else
+                       { { echo "$as_me:$LINENO: error:
+Can not find the 'xsltproc' tool within '${ensc_searchpath:-$PATH}'.
+" >&5
+echo "$as_me: error:
+Can not find the 'xsltproc' tool within '${ensc_searchpath:-$PATH}'.
+" >&2;}
+   { (exit 1); exit 1; }; }
+               fi
+       fi
+
+       test "${XSLTPROC}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'XSLTPROC'@!${XSLTPROC}!g;"
+
+       test "${XSLTPROC}"
+
+
+
+
+if test "$XSLTP"    != ':'; then
+  HAVE_XSLTP_TRUE=
+  HAVE_XSLTP_FALSE='#'
+else
+  HAVE_XSLTP_TRUE='#'
+  HAVE_XSLTP_FALSE=
+fi
+
+
+
+if test "$XSLTPROC" != ':'; then
+  HAVE_XSLTPROC_TRUE=
+  HAVE_XSLTPROC_FALSE='#'
+else
+  HAVE_XSLTPROC_TRUE='#'
+  HAVE_XSLTPROC_FALSE=
+fi
+
+
+
+
+
+       warn_flags="-Werror -W"
+       echo "$as_me:$LINENO: checking whether the C-compiler accepts ${warn_flags}" >&5
+echo $ECHO_N "checking whether the C-compiler accepts ${warn_flags}... $ECHO_C" >&6
+       ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+       __ensc_check_warnflags_old_CFLAGS="${CFLAGS}"
+       CFLAGS="$warn_flags"
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+inline static void f(){}
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ensc_sys_compilerwarnflags_C=${warn_flags}
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ensc_sys_compilerwarnflags_C=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+       ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+       CFLAGS="$__ensc_check_warnflags_old_CFLAGS"
+
+       if test x"${ensc_sys_compilerwarnflags_C}" = x; then
+               echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+       else
+               echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+       fi
+
+
+
+
+
+echo 'void f(){}' > conftest.c
+  for i in -std=c99 -Wall -pedantic -W
+  do
+    echo "$as_me:$LINENO: checking whether $CC accepts $i" >&5
+echo $ECHO_N "checking whether $CC accepts $i... $ECHO_C" >&6
+    if test -z "`${CC} ${ensc_sys_compilerwarnflags_C} $i -c conftest.c 2>&1`"
+    then
+      CFLAGS="${CFLAGS} $i"
+      echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+    else
+      echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    fi
+  done
+  rm -f conftest.c conftest.o
+
+
+
+       warn_flags="-Werror -W"
+       echo "$as_me:$LINENO: checking whether the C++-compiler accepts ${warn_flags}" >&5
+echo $ECHO_N "checking whether the C++-compiler accepts ${warn_flags}... $ECHO_C" >&6
+       ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+       __ensc_check_warnflags_old_CFLAGS="${CXXFLAGS}"
+       CXXFLAGS="$warn_flags"
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+inline static void f(){}
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_cxx_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ensc_sys_compilerwarnflags_CXX=${warn_flags}
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ensc_sys_compilerwarnflags_CXX=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+       ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+       CXXFLAGS="$__ensc_check_warnflags_old_CFLAGS"
+
+       if test x"${ensc_sys_compilerwarnflags_CXX}" = x; then
+               echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+       else
+               echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+       fi
+
+
+
+
+
+  echo 'void f(){}' > conftest.cc
+  for i in -ansi   -Wall -pedantic -W -fmessage-length=0
+  do
+    echo "$as_me:$LINENO: checking whether $CXX accepts $i" >&5
+echo $ECHO_N "checking whether $CXX accepts $i... $ECHO_C" >&6
+    if test -z "`${CXX} ${ensc_sys_compilerwarnflags_CXX} $i -c conftest.cc 2>&1`"
+    then
+      CXXFLAGS="${CXXFLAGS} $i"
+      echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+    else
+      echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    fi
+  done
+  rm -f conftest.cc conftest.o
+
+
+echo "$as_me:$LINENO: checking whether to enable extra optimizations" >&5
+echo $ECHO_N "checking whether to enable extra optimizations... $ECHO_C" >&6
+# Check whether --enable-extra-optimizations or --disable-extra-optimizations was given.
+if test "${enable_extra_optimizations+set}" = set; then
+  enableval="$enable_extra_optimizations"
+  case "$enableval" in
+                 (yes) use_extra_optimizations=1;;
+                 (no)  use_extra_optimizations=;;
+                  (*)   { { echo "$as_me:$LINENO: error: '$enableval' is not a valid value for '--disable-extra-optimizations'" >&5
+echo "$as_me: error: '$enableval' is not a valid value for '--disable-extra-optimizations'" >&2;}
+   { (exit 1); exit 1; }; };;
+               esac
+else
+  use_extra_optimizations=1
+fi;
+
+if test x"$use_extra_optimizations" = x; then
+       echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+else
+       echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+
+
+echo 'void f(){}' > conftest.c
+  for i in -funit-at-a-time
+  do
+    echo "$as_me:$LINENO: checking whether $CC accepts $i" >&5
+echo $ECHO_N "checking whether $CC accepts $i... $ECHO_C" >&6
+    if test -z "`${CC} ${ensc_sys_compilerwarnflags_C} $i -c conftest.c 2>&1`"
+    then
+      CFLAGS="${CFLAGS} $i"
+      echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+    else
+      echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    fi
+  done
+  rm -f conftest.c conftest.o
+
+
+
+
+  echo 'void f(){}' > conftest.cc
+  for i in -funit-at-a-time
+  do
+    echo "$as_me:$LINENO: checking whether $CXX accepts $i" >&5
+echo $ECHO_N "checking whether $CXX accepts $i... $ECHO_C" >&6
+    if test -z "`${CXX} ${ensc_sys_compilerwarnflags_CXX} $i -c conftest.cc 2>&1`"
+    then
+      CXXFLAGS="${CXXFLAGS} $i"
+      echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+    else
+      echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    fi
+  done
+  rm -f conftest.cc conftest.o
+
+fi
+
+echo "$as_me:$LINENO: checking whether to enable debug-code in library" >&5
+echo $ECHO_N "checking whether to enable debug-code in library... $ECHO_C" >&6
+# Check whether --enable-lib-debug or --disable-lib-debug was given.
+if test "${enable_lib_debug+set}" = set; then
+  enableval="$enable_lib_debug"
+  case "$enableval" in
+                 (yes) use_lib_debug=1;;
+                  (no)  use_lib_debug=;;
+                  (*)   { { echo "$as_me:$LINENO: error: '$enableval' is not a valid value for '--enable-lib-debug'" >&5
+echo "$as_me: error: '$enableval' is not a valid value for '--enable-lib-debug'" >&2;}
+   { (exit 1); exit 1; }; };;
+               esac
+else
+   use_lib_debug=
+fi;
+
+if test x"$use_lib_debug" = x; then
+       LIB_DEBUG_CPPFLAGS=-DNDEBUG
+
+       echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+else
+
+       echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+fi
+
+echo "$as_me:$LINENO: checking whether to enable expensive tests" >&5
+echo $ECHO_N "checking whether to enable expensive tests... $ECHO_C" >&6
+# Check whether --enable-expensive-tests or --disable-expensive-tests was given.
+if test "${enable_expensive_tests+set}" = set; then
+  enableval="$enable_expensive_tests"
+  case "$enableval" in
+                (yes|no)  use_expensive_tests=$enableval;;
+                (*)       { { echo "$as_me:$LINENO: error: '$enableval' is not a valid value for '--disable-expensive-tests'" >&5
+echo "$as_me: error: '$enableval' is not a valid value for '--disable-expensive-tests'" >&2;}
+   { (exit 1); exit 1; }; };;
+              esac
+else
+   use_expensive_tests=yes
+fi;
+echo "$as_me:$LINENO: result: $use_expensive_tests" >&5
+echo "${ECHO_T}$use_expensive_tests" >&6
+
+ENSC_USE_EXPENSIVE_TESTS="$use_expensive_tests"
+
+
+
+
+       echo "$as_me:$LINENO: checking for declarations in <linux/personality.h>" >&5
+echo $ECHO_N "checking for declarations in <linux/personality.h>... $ECHO_C" >&6
+       echo "$as_me:$LINENO: result: " >&5
+echo "${ECHO_T}" >&6
+
+       ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+       echo "$as_me:$LINENO: checking whether MMAP_PAGE_ZERO is declared" >&5
+echo $ECHO_N "checking whether MMAP_PAGE_ZERO is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_MMAP_PAGE_ZERO+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef MMAP_PAGE_ZERO
+  char *p = (char *) MMAP_PAGE_ZERO;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_MMAP_PAGE_ZERO=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_MMAP_PAGE_ZERO=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_MMAP_PAGE_ZERO" >&5
+echo "${ECHO_T}$ac_cv_have_decl_MMAP_PAGE_ZERO" >&6
+if test $ac_cv_have_decl_MMAP_PAGE_ZERO = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_MMAP_PAGE_ZERO 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_MMAP_PAGE_ZERO 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether ADDR_LIMIT_32BIT is declared" >&5
+echo $ECHO_N "checking whether ADDR_LIMIT_32BIT is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_ADDR_LIMIT_32BIT+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef ADDR_LIMIT_32BIT
+  char *p = (char *) ADDR_LIMIT_32BIT;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_ADDR_LIMIT_32BIT=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_ADDR_LIMIT_32BIT=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_ADDR_LIMIT_32BIT" >&5
+echo "${ECHO_T}$ac_cv_have_decl_ADDR_LIMIT_32BIT" >&6
+if test $ac_cv_have_decl_ADDR_LIMIT_32BIT = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ADDR_LIMIT_32BIT 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ADDR_LIMIT_32BIT 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether SHORT_INODE is declared" >&5
+echo $ECHO_N "checking whether SHORT_INODE is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_SHORT_INODE+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef SHORT_INODE
+  char *p = (char *) SHORT_INODE;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_SHORT_INODE=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_SHORT_INODE=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_SHORT_INODE" >&5
+echo "${ECHO_T}$ac_cv_have_decl_SHORT_INODE" >&6
+if test $ac_cv_have_decl_SHORT_INODE = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_SHORT_INODE 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_SHORT_INODE 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether WHOLE_SECONDS is declared" >&5
+echo $ECHO_N "checking whether WHOLE_SECONDS is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_WHOLE_SECONDS+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef WHOLE_SECONDS
+  char *p = (char *) WHOLE_SECONDS;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_WHOLE_SECONDS=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_WHOLE_SECONDS=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_WHOLE_SECONDS" >&5
+echo "${ECHO_T}$ac_cv_have_decl_WHOLE_SECONDS" >&6
+if test $ac_cv_have_decl_WHOLE_SECONDS = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_WHOLE_SECONDS 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_WHOLE_SECONDS 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether STICKY_TIMEOUTS is declared" >&5
+echo $ECHO_N "checking whether STICKY_TIMEOUTS is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_STICKY_TIMEOUTS+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef STICKY_TIMEOUTS
+  char *p = (char *) STICKY_TIMEOUTS;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_STICKY_TIMEOUTS=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_STICKY_TIMEOUTS=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_STICKY_TIMEOUTS" >&5
+echo "${ECHO_T}$ac_cv_have_decl_STICKY_TIMEOUTS" >&6
+if test $ac_cv_have_decl_STICKY_TIMEOUTS = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STICKY_TIMEOUTS 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STICKY_TIMEOUTS 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether ADDR_LIMIT_3GB is declared" >&5
+echo $ECHO_N "checking whether ADDR_LIMIT_3GB is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_ADDR_LIMIT_3GB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef ADDR_LIMIT_3GB
+  char *p = (char *) ADDR_LIMIT_3GB;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_ADDR_LIMIT_3GB=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_ADDR_LIMIT_3GB=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_ADDR_LIMIT_3GB" >&5
+echo "${ECHO_T}$ac_cv_have_decl_ADDR_LIMIT_3GB" >&6
+if test $ac_cv_have_decl_ADDR_LIMIT_3GB = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ADDR_LIMIT_3GB 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ADDR_LIMIT_3GB 0
+_ACEOF
+
+
+fi
+
+
+
+       echo "$as_me:$LINENO: checking whether PER_LINUX is declared" >&5
+echo $ECHO_N "checking whether PER_LINUX is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_PER_LINUX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef PER_LINUX
+  char *p = (char *) PER_LINUX;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_PER_LINUX=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_PER_LINUX=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_PER_LINUX" >&5
+echo "${ECHO_T}$ac_cv_have_decl_PER_LINUX" >&6
+if test $ac_cv_have_decl_PER_LINUX = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_LINUX 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_LINUX 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether PER_LINUX_32BIT is declared" >&5
+echo $ECHO_N "checking whether PER_LINUX_32BIT is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_PER_LINUX_32BIT+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef PER_LINUX_32BIT
+  char *p = (char *) PER_LINUX_32BIT;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_PER_LINUX_32BIT=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_PER_LINUX_32BIT=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_PER_LINUX_32BIT" >&5
+echo "${ECHO_T}$ac_cv_have_decl_PER_LINUX_32BIT" >&6
+if test $ac_cv_have_decl_PER_LINUX_32BIT = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_LINUX_32BIT 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_LINUX_32BIT 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether PER_SVR4 is declared" >&5
+echo $ECHO_N "checking whether PER_SVR4 is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_PER_SVR4+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef PER_SVR4
+  char *p = (char *) PER_SVR4;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_PER_SVR4=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_PER_SVR4=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_PER_SVR4" >&5
+echo "${ECHO_T}$ac_cv_have_decl_PER_SVR4" >&6
+if test $ac_cv_have_decl_PER_SVR4 = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_SVR4 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_SVR4 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether PER_SVR3 is declared" >&5
+echo $ECHO_N "checking whether PER_SVR3 is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_PER_SVR3+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef PER_SVR3
+  char *p = (char *) PER_SVR3;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_PER_SVR3=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_PER_SVR3=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_PER_SVR3" >&5
+echo "${ECHO_T}$ac_cv_have_decl_PER_SVR3" >&6
+if test $ac_cv_have_decl_PER_SVR3 = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_SVR3 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_SVR3 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether PER_SCOSVR3 is declared" >&5
+echo $ECHO_N "checking whether PER_SCOSVR3 is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_PER_SCOSVR3+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef PER_SCOSVR3
+  char *p = (char *) PER_SCOSVR3;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_PER_SCOSVR3=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_PER_SCOSVR3=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_PER_SCOSVR3" >&5
+echo "${ECHO_T}$ac_cv_have_decl_PER_SCOSVR3" >&6
+if test $ac_cv_have_decl_PER_SCOSVR3 = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_SCOSVR3 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_SCOSVR3 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether PER_OSR5 is declared" >&5
+echo $ECHO_N "checking whether PER_OSR5 is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_PER_OSR5+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef PER_OSR5
+  char *p = (char *) PER_OSR5;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_PER_OSR5=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_PER_OSR5=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_PER_OSR5" >&5
+echo "${ECHO_T}$ac_cv_have_decl_PER_OSR5" >&6
+if test $ac_cv_have_decl_PER_OSR5 = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_OSR5 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_OSR5 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether PER_WYSEV386 is declared" >&5
+echo $ECHO_N "checking whether PER_WYSEV386 is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_PER_WYSEV386+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef PER_WYSEV386
+  char *p = (char *) PER_WYSEV386;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_PER_WYSEV386=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_PER_WYSEV386=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_PER_WYSEV386" >&5
+echo "${ECHO_T}$ac_cv_have_decl_PER_WYSEV386" >&6
+if test $ac_cv_have_decl_PER_WYSEV386 = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_WYSEV386 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_WYSEV386 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether PER_ISCR4 is declared" >&5
+echo $ECHO_N "checking whether PER_ISCR4 is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_PER_ISCR4+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef PER_ISCR4
+  char *p = (char *) PER_ISCR4;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_PER_ISCR4=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_PER_ISCR4=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_PER_ISCR4" >&5
+echo "${ECHO_T}$ac_cv_have_decl_PER_ISCR4" >&6
+if test $ac_cv_have_decl_PER_ISCR4 = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_ISCR4 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_ISCR4 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether PER_BSD is declared" >&5
+echo $ECHO_N "checking whether PER_BSD is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_PER_BSD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef PER_BSD
+  char *p = (char *) PER_BSD;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_PER_BSD=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_PER_BSD=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_PER_BSD" >&5
+echo "${ECHO_T}$ac_cv_have_decl_PER_BSD" >&6
+if test $ac_cv_have_decl_PER_BSD = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_BSD 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_BSD 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether PER_SUNOS is declared" >&5
+echo $ECHO_N "checking whether PER_SUNOS is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_PER_SUNOS+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef PER_SUNOS
+  char *p = (char *) PER_SUNOS;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_PER_SUNOS=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_PER_SUNOS=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_PER_SUNOS" >&5
+echo "${ECHO_T}$ac_cv_have_decl_PER_SUNOS" >&6
+if test $ac_cv_have_decl_PER_SUNOS = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_SUNOS 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_SUNOS 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether PER_XENIX is declared" >&5
+echo $ECHO_N "checking whether PER_XENIX is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_PER_XENIX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef PER_XENIX
+  char *p = (char *) PER_XENIX;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_PER_XENIX=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_PER_XENIX=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_PER_XENIX" >&5
+echo "${ECHO_T}$ac_cv_have_decl_PER_XENIX" >&6
+if test $ac_cv_have_decl_PER_XENIX = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_XENIX 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_XENIX 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether PER_LINUX32 is declared" >&5
+echo $ECHO_N "checking whether PER_LINUX32 is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_PER_LINUX32+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef PER_LINUX32
+  char *p = (char *) PER_LINUX32;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_PER_LINUX32=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_PER_LINUX32=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_PER_LINUX32" >&5
+echo "${ECHO_T}$ac_cv_have_decl_PER_LINUX32" >&6
+if test $ac_cv_have_decl_PER_LINUX32 = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_LINUX32 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_LINUX32 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether PER_LINUX32_3GB is declared" >&5
+echo $ECHO_N "checking whether PER_LINUX32_3GB is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_PER_LINUX32_3GB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef PER_LINUX32_3GB
+  char *p = (char *) PER_LINUX32_3GB;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_PER_LINUX32_3GB=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_PER_LINUX32_3GB=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_PER_LINUX32_3GB" >&5
+echo "${ECHO_T}$ac_cv_have_decl_PER_LINUX32_3GB" >&6
+if test $ac_cv_have_decl_PER_LINUX32_3GB = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_LINUX32_3GB 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_LINUX32_3GB 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether PER_IRIX32 is declared" >&5
+echo $ECHO_N "checking whether PER_IRIX32 is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_PER_IRIX32+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef PER_IRIX32
+  char *p = (char *) PER_IRIX32;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_PER_IRIX32=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_PER_IRIX32=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_PER_IRIX32" >&5
+echo "${ECHO_T}$ac_cv_have_decl_PER_IRIX32" >&6
+if test $ac_cv_have_decl_PER_IRIX32 = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_IRIX32 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_IRIX32 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether PER_IRIXN32 is declared" >&5
+echo $ECHO_N "checking whether PER_IRIXN32 is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_PER_IRIXN32+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef PER_IRIXN32
+  char *p = (char *) PER_IRIXN32;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_PER_IRIXN32=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_PER_IRIXN32=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_PER_IRIXN32" >&5
+echo "${ECHO_T}$ac_cv_have_decl_PER_IRIXN32" >&6
+if test $ac_cv_have_decl_PER_IRIXN32 = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_IRIXN32 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_IRIXN32 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether PER_IRIX64 is declared" >&5
+echo $ECHO_N "checking whether PER_IRIX64 is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_PER_IRIX64+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef PER_IRIX64
+  char *p = (char *) PER_IRIX64;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_PER_IRIX64=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_PER_IRIX64=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_PER_IRIX64" >&5
+echo "${ECHO_T}$ac_cv_have_decl_PER_IRIX64" >&6
+if test $ac_cv_have_decl_PER_IRIX64 = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_IRIX64 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_IRIX64 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether PER_RISCOS is declared" >&5
+echo $ECHO_N "checking whether PER_RISCOS is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_PER_RISCOS+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef PER_RISCOS
+  char *p = (char *) PER_RISCOS;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_PER_RISCOS=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_PER_RISCOS=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_PER_RISCOS" >&5
+echo "${ECHO_T}$ac_cv_have_decl_PER_RISCOS" >&6
+if test $ac_cv_have_decl_PER_RISCOS = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_RISCOS 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_RISCOS 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether PER_SOLARIS is declared" >&5
+echo $ECHO_N "checking whether PER_SOLARIS is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_PER_SOLARIS+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef PER_SOLARIS
+  char *p = (char *) PER_SOLARIS;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_PER_SOLARIS=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_PER_SOLARIS=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_PER_SOLARIS" >&5
+echo "${ECHO_T}$ac_cv_have_decl_PER_SOLARIS" >&6
+if test $ac_cv_have_decl_PER_SOLARIS = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_SOLARIS 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_SOLARIS 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether PER_UW7 is declared" >&5
+echo $ECHO_N "checking whether PER_UW7 is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_PER_UW7+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef PER_UW7
+  char *p = (char *) PER_UW7;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_PER_UW7=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_PER_UW7=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_PER_UW7" >&5
+echo "${ECHO_T}$ac_cv_have_decl_PER_UW7" >&6
+if test $ac_cv_have_decl_PER_UW7 = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_UW7 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_UW7 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether PER_HPUX is declared" >&5
+echo $ECHO_N "checking whether PER_HPUX is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_PER_HPUX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef PER_HPUX
+  char *p = (char *) PER_HPUX;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_PER_HPUX=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_PER_HPUX=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_PER_HPUX" >&5
+echo "${ECHO_T}$ac_cv_have_decl_PER_HPUX" >&6
+if test $ac_cv_have_decl_PER_HPUX = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_HPUX 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_HPUX 0
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking whether PER_OSF4 is declared" >&5
+echo $ECHO_N "checking whether PER_OSF4 is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_PER_OSF4+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <linux/personality.h>
+
+
+int
+main ()
+{
+#ifndef PER_OSF4
+  char *p = (char *) PER_OSF4;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_PER_OSF4=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_PER_OSF4=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_PER_OSF4" >&5
+echo "${ECHO_T}$ac_cv_have_decl_PER_OSF4" >&6
+if test $ac_cv_have_decl_PER_OSF4 = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_OSF4 1
+_ACEOF
+
+
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PER_OSF4 0
+_ACEOF
+
+
+fi
+
+
+       ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+       echo "$as_me:$LINENO: checking for initrddir" >&5
+echo $ECHO_N "checking for initrddir... $ECHO_C" >&6
+
+# Check whether --with-initrddir or --without-initrddir was given.
+if test "${with_initrddir+set}" = set; then
+  withval="$with_initrddir"
+  case "$withval" in
+                       yes|no) { { echo "$as_me:$LINENO: error: '$withval' is not a valid value for '--with-initrddir'" >&5
+echo "$as_me: error: '$withval' is not a valid value for '--with-initrddir'" >&2;}
+   { (exit 1); exit 1; }; };;
+                       *)      ensc_initrddir=$withval;;
+                    esac
+else
+  ensc_initrddir='$(sysconfdir)/init.d'
+fi;
+
+       if test "initrddir"; then
+               initrddir=$ensc_initrddir
+
+       fi
+
+       echo "$as_me:$LINENO: result: $ensc_initrddir" >&5
+echo "${ECHO_T}$ensc_initrddir" >&6
+
+
+       echo "$as_me:$LINENO: checking whether to enable release-mode" >&5
+echo $ECHO_N "checking whether to enable release-mode... $ECHO_C" >&6
+       # Check whether --enable-release or --disable-release was given.
+if test "${enable_release+set}" = set; then
+  enableval="$enable_release"
+  case "$enableval" in
+                         yes)  ensc_release_mode=yes;;
+                         no)   ensc_release_mode=no;;
+                         *)    { { echo "$as_me:$LINENO: error: '$enableval' is not a valid value for '--enable-release'" >&5
+echo "$as_me: error: '$enableval' is not a valid value for '--enable-release'" >&2;}
+   { (exit 1); exit 1; }; };;
+                      esac
+else
+   ensc_release_mode=no
+fi;
+
+       if test x"$ensc_release_mode" = xno; then
+               RELEASE_CPPFLAGS=
+       else
+               RELEASE_CPPFLAGS='-DNDEBUG'
+       fi
+
+
+       echo "$as_me:$LINENO: result: $ensc_release_mode" >&5
+echo "${ECHO_T}$ensc_release_mode" >&6
+
+
+
+case $host_cpu in
+       (i*86|athlon)   min_diet_ver=0.25;;
+       (ia64|hppa*)    min_diet_ver=0.29;;
+       (*)             min_diet_ver=0.28;;
+esac
+
+
+       echo "$as_me:$LINENO: checking whether to enable dietlibc" >&5
+echo $ECHO_N "checking whether to enable dietlibc... $ECHO_C" >&6
+
+
+
+
+       : ${DIET:=diet}
+       : ${DIETFLAGS=-Os}
+
+       # Check whether --enable-dietlibc or --disable-dietlibc was given.
+if test "${enable_dietlibc+set}" = set; then
+  enableval="$enable_dietlibc"
+  case "$enableval" in
+                         (yes) use_dietlibc=forced;;
+                         (no)  use_dietlibc=forced_no;;
+                         (*)   { { echo "$as_me:$LINENO: error: '$enableval' is not a valid value for --enable-dietlibc" >&5
+echo "$as_me: error: '$enableval' is not a valid value for --enable-dietlibc" >&2;}
+   { (exit 1); exit 1; }; };;
+                      esac
+else
+  which "$DIET" >/dev/null 2>/dev/null && use_dietlibc=detected || use_dietlibc=detected_no
+fi;
+
+       if test "$use_dietlibc" = detected -a "$min_diet_ver"; then
+           _dietlibc_ver=$($DIET -v 2>&1 | sed '1p;d')
+           _dietlibc_ver=${_dietlibc_ver##*diet version }
+           _dietlibc_ver=${_dietlibc_ver##*dietlibc-}
+           _dietlibc_ver_maj=${_dietlibc_ver%%.*}
+           _dietlibc_ver_min=${_dietlibc_ver##*.}
+           _dietlibc_ver_min=${_dietlibc_ver_min%%[!0-9]*}
+           _dietlibc_cmp="$min_diet_ver"
+           _dietlibc_cmp_maj=${_dietlibc_cmp%%.*}
+           _dietlibc_cmp_min=${_dietlibc_cmp##*.}
+
+           ENSC_VERSION_DIETLIBC=$_dietlibc_ver_maj.$_dietlibc_ver_min
+
+           let _dietlibc_ver=_dietlibc_ver_maj*1000+_dietlibc_ver_min 2>/dev/null || _dietlibc_ver=0
+           let _dietlibc_cmp=_dietlibc_cmp_maj*1000+_dietlibc_cmp_min
+
+           test $_dietlibc_ver -ge $_dietlibc_cmp || use_dietlibc=detected_old
+       else
+           ENSC_VERSION_DIETLIBC=
+           _dietlibc_ver=-1
+        fi
+
+       ENSC_VERSION_DIETLIBC_NUM=$_dietlibc_ver
+       ensc_have_dietlibc=no
+
+       case x"$use_dietlibc" in
+           xdetected)
+
+
+if true; then
+  USE_DIETLIBC_TRUE=
+  USE_DIETLIBC_FALSE='#'
+else
+  USE_DIETLIBC_TRUE='#'
+  USE_DIETLIBC_FALSE=
+fi
+
+               echo "$as_me:$LINENO: result: yes (autodetected, $ENSC_VERSION_DIETLIBC)" >&5
+echo "${ECHO_T}yes (autodetected, $ENSC_VERSION_DIETLIBC)" >&6
+               ensc_have_dietlibc=yes
+               ;;
+           xforced)
+
+
+if true; then
+  USE_DIETLIBC_TRUE=
+  USE_DIETLIBC_FALSE='#'
+else
+  USE_DIETLIBC_TRUE='#'
+  USE_DIETLIBC_FALSE=
+fi
+
+               echo "$as_me:$LINENO: result: yes (forced)" >&5
+echo "${ECHO_T}yes (forced)" >&6
+               ensc_have_dietlibc=yes
+               ;;
+           xdetected_no)
+
+
+if false; then
+  USE_DIETLIBC_TRUE=
+  USE_DIETLIBC_FALSE='#'
+else
+  USE_DIETLIBC_TRUE='#'
+  USE_DIETLIBC_FALSE=
+fi
+
+               echo "$as_me:$LINENO: result: no (detected)" >&5
+echo "${ECHO_T}no (detected)" >&6
+               ;;
+           xdetected_old)
+
+
+if false; then
+  USE_DIETLIBC_TRUE=
+  USE_DIETLIBC_FALSE='#'
+else
+  USE_DIETLIBC_TRUE='#'
+  USE_DIETLIBC_FALSE=
+fi
+
+               echo "$as_me:$LINENO: result: no (too old; $min_diet_ver+ required, $ENSC_VERSION_DIETLIBC found)" >&5
+echo "${ECHO_T}no (too old; $min_diet_ver+ required, $ENSC_VERSION_DIETLIBC found)" >&6
+               ;;
+           xforced_no)
+
+
+if false; then
+  USE_DIETLIBC_TRUE=
+  USE_DIETLIBC_FALSE='#'
+else
+  USE_DIETLIBC_TRUE='#'
+  USE_DIETLIBC_FALSE=
+fi
+
+               echo "$as_me:$LINENO: result: no (forced)" >&5
+echo "${ECHO_T}no (forced)" >&6
+               ;;
+           *)
+               { { echo "$as_me:$LINENO: error: internal error, use_dietlibc was \"$use_dietlibc\"" >&5
+echo "$as_me: error: internal error, use_dietlibc was \"$use_dietlibc\"" >&2;}
+   { (exit 1); exit 1; }; }
+               ;;
+       esac
+
+       if test x"$ensc_have_dietlibc" != xno; then
+
+
+
+
+       echo "$as_me:$LINENO: checking whether dietlibc supports C99" >&5
+echo $ECHO_N "checking whether dietlibc supports C99... $ECHO_C" >&6
+if test "${ensc_cv_c_dietlibc_c99+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+               _ensc_dietlibc_c99_old_CFLAGS=$CFLAGS
+               _ensc_dietlibc_c99_old_CC=$CC
+
+               CFLAGS="-std=c99"
+               CC="${DIET:-diet} $CC"
+
+               ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+               cat >conftest.$ac_ext <<_ACEOF
+/* */
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+                       cat >conftest.$ac_ext <<_ACEOF
+
+                               #include <stdint.h>
+                               #include <sys/cdefs.h>
+                               #if defined(inline)
+                               #  error 'inline' badly defined
+                               #endif
+                               volatile uint64_t       a;
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ensc_cv_c_dietlibc_c99=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ensc_cv_c_dietlibc_c99=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ensc_cv_c_dietlibc_c99='skipped (compiler does not support C99)'
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+               ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+               CC=$_ensc_dietlibc_c99_old_CC
+               CFLAGS=$_ensc_dietlibc_c99_old_CFLAGS
+
+fi
+echo "$as_me:$LINENO: result: $ensc_cv_c_dietlibc_c99" >&5
+echo "${ECHO_T}$ensc_cv_c_dietlibc_c99" >&6
+
+       if test x"$ensc_cv_c_dietlibc_c99" = xyes; then
+               cat >>confdefs.h <<\_ACEOF
+#define ENSC_DIETLIBC_C99 1
+_ACEOF
+
+       fi
+
+       fi
+
+
+if test x"$ensc_have_dietlibc" = xno; then
+       { echo "$as_me:$LINENO: WARNING: ***                                                         ***" >&5
+echo "$as_me: WARNING: ***                                                         ***" >&2;}
+       { echo "$as_me:$LINENO: WARNING: *** it is strongly recommended to link util-vserver against ***" >&5
+echo "$as_me: WARNING: *** it is strongly recommended to link util-vserver against ***" >&2;}
+       { echo "$as_me:$LINENO: WARNING: *** dietlibc;  glibc's NSS functions are very unreliable in ***" >&5
+echo "$as_me: WARNING: *** dietlibc;  glibc's NSS functions are very unreliable in ***" >&2;}
+       { echo "$as_me:$LINENO: WARNING: *** chroot() environments,  so you have to  expect problems ***" >&5
+echo "$as_me: WARNING: *** chroot() environments,  so you have to  expect problems ***" >&2;}
+       { echo "$as_me:$LINENO: WARNING: *** there.                                                  ***" >&5
+echo "$as_me: WARNING: *** there.                                                  ***" >&2;}
+       { echo "$as_me:$LINENO: WARNING: ***                                                         ***" >&5
+echo "$as_me: WARNING: ***                                                         ***" >&2;}
+
+
+if false; then
+  USE_DIETLIBC_COMPAT_TRUE=
+  USE_DIETLIBC_COMPAT_FALSE='#'
+else
+  USE_DIETLIBC_COMPAT_TRUE='#'
+  USE_DIETLIBC_COMPAT_FALSE=
+fi
+
+else
+       # HACK: libtool does not have cmdline options to build only
+       # dynamic libraries; this can be done with the
+       # '--disable-static' ./configure option only.  As our static
+       # libraries will be build with dietlibc, we have to do set
+       # this option which is evaluated by 'AC_PROG_LIBTOOL'
+       # below.  Therefore, this macro must not be called earlier.
+       enable_static=no
+
+
+
+
+
+       if test "$host_cpu" = x86_64 -a $ENSC_VERSION_DIETLIBC_NUM -le 0027; then
+               { echo "$as_me:$LINENO: WARNING: ***                                                             ***" >&5
+echo "$as_me: WARNING: ***                                                             ***" >&2;}
+               { echo "$as_me:$LINENO: WARNING: *** dietlibc<=0.27 is known to be broken for x86_64 systems     ***" >&5
+echo "$as_me: WARNING: *** dietlibc<=0.27 is known to be broken for x86_64 systems     ***" >&2;}
+               { echo "$as_me:$LINENO: WARNING: *** please make sure that at least the environ.S fix is applied ***" >&5
+echo "$as_me: WARNING: *** please make sure that at least the environ.S fix is applied ***" >&2;}
+               { echo "$as_me:$LINENO: WARNING: *** and lib/__nice.c added                                      ***" >&5
+echo "$as_me: WARNING: *** and lib/__nice.c added                                      ***" >&2;}
+               { echo "$as_me:$LINENO: WARNING: ***                                                             ***" >&5
+echo "$as_me: WARNING: ***                                                             ***" >&2;}
+       fi
+
+
+       echo "$as_me:$LINENO: checking whether to use alternative _syscallX macros" >&5
+echo $ECHO_N "checking whether to use alternative _syscallX macros... $ECHO_C" >&6
+       # Check whether --enable-alternative-syscalls or --disable-alternative-syscalls was given.
+if test "${enable_alternative_syscalls+set}" = set; then
+  enableval="$enable_alternative_syscalls"
+  case $enableval in
+                          (yes|no)   ensc_use_alternative_syscall_macros=$enableval;;
+                          (*)        { { echo "$as_me:$LINENO: error: '$enableval' is not a valid value for '--disable-alternative-syscalls'" >&5
+echo "$as_me: error: '$enableval' is not a valid value for '--disable-alternative-syscalls'" >&2;}
+   { (exit 1); exit 1; }; };;
+                      esac
+else
+  ensc_use_alternative_syscall_macros=yes
+fi;
+
+       case $ensc_use_alternative_syscall_macros in
+               (yes)
+cat >>confdefs.h <<\_ACEOF
+#define ENSC_USE_ALTERNATIVE_SYSCALL_MACROS 1
+_ACEOF
+;;
+       esac
+
+       echo "$as_me:$LINENO: result: $ensc_use_alternative_syscall_macros" >&5
+echo "${ECHO_T}$ensc_use_alternative_syscall_macros" >&6
+
+
+
+
+       echo "$as_me:$LINENO: checking whether dietlibc needs '-lcompat'" >&5
+echo $ECHO_N "checking whether dietlibc needs '-lcompat'... $ECHO_C" >&6
+if test "${ensc_cv_c_dietlibc_compat+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+               ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+               ensc_dietlibc_need_compat_old_CC=$CC
+               CC="${DIET:-diet} $CC"
+               cat >conftest.$ac_ext <<_ACEOF
+
+                       /* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include "$srcdir/lib/syscall-wrap.h"
+#include <errno.h>
+
+#define __NR_foo0              42
+#define __NR_foo1              42
+#define __NR_foo2              42
+#define __NR_foo3              42
+#define __NR_foo4              42
+#define __NR_foo5              42
+inline static _syscall0(int, foo0)
+inline static _syscall1(int, foo1, int, a)
+inline static _syscall2(int, foo2, int, a, int, b)
+inline static _syscall3(int, foo3, int, a, int, b, int, c)
+inline static _syscall4(int, foo4, int, a, int, b, int, c, int, d)
+inline static _syscall5(int, foo5, int, a, int, b, int, c, int, d, int, e)
+
+int
+main ()
+{
+foo0(); foo1(0); foo2(0,0); foo3(0,0,0); foo4(0,0,0,0); foo5(0,0,0,0,0);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ensc_cv_c_dietlibc_compat=no
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ensc_cv_c_dietlibc_compat=yes
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+               CC=$ensc_dietlibc_need_compat_old_CC
+               ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+echo "$as_me:$LINENO: result: $ensc_cv_c_dietlibc_compat" >&5
+echo "${ECHO_T}$ensc_cv_c_dietlibc_compat" >&6
+
+       if test x"USE_DIETLIBC_COMPAT" != x; then
+
+
+if test x"$ensc_cv_c_dietlibc_compat" = xyes; then
+  USE_DIETLIBC_COMPAT_TRUE=
+  USE_DIETLIBC_COMPAT_FALSE='#'
+else
+  USE_DIETLIBC_COMPAT_TRUE='#'
+  USE_DIETLIBC_COMPAT_FALSE=
+fi
+
+       fi
+
+fi
+
+
+
+if test x"$ensc_have_dietlibc" = xyes; then
+  ENSC_USE_DIETLIBC_TRUE=
+  ENSC_USE_DIETLIBC_FALSE='#'
+else
+  ENSC_USE_DIETLIBC_TRUE='#'
+  ENSC_USE_DIETLIBC_FALSE=
+fi
+
+
+
+if true; then
+  ENSC_USE_GLIBC_TRUE=
+  ENSC_USE_GLIBC_FALSE='#'
+else
+  ENSC_USE_GLIBC_TRUE='#'
+  ENSC_USE_GLIBC_FALSE=
+fi
+
+
+# HACK: see comments at 'enable_static' above
+# Check whether --enable-shared or --disable-shared was given.
+if test "${enable_shared+set}" = set; then
+  enableval="$enable_shared"
+  p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_shared=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_shared=yes
+fi;
+
+# Check whether --enable-static or --disable-static was given.
+if test "${enable_static+set}" = set; then
+  enableval="$enable_static"
+  p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_static=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_static=yes
+fi;
+
+# Check whether --enable-fast-install or --disable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then
+  enableval="$enable_fast_install"
+  p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_fast_install=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_fast_install=yes
+fi;
+
+echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
+echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6
+if test "${lt_cv_path_SED+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for lt_ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+      fi
+    done
+  done
+done
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+  test ! -f $lt_ac_sed && continue
+  cat /dev/null > conftest.in
+  lt_ac_count=0
+  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+  # Check for GNU sed and select it if it is found.
+  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+    lt_cv_path_SED=$lt_ac_sed
+    break
+  fi
+  while true; do
+    cat conftest.in conftest.in >conftest.tmp
+    mv conftest.tmp conftest.in
+    cp conftest.in conftest.nl
+    echo >>conftest.nl
+    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+    cmp -s conftest.out conftest.nl || break
+    # 10000 chars as input seems more than enough
+    test $lt_ac_count -gt 10 && break
+    lt_ac_count=`expr $lt_ac_count + 1`
+    if test $lt_ac_count -gt $lt_ac_max; then
+      lt_ac_max=$lt_ac_count
+      lt_cv_path_SED=$lt_ac_sed
+    fi
+  done
+done
+
+fi
+
+SED=$lt_cv_path_SED
+echo "$as_me:$LINENO: result: $SED" >&5
+echo "${ECHO_T}$SED" >&6
+
+echo "$as_me:$LINENO: checking for egrep" >&5
+echo $ECHO_N "checking for egrep... $ECHO_C" >&6
+if test "${ac_cv_prog_egrep+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+    then ac_cv_prog_egrep='grep -E'
+    else ac_cv_prog_egrep='egrep'
+    fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
+echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+ EGREP=$ac_cv_prog_egrep
+
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+  withval="$with_gnu_ld"
+  test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+  echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+       test "$with_gnu_ld" != no && break
+       ;;
+      *)
+       test "$with_gnu_ld" != yes && break
+       ;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
+if test "${lt_cv_ld_reload_flag+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_ld_reload_flag='-r'
+fi
+echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
+echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
+if test "${lt_cv_path_NM+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    tmp_nm="$ac_dir/${ac_tool_prefix}nm"
+    if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+      # Check to see if the nm accepts a BSD-compat flag.
+      # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+      #   nm: unknown option "B" ignored
+      # Tru64's nm complains that /dev/null is an invalid object file
+      case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+      */dev/null* | *'Invalid file or object type'*)
+       lt_cv_path_NM="$tmp_nm -B"
+       break
+        ;;
+      *)
+       case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+       */dev/null*)
+         lt_cv_path_NM="$tmp_nm -p"
+         break
+         ;;
+       *)
+         lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+         continue # so that we can try to find one that supports BSD flags
+         ;;
+       esac
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi
+fi
+echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
+echo "${ECHO_T}$lt_cv_path_NM" >&6
+NM="$lt_cv_path_NM"
+
+echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
+echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6
+if test "${lt_cv_deplibs_check_method+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[45]*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump'.
+  lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | kfreebsd*-gnu | dragonfly*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case "$host_cpu" in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+nto-qnx*)
+  lt_cv_deplibs_check_method=unknown
+  ;;
+
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sco3.2v5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+  enableval="$enable_libtool_lock"
+
+fi;
+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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; 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 10466 "configure"' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; 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-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    case "`/usr/bin/file conftest.o`" in
+    *32-bit*)
+      case $host in
+        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-*linux*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        ppc*-*linux*|powerpc*-*linux*)
+          LD="${LD-ld} -m elf64ppc"
+          ;;
+        s390*-*linux*)
+          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"
+  echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
+if test "${lt_cv_cc_needs_belf+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+     cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  lt_cv_cc_needs_belf=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+lt_cv_cc_needs_belf=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+     ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
+  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
+  ;;
+
+esac
+
+need_locks="$enable_libtool_lock"
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if test "${ac_cv_prog_CPP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+echo "$as_me:$LINENO: result: $CPP" >&5
+echo "${ECHO_T}$CPP" >&6
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_header_stdc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+                  (('a' <= (c) && (c) <= 'i') \
+                    || ('j' <= (c) && (c) <= 'r') \
+                    || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+       || toupper (i) != TOUPPER (i))
+      exit(2);
+  exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+
+
+
+
+
+
+
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+                 inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_Header=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+for ac_header in dlfcn.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------------------------ ##
+## Report this to enrico.scholz@informatik.tu-chemnitz.de ##
+## ------------------------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+    (test "X$CXX" != "Xg++"))) ; then
+  ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
+echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
+if test -z "$CXXCPP"; then
+  if test "${ac_cv_prog_CXXCPP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+      # Double quotes because CXXCPP needs to be expanded
+    for CXXCPP in "$CXX -E" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+  CXXCPP=$ac_cv_prog_CXXCPP
+else
+  ac_cv_prog_CXXCPP=$CXXCPP
+fi
+echo "$as_me:$LINENO: result: $CXXCPP" >&5
+echo "${ECHO_T}$CXXCPP" >&6
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
   ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+fi
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$F77"; then
+  ac_cv_prog_F77="$F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+F77=$ac_cv_prog_F77
+if test -n "$F77"; then
+  echo "$as_me:$LINENO: result: $F77" >&5
+echo "${ECHO_T}$F77" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$F77" && break
+  done
+fi
+if test -z "$F77"; then
+  ac_ct_F77=$F77
+  for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_F77"; then
+  ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_F77="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_F77=$ac_cv_prog_ac_ct_F77
+if test -n "$ac_ct_F77"; then
+  echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
+echo "${ECHO_T}$ac_ct_F77" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_F77" && break
+done
+
+  F77=$ac_ct_F77
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:11580:" \
+     "checking for Fortran 77 compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+rm -f a.out
+
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file.  (Note that this only needs to work for GNU compilers.)
+ac_save_ext=$ac_ext
+ac_ext=F
+echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6
+if test "${ac_cv_f77_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+      program main
+#ifndef __GNUC__
+       choke me
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_f77_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FFLAGS+set}
+ac_save_FFLAGS=$FFLAGS
+FFLAGS=
+echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
+echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_f77_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  FFLAGS=-g
+cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_f77_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_f77_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_f77_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
+echo "${ECHO_T}$ac_cv_prog_f77_g" >&6
+if test "$ac_test_FFLAGS" = set; then
+  FFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_f77_g = yes; then
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-g -O2"
+  else
+    FFLAGS="-g"
+  fi
+else
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-O2"
+  else
+    FFLAGS=
+  fi
+fi
+
+G77=`test $ac_compiler_gnu = yes && echo yes`
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+
+# find the maximum length of command line arguments
+echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6
+if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+    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*)
+    # 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 *BSD
+    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`
+    ;;
+  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
+    ;;
+  *)
+    # 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.
+    SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+    while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
+              = "XX$teststring") >/dev/null 2>&1 &&
+           new_result=`expr "X$teststring" : ".*" 2>&1` &&
+           lt_cv_sys_max_cmd_len=$new_result &&
+           test $i != 17 # 1/2 MB should be enough
+    do
+      i=`expr $i + 1`
+      teststring=$teststring$teststring
+    done
+    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`
+    ;;
+  esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+  echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6
+else
+  echo "$as_me:$LINENO: result: none" >&5
+echo "${ECHO_T}none" >&6
+fi
+
+
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
+echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6
+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[BCDT]'
+  ;;
+cygwin* | mingw* | pw32*)
+  symcode='[ABCDGISTW]'
+  ;;
+hpux*) # Its linker distinguishes data from code symbols
+  if test "$host_cpu" = ia64; then
+    symcode='[ABCDEGRST]'
+  fi
+  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+  lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  ;;
+linux*)
+  if test "$host_cpu" = ia64; then
+    symcode='[ABCDGIRSTW]'
+    lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+    lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[BCDEGRST]'
+  ;;
+osf*)
+  symcode='[BCDEGQRST]'
+  ;;
+solaris* | sysv5*)
+  symcode='[BDRT]'
+  ;;
+sysv4)
+  symcode='[DFNSTU]'
+  ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+  # Write the raw and C identifiers.
+  lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[      ]\($symcode$symcode*\)[         ][      ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
+  (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+       mv -f "$nlist"T "$nlist"
+      else
+       rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if grep ' nm_test_var$' "$nlist" >/dev/null; then
+       if grep ' nm_test_func$' "$nlist" >/dev/null; then
+         cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+         # Now generate the symbol file.
+         eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+         cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr_t address;
+}
+lt_preloaded_symbols[] =
+{
+EOF
+         $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+         cat <<\EOF >> conftest.$ac_ext
+  {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+         # Now try linking the two files.
+         mv conftest.$ac_objext conftstm.$ac_objext
+         lt_save_LIBS="$LIBS"
+         lt_save_CFLAGS="$CFLAGS"
+         LIBS="conftstm.$ac_objext"
+         CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+         if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext}; then
+           pipe_works=yes
+         fi
+         LIBS="$lt_save_LIBS"
+         CFLAGS="$lt_save_CFLAGS"
+       else
+         echo "cannot find nm_test_func in $nlist" >&5
+       fi
+      else
+       echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    cat conftest.$ac_ext >&5
+  fi
+  rm -f conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  echo "$as_me:$LINENO: result: failed" >&5
+echo "${ECHO_T}failed" >&6
+else
+  echo "$as_me:$LINENO: result: ok" >&5
+echo "${ECHO_T}ok" >&6
+fi
+
+echo "$as_me:$LINENO: checking for objdir" >&5
+echo $ECHO_N "checking for objdir... $ECHO_C" >&6
+if test "${lt_cv_objdir+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  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
+fi
+echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
+echo "${ECHO_T}$lt_cv_objdir" >&6
+objdir=$lt_cv_objdir
+
+
+
+
+
+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.
+Xsed='sed -e 1s/^X//'
+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 avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AR+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AR="${ac_tool_prefix}ar"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  echo "$as_me:$LINENO: result: $AR" >&5
+echo "${ECHO_T}$AR" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+  ac_ct_AR=$AR
+  # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_AR="ar"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false"
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+echo "${ECHO_T}$ac_ct_AR" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  AR=$ac_ct_AR
+else
+  AR="$ac_cv_prog_AR"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  echo "$as_me:$LINENO: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  RANLIB=$ac_ct_RANLIB
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  STRIP=$ac_ct_STRIP
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+    ;;
+  *)
+    old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+for cc_temp in $compiler""; 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-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/${ac_tool_prefix}file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+      if test -n "$file_magic_test_file"; then
+       case $deplibs_check_method in
+       "file_magic "*)
+         file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+           $EGREP "$file_magic_regex" > /dev/null; then
+           :
+         else
+           cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+         fi ;;
+       esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    echo "$as_me:$LINENO: checking for file" >&5
+echo $ECHO_N "checking for file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/file"
+      if test -n "$file_magic_test_file"; then
+       case $deplibs_check_method in
+       "file_magic "*)
+         file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+           $EGREP "$file_magic_regex" > /dev/null; then
+           :
+         else
+           cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+         fi ;;
+       esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  else
+    MAGIC_CMD=:
+  fi
+fi
+
+  fi
+  ;;
+esac
+
+enable_dlopen=no
+enable_win32_dll=no
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+  enableval="$enable_libtool_lock"
+
+fi;
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+
+# Check whether --with-pic or --without-pic was given.
+if test "${with_pic+set}" = set; then
+  withval="$with_pic"
+  pic_mode="$withval"
+else
+  pic_mode=default
+fi;
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+lt_save_CC="$CC"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+#
+# Check for any special shared library compilation flags.
+#
+lt_prog_cc_shlib=
+if test "$GCC" = no; then
+  case $host_os in
+  sco3.2v5*)
+    lt_prog_cc_shlib='-belf'
+    ;;
+  esac
+fi
+if test -n "$lt_prog_cc_shlib"; then
+  { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5
+echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;}
+  if echo "$old_CC $old_CFLAGS " | grep "[     ]$lt_prog_cc_shlib[     ]" >/dev/null; then :
+  else
+    { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5
+echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;}
+    lt_cv_prog_cc_can_build_shared=no
+  fi
+fi
+
+
+#
+# Check to make sure the static flag actually works.
+#
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_static_works=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_prog_compiler_static"
+   printf "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The compiler 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>&5
+       $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp
+       $SED '/^$/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_prog_compiler_static_works=yes
+       fi
+     else
+       lt_prog_compiler_static_works=yes
+     fi
+   fi
+   $rm conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works" >&6
+
+if test x"$lt_prog_compiler_static_works" = xyes; then
+    :
+else
+    lt_prog_compiler_static=
+fi
+
+
+
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+  lt_prog_compiler_no_builtin_flag=' -fno-builtin'
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # 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}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:12678: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:12682: \$? = $ac_status" >&5
+   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 >conftest.exp
+     $SED '/^$/d' conftest.err >conftest.er2
+     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl='-Wl,'
+    lt_prog_compiler_static='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       lt_prog_compiler_pic=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+       # +Z the default
+       ;;
+      *)
+       lt_prog_compiler_pic='-fPIC'
+       ;;
+      esac
+      ;;
+
+    *)
+      lt_prog_compiler_pic='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl='-Wl,'
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static='-Bstatic'
+      else
+       lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+      darwin*)
+        # PIC is the default on this platform
+        # Common symbols not allowed in MH_DYLIB files
+       case $cc_basename in
+         xlc*)
+         lt_prog_compiler_pic='-qnocommon'
+         lt_prog_compiler_wl='-Wl,'
+         ;;
+       esac
+       ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+       # +Z the default
+       ;;
+      *)
+       lt_prog_compiler_pic='+Z'
+       ;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    linux*)
+      case $cc_basename in
+      icc* | ecc*)
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='-KPIC'
+       lt_prog_compiler_static='-static'
+        ;;
+      pgcc* | pgf77* | pgf90*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+       # which looks to be a dead project)
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='-fpic'
+       lt_prog_compiler_static='-static'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      lt_prog_compiler_pic='-Kpic'
+      lt_prog_compiler_static='-dn'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+       lt_prog_compiler_wl='-Qoption ld ';;
+      *)
+       lt_prog_compiler_wl='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl='-Qoption ld '
+      lt_prog_compiler_pic='-PIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+       lt_prog_compiler_pic='-Kconform_pic'
+       lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_can_build_shared=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic='-pic'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+   # 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}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:12940: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:12944: \$? = $ac_status" >&5
+   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 >conftest.exp
+     $SED '/^$/d' conftest.err >conftest.er2
+     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_prog_compiler_pic_works=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6
+
+if test x"$lt_prog_compiler_pic_works" = xyes; then
+    case $lt_prog_compiler_pic in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+     esac
+else
+    lt_prog_compiler_pic=
+     lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic=
+    ;;
+  *)
+    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$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}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:13002: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:13006: \$? = $ac_status" >&5
+   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 > out/conftest.exp
+     $SED '/^$/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w .
+   $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 ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  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
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+  runpath_var=
+  allow_undefined_flag=
+  enable_shared_with_static_runtimes=no
+  archive_cmds=
+  archive_expsym_cmds=
+  old_archive_From_new_cmds=
+  old_archive_from_expsyms_cmds=
+  export_dynamic_flag_spec=
+  whole_archive_flag_spec=
+  thread_safe_flag_spec=
+  hardcode_libdir_flag_spec=
+  hardcode_libdir_flag_spec_ld=
+  hardcode_libdir_separator=
+  hardcode_direct=no
+  hardcode_minus_L=no
+  hardcode_shlibpath_var=unsupported
+  link_all_deplibs=unknown
+  hardcode_automatic=no
+  module_cmds=
+  module_expsym_cmds=
+  always_export_symbols=no
+  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+  # Just being paranoid about ensuring that cc_basename is set.
+  for cc_temp in $compiler""; 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-%%"`
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+       whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+       whole_archive_flag_spec=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>/dev/null` in
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+       ld_shlibs=no
+       cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+
+      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      ld_shlibs=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+       allow_undefined_flag=unsupported
+       # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+       # support --undefined.  This deserves some investigation.  FIXME
+       archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+       ld_shlibs=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      allow_undefined_flag=unsupported
+      always_export_symbols=no
+      enable_shared_with_static_runtimes=yes
+      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+       # If the export-symbols file already is a .def file (1st line
+       # is EXPORTS), use it as is; otherwise, prepend...
+       archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+         cp $export_symbols $output_objdir/$soname.def;
+       else
+         echo EXPORTS > $output_objdir/$soname.def;
+         cat $export_symbols >> $output_objdir/$soname.def;
+       fi~
+       $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
+      else
+       ld_shlibs=no
+      fi
+      ;;
+
+    linux*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+       tmp_addflag=
+       case $cc_basename,$host_cpu in
+       pgcc*)                          # Portland Group C compiler
+         whole_archive_flag_spec=
+         ;;
+       pgf77* | pgf90* )                       # Portland Group f77 and f90 compilers
+         whole_archive_flag_spec=
+         tmp_addflag=' -fpic -Mnomain' ;;
+       ecc*,ia64* | icc*,ia64*)                # Intel C compiler on ia64
+         tmp_addflag=' -i_dynamic' ;;
+       efc*,ia64* | ifort*,ia64*)      # Intel Fortran compiler on ia64
+         tmp_addflag=' -i_dynamic -nofor_main' ;;
+       ifc* | ifort*)                  # Intel Fortran compiler
+         tmp_addflag=' -nofor_main' ;;
+       esac
+       archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+       if test $supports_anon_versioning = yes; then
+         archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
+  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+  $echo "local: *; };" >> $output_objdir/$libname.ver~
+         $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+       fi
+      else
+       ld_shlibs=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+       archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+       wlarc=
+      else
+       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris* | sysv5*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+       ld_shlibs=no
+       cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       ld_shlibs=no
+      fi
+      ;;
+
+    sunos4*)
+      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       ld_shlibs=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec=
+      export_dynamic_flag_spec=
+      whole_archive_flag_spec=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag=unsupported
+      always_export_symbols=yes
+      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L=yes
+      if test "$GCC" = yes && test -z "$link_static_flag"; then
+       # Neither direct hardcoding nor static linking is supported with a
+       # broken collect2.
+       hardcode_direct=unsupported
+      fi
+      ;;
+
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+       # On IA64, the linker does run time linking by default, so we don't
+       # have to do anything special.
+       aix_use_runtimelinking=no
+       exp_sym_flag='-Bexport'
+       no_entry_flag=""
+      else
+       # If we're using GNU nm, then we don't want the "-C" option.
+       # -C means demangle to AIX nm, but means don't demangle with GNU nm
+       if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+         export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+       else
+         export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+       fi
+       aix_use_runtimelinking=no
+
+       # Test if we are trying to use run time linking or normal
+       # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+       # need to do runtime linking.
+       case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+         for ld_flag in $LDFLAGS; do
+         if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+           aix_use_runtimelinking=yes
+           break
+         fi
+         done
+       esac
+
+       exp_sym_flag='-bexport'
+       no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds=''
+      hardcode_direct=yes
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+
+      if test "$GCC" = yes; then
+       case $host_os in aix4.[012]|aix4.[012].*)
+       # We only want to do this on AIX 4.2 and lower, the check
+       # below for broken collect2 doesn't work under 4.3+
+         collect2name=`${CC} -print-prog-name=collect2`
+         if test -f "$collect2name" && \
+          strings "$collect2name" | grep resolve_lib_name >/dev/null
+         then
+         # We have reworked collect2
+         hardcode_direct=yes
+         else
+         # We have old collect2
+         hardcode_direct=unsupported
+         # It fails to find uninstalled libraries when the uninstalled
+         # path is not listed in the libpath.  Setting hardcode_minus_L
+         # to unsupported forces relinking
+         hardcode_minus_L=yes
+         hardcode_libdir_flag_spec='-L$libdir'
+         hardcode_libdir_separator=
+         fi
+       esac
+       shared_flag='-shared'
+       if test "$aix_use_runtimelinking" = yes; then
+         shared_flag="$shared_flag "'${wl}-G'
+       fi
+      else
+       # not using gcc
+       if test "$host_cpu" = ia64; then
+       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+       # chokes on -Wl,-G. The following line is correct:
+         shared_flag='-G'
+       else
+       if test "$aix_use_runtimelinking" = yes; then
+           shared_flag='${wl}-G'
+         else
+           shared_flag='${wl}-bM:SRE'
+       fi
+       fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols=yes
+      if test "$aix_use_runtimelinking" = yes; then
+       # Warning - without using the other runtime loading flags (-brtl),
+       # -berok will link without error, but may produce a broken library.
+       allow_undefined_flag='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+       hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+       archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+       if test "$host_cpu" = ia64; then
+         hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+         allow_undefined_flag="-z nodefs"
+         archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+       else
+        # Determine the default libpath from the value encoded in an empty executable.
+        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+         # Warning - without using the other run time loading flags,
+         # -berok will link without error, but may produce a broken library.
+         no_undefined_flag=' ${wl}-bernotok'
+         allow_undefined_flag=' ${wl}-berok'
+         # -bexpall does not export symbols beginning with underscore (_)
+         always_export_symbols=yes
+         # Exported symbols can be pulled into shared objects from archives
+         whole_archive_flag_spec=' '
+         archive_cmds_need_lc=yes
+         # This is similar to how AIX traditionally builds it's shared libraries.
+         archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+       fi
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs=no
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec=' '
+      allow_undefined_flag=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes=yes
+      ;;
+
+    darwin* | rhapsody*)
+      case "$host_os" in
+        rhapsody* | darwin1.[012])
+         allow_undefined_flag='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[012])
+               allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+      esac
+      archive_cmds_need_lc=no
+      hardcode_direct=no
+      hardcode_automatic=yes
+      hardcode_shlibpath_var=unsupported
+      whole_archive_flag_spec=''
+      link_all_deplibs=yes
+    if test "$GCC" = yes ; then
+       output_verbose_link_cmd='echo'
+        archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+      archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      module_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+         archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+         module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+         archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          module_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         ld_shlibs=no
+          ;;
+      esac
+    fi
+      ;;
+
+    dgux*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | kfreebsd*-gnu | dragonfly*)
+      archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+       archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+       archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_direct=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L=yes
+      export_dynamic_flag_spec='${wl}-E'
+      ;;
+
+    hpux10* | hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+       case "$host_cpu" in
+       hppa*64*|ia64*)
+         archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       esac
+      else
+       case "$host_cpu" in
+       hppa*64*|ia64*)
+         archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+         ;;
+       *)
+         archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+         ;;
+       esac
+      fi
+      if test "$with_gnu_ld" = no; then
+       case "$host_cpu" in
+       hppa*64*)
+         hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+         hardcode_libdir_flag_spec_ld='+b $libdir'
+         hardcode_libdir_separator=:
+         hardcode_direct=no
+         hardcode_shlibpath_var=no
+         ;;
+       ia64*)
+         hardcode_libdir_flag_spec='-L$libdir'
+         hardcode_direct=no
+         hardcode_shlibpath_var=no
+
+         # hardcode_minus_L: Not really in the search PATH,
+         # but as the default location of the library.
+         hardcode_minus_L=yes
+         ;;
+       *)
+         hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+         hardcode_libdir_separator=:
+         hardcode_direct=yes
+         export_dynamic_flag_spec='${wl}-E'
+
+         # hardcode_minus_L: Not really in the search PATH,
+         # but as the default location of the library.
+         hardcode_minus_L=yes
+         ;;
+       esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+       archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+       hardcode_libdir_flag_spec_ld='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      link_all_deplibs=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+       archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+       archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    newsos6)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_shlibpath_var=no
+      ;;
+
+    openbsd*)
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+       archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+       hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+       export_dynamic_flag_spec='${wl}-E'
+      else
+       case $host_os in
+        openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+          archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+          hardcode_libdir_flag_spec='-R$libdir'
+          ;;
+        *)
+          archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+          hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+          ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      allow_undefined_flag=unsupported
+      archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+       allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+       allow_undefined_flag=' -expect_unresolved \*'
+       archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+
+    osf4* | osf5*)     # as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+       allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      else
+       allow_undefined_flag=' -expect_unresolved \*'
+       archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+       archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+       $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+       # Both c and cxx compiler support -rpath directly
+       hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      hardcode_libdir_separator=:
+      ;;
+
+    sco3.2v5*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='${wl}-Bexport'
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ;;
+
+    solaris*)
+      no_undefined_flag=' -z text'
+      if test "$GCC" = yes; then
+       wlarc='${wl}'
+       archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+         $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+       wlarc=''
+       archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+       archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+       $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_shlibpath_var=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+       # The compiler driver will combine linker options so we
+       # cannot just pass the convience library names through
+       # without $wl, iff we do not link with $LD.
+       # Luckily, gcc supports the same syntax we need for Sun Studio.
+       # Supported since Solaris 2.6 (maybe 2.5.1?)
+       case $wlarc in
+       '')
+         whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+       *)
+         whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+       esac ;;
+      esac
+      link_all_deplibs=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+       # Use $CC to link under sequent, because it throws in some extra .o
+       # files that make .init and .fini sections work.
+       archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+       sni)
+         archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         hardcode_direct=yes # is this really true???
+       ;;
+       siemens)
+         ## LD is ld it makes a PLAMLIB
+         ## CC just makes a GrossModule.
+         archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+         reload_cmds='$CC -r -o $output$reload_objs'
+         hardcode_direct=no
+        ;;
+       motorola)
+         archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+       ;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+       hardcode_shlibpath_var=no
+       runpath_var=LD_RUN_PATH
+       hardcode_runpath_var=yes
+       ld_shlibs=yes
+      fi
+      ;;
+
+    sysv4.2uw2*)
+      archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=no
+      hardcode_shlibpath_var=no
+      hardcode_runpath_var=yes
+      runpath_var=LD_RUN_PATH
+      ;;
+
+   sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[78]* | unixware7*)
+      no_undefined_flag='${wl}-z ${wl}text'
+      if test "$GCC" = yes; then
+       archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv5*)
+      no_undefined_flag=' -z text'
+      # $CC -shared without GNU ld will not create a library from C++
+      # object files and a static libstdc++, better avoid it by now
+      archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+               $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      hardcode_libdir_flag_spec=
+      hardcode_shlibpath_var=no
+      runpath_var='LD_RUN_PATH'
+      ;;
+
+    uts4*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      ld_shlibs=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+echo "${ECHO_T}$ld_shlibs" >&6
+test "$ld_shlibs" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag
+        allow_undefined_flag=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+         archive_cmds_need_lc=no
+        else
+         archive_cmds_need_lc=yes
+        fi
+        allow_undefined_flag=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
+echo "${ECHO_T}$archive_cmds_need_lc" >&6
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+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"
+if test "$GCC" = yes; then
+  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 ';' >/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.
+    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
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+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'
+  ;;
+
+aix4* | aix5*)
+  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*)
+  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'
+  ;;
+
+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*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    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'
+    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*)
+      # 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}${versuffix}$shared_ext ${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)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  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
+  ;;
+
+kfreebsd*-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
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  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
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    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'
+  ;;
+
+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*)
+  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
+  # 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
+
+  # find out which ABI we are using
+  libsuff=
+  case "$host_cpu" in
+  x86_64*|s390x*|powerpc64*)
+    echo '#line 14387 "configure"' > conftest.$ac_ext
+    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+      case `/usr/bin/file conftest.$ac_objext` in
+      *64-bit*)
+        libsuff=64
+        sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+        ;;
+      esac
+    fi
+    rm -rf conftest*
+    ;;
+  esac
+
+  # 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)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $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'
+  ;;
+
+knetbsd*-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
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU 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=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
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  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='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  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${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  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
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  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
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  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
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" || \
+   test -n "$runpath_var" || \
+   test "X$hardcode_automatic" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct" != 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_AC_TAGVAR(hardcode_shlibpath_var, )" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action" >&5
+echo "${ECHO_T}$hardcode_action" >&6
+
+if test "$hardcode_action" = relink; 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
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+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"
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+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"
+         echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+       else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+       ;;
+   *)
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    ;;
+  esac
+fi
+
+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*)
+    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
+    echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+   ;;
+
+  *)
+    echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+  lt_cv_dlopen="shl_load"
+else
+  echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+  echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char dlopen (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+  lt_cv_dlopen="dlopen"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_svld_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_dld_link=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  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"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+         if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 15258 "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
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#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); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+         if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 15356 "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
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#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); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+    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
+
+
+# Report which librarie types wil actually be built
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+
+aix4* | aix5*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+    ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # 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
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler \
+    CC \
+    LD \
+    lt_prog_compiler_wl \
+    lt_prog_compiler_pic \
+    lt_prog_compiler_static \
+    lt_prog_compiler_no_builtin_flag \
+    export_dynamic_flag_spec \
+    thread_safe_flag_spec \
+    whole_archive_flag_spec \
+    enable_shared_with_static_runtimes \
+    old_archive_cmds \
+    old_archive_from_new_cmds \
+    predep_objects \
+    postdep_objects \
+    predeps \
+    postdeps \
+    compiler_lib_search_path \
+    archive_cmds \
+    archive_expsym_cmds \
+    postinstall_cmds \
+    postuninstall_cmds \
+    old_archive_from_expsyms_cmds \
+    allow_undefined_flag \
+    no_undefined_flag \
+    export_symbols_cmds \
+    hardcode_libdir_flag_spec \
+    hardcode_libdir_flag_spec_ld \
+    hardcode_libdir_separator \
+    hardcode_automatic \
+    module_cmds \
+    module_expsym_cmds \
+    lt_cv_prog_compiler_c_o \
+    exclude_expsyms \
+    include_expsyms; do
+
+    case $var in
+    old_archive_cmds | \
+    old_archive_from_new_cmds | \
+    archive_cmds | \
+    archive_expsym_cmds | \
+    module_cmds | \
+    module_expsym_cmds | \
+    old_archive_from_expsyms_cmds | \
+    export_symbols_cmds | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="${ofile}T"
+  trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+  $rm -f "$cfgfile"
+  { echo "$as_me:$LINENO: creating $ofile" >&5
+echo "$as_me: creating $ofile" >&6;}
+
+  cat <<__EOF__ >> "$cfgfile"
+#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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.
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e 1s/^X//"
+
+# 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
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# ### END LIBTOOL CONFIG
+
+__EOF__
+
+
+  case $host_os in
+  aix3*)
+    cat <<\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
+EOF
+    ;;
+  esac
+
+  # 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 '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+  mv -f "$cfgfile" "$ofile" || \
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+
+# Check whether --with-tags or --without-tags was given.
+if test "${with_tags+set}" = set; then
+  withval="$with_tags"
+  tagnames="$withval"
+fi;
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+  if test ! -f "${ofile}"; then
+    { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;}
+  fi
+
+  if test -z "$LTCC"; then
+    eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+    if test -z "$LTCC"; then
+      { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;}
+    else
+      { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5
+echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;}
+    fi
+  fi
+
+  # Extract list of available tagged configurations in $ofile.
+  # Note that this assumes the entire list is on one line.
+  available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+  lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+  for tagname in $tagnames; do
+    IFS="$lt_save_ifs"
+    # Check whether tagname contains only valid characters
+    case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in
+    "") ;;
+    *)  { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5
+echo "$as_me: error: invalid tag name: $tagname" >&2;}
+   { (exit 1); exit 1; }; }
+       ;;
+    esac
+
+    if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+    then
+      { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5
+echo "$as_me: error: tag name \"$tagname\" already exists" >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+
+    # Update the list of available tags.
+    if test -n "$tagname"; then
+      echo appending configuration tag \"$tagname\" to $ofile
+
+      case $tagname in
+      CXX)
+       if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+           ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+           (test "X$CXX" != "Xg++"))) ; then
+         ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+
+archive_cmds_need_lc_CXX=no
+allow_undefined_flag_CXX=
+always_export_symbols_CXX=no
+archive_expsym_cmds_CXX=
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_flag_spec_ld_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_automatic_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
+
+# Dependencies to place before and after the object being linked:
+predep_objects_CXX=
+postdep_objects_CXX=
+predeps_CXX=
+postdeps_CXX=
+compiler_lib_search_path_CXX=
+
+# Source file extension for C++ test sources.
+ac_ext=cc
+
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_LD=$LD
+lt_save_GCC=$GCC
+GCC=$GXX
+lt_save_with_gnu_ld=$with_gnu_ld
+lt_save_path_LD=$lt_cv_path_LD
+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+  lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+else
+  unset lt_cv_prog_gnu_ld
+fi
+if test -n "${lt_cv_path_LDCXX+set}"; then
+  lt_cv_path_LD=$lt_cv_path_LDCXX
+else
+  unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+compiler_CXX=$CC
+for cc_temp in $compiler""; 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-%%"`
+
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+  lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+else
+  lt_prog_compiler_no_builtin_flag_CXX=
+fi
+
+if test "$GXX" = yes; then
+  # Set up default GNU C++ configuration
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+  withval="$with_gnu_ld"
+  test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+  echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+       test "$with_gnu_ld" != no && break
+       ;;
+      *)
+       test "$with_gnu_ld" != yes && break
+       ;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+  # Check if GNU C++ uses GNU ld as the underlying linker, since the
+  # archiving commands below assume that GNU ld is being used.
+  if test "$with_gnu_ld" = yes; then
+    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+    hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+    #     investigate it a little bit more. (MM)
+    wlarc='${wl}'
+
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
+       grep 'no-whole-archive' > /dev/null; then
+      whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      whole_archive_flag_spec_CXX=
+    fi
+  else
+    with_gnu_ld=no
+    wlarc=
+
+    # A generic and very simple default shared library creation
+    # command for GNU C++ for the case where it uses the native
+    # linker, instead of GNU ld.  If possible, this setting should
+    # overridden to take advantage of the native linker features on
+    # the platform it is being used on.
+    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+  fi
+
+  # Commands to make compiler produce verbose output that lists
+  # what "hidden" libraries, object files and flags are used when
+  # linking a shared library.
+  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+else
+  GXX=no
+  with_gnu_ld=no
+  wlarc=
+fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+ld_shlibs_CXX=yes
+case $host_os in
+  aix3*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  aix4* | aix5*)
+    if test "$host_cpu" = ia64; then
+      # On IA64, the linker does run time linking by default, so we don't
+      # have to do anything special.
+      aix_use_runtimelinking=no
+      exp_sym_flag='-Bexport'
+      no_entry_flag=""
+    else
+      aix_use_runtimelinking=no
+
+      # Test if we are trying to use run time linking or normal
+      # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+      # need to do runtime linking.
+      case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+       for ld_flag in $LDFLAGS; do
+         case $ld_flag in
+         *-brtl*)
+           aix_use_runtimelinking=yes
+           break
+           ;;
+         esac
+       done
+      esac
+
+      exp_sym_flag='-bexport'
+      no_entry_flag='-bnoentry'
+    fi
+
+    # When large executables or shared objects are built, AIX ld can
+    # have problems creating the table of contents.  If linking a library
+    # or program results in "error TOC overflow" add -mminimal-toc to
+    # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+    # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+    archive_cmds_CXX=''
+    hardcode_direct_CXX=yes
+    hardcode_libdir_separator_CXX=':'
+    link_all_deplibs_CXX=yes
+
+    if test "$GXX" = yes; then
+      case $host_os in aix4.[012]|aix4.[012].*)
+      # We only want to do this on AIX 4.2 and lower, the check
+      # below for broken collect2 doesn't work under 4.3+
+       collect2name=`${CC} -print-prog-name=collect2`
+       if test -f "$collect2name" && \
+          strings "$collect2name" | grep resolve_lib_name >/dev/null
+       then
+         # We have reworked collect2
+         hardcode_direct_CXX=yes
+       else
+         # We have old collect2
+         hardcode_direct_CXX=unsupported
+         # It fails to find uninstalled libraries when the uninstalled
+         # path is not listed in the libpath.  Setting hardcode_minus_L
+         # to unsupported forces relinking
+         hardcode_minus_L_CXX=yes
+         hardcode_libdir_flag_spec_CXX='-L$libdir'
+         hardcode_libdir_separator_CXX=
+       fi
+      esac
+      shared_flag='-shared'
+      if test "$aix_use_runtimelinking" = yes; then
+       shared_flag="$shared_flag "'${wl}-G'
+      fi
+    else
+      # not using gcc
+      if test "$host_cpu" = ia64; then
+       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+       # chokes on -Wl,-G. The following line is correct:
+       shared_flag='-G'
+      else
+       if test "$aix_use_runtimelinking" = yes; then
+         shared_flag='${wl}-G'
+       else
+         shared_flag='${wl}-bM:SRE'
+       fi
+      fi
+    fi
+
+    # It seems that -bexpall does not export symbols beginning with
+    # underscore (_), so it is better to generate a list of symbols to export.
+    always_export_symbols_CXX=yes
+    if test "$aix_use_runtimelinking" = yes; then
+      # Warning - without using the other runtime loading flags (-brtl),
+      # -berok will link without error, but may produce a broken library.
+      allow_undefined_flag_CXX='-berok'
+      # Determine the default libpath from the value encoded in an empty executable.
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_cxx_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+      hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+      archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+     else
+      if test "$host_cpu" = ia64; then
+       hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+       allow_undefined_flag_CXX="-z nodefs"
+       archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+      else
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_cxx_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+       hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+       # Warning - without using the other run time loading flags,
+       # -berok will link without error, but may produce a broken library.
+       no_undefined_flag_CXX=' ${wl}-bernotok'
+       allow_undefined_flag_CXX=' ${wl}-berok'
+       # -bexpall does not export symbols beginning with underscore (_)
+       always_export_symbols_CXX=yes
+       # Exported symbols can be pulled into shared objects from archives
+       whole_archive_flag_spec_CXX=' '
+       archive_cmds_need_lc_CXX=yes
+       # This is similar to how AIX traditionally builds it's shared libraries.
+       archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+      fi
+    fi
+    ;;
+  chorus*)
+    case $cc_basename in
+      *)
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+    esac
+    ;;
+
+
+  cygwin* | mingw* | pw32*)
+    # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+    # as there is no search path for DLLs.
+    hardcode_libdir_flag_spec_CXX='-L$libdir'
+    allow_undefined_flag_CXX=unsupported
+    always_export_symbols_CXX=no
+    enable_shared_with_static_runtimes_CXX=yes
+
+    if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+      archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+      # If the export-symbols file already is a .def file (1st line
+      # is EXPORTS), use it as is; otherwise, prepend...
+      archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+       cp $export_symbols $output_objdir/$soname.def;
+      else
+       echo EXPORTS > $output_objdir/$soname.def;
+       cat $export_symbols >> $output_objdir/$soname.def;
+      fi~
+      $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+    else
+      ld_shlibs_CXX=no
+    fi
+  ;;
+      darwin* | rhapsody*)
+        case "$host_os" in
+        rhapsody* | darwin1.[012])
+         allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[012])
+               allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+        esac
+      archive_cmds_need_lc_CXX=no
+      hardcode_direct_CXX=no
+      hardcode_automatic_CXX=yes
+      hardcode_shlibpath_var_CXX=unsupported
+      whole_archive_flag_spec_CXX=''
+      link_all_deplibs_CXX=yes
+
+    if test "$GXX" = yes ; then
+      lt_int_apple_cc_single_mod=no
+      output_verbose_link_cmd='echo'
+      if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+       lt_int_apple_cc_single_mod=yes
+      fi
+      if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+       archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      else
+          archive_cmds_CXX='$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'
+        fi
+        module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+        # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+          if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+            archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          else
+            archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "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~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          fi
+            module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+          archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+          module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+          archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         ld_shlibs_CXX=no
+          ;;
+      esac
+      fi
+        ;;
+
+  dgux*)
+    case $cc_basename in
+      ec++*)
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+      ghcx*)
+       # Green Hills C++ Compiler
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+      *)
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+    esac
+    ;;
+  freebsd[12]*)
+    # C++ shared libraries reported to be fairly broken before switch to ELF
+    ld_shlibs_CXX=no
+    ;;
+  freebsd-elf*)
+    archive_cmds_need_lc_CXX=no
+    ;;
+  freebsd* | kfreebsd*-gnu | dragonfly*)
+    # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+    # conventions
+    ld_shlibs_CXX=yes
+    ;;
+  gnu*)
+    ;;
+  hpux9*)
+    hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+    hardcode_libdir_separator_CXX=:
+    export_dynamic_flag_spec_CXX='${wl}-E'
+    hardcode_direct_CXX=yes
+    hardcode_minus_L_CXX=yes # Not in the search PATH,
+                               # but as the default
+                               # location of the library.
+
+    case $cc_basename in
+    CC*)
+      # FIXME: insert proper C++ library support
+      ld_shlibs_CXX=no
+      ;;
+    aCC*)
+      archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      #
+      # There doesn't appear to be a way to prevent this compiler from
+      # explicitly linking system object files so we need to strip them
+      # from the output so that they don't get included in the library
+      # dependencies.
+      output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+      ;;
+    *)
+      if test "$GXX" = yes; then
+        archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+      fi
+      ;;
+    esac
+    ;;
+  hpux10*|hpux11*)
+    if test $with_gnu_ld = no; then
+      case "$host_cpu" in
+      hppa*64*)
+       hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+       hardcode_libdir_flag_spec_ld_CXX='+b $libdir'
+       hardcode_libdir_separator_CXX=:
+        ;;
+      ia64*)
+       hardcode_libdir_flag_spec_CXX='-L$libdir'
+        ;;
+      *)
+       hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+       hardcode_libdir_separator_CXX=:
+       export_dynamic_flag_spec_CXX='${wl}-E'
+        ;;
+      esac
+    fi
+    case "$host_cpu" in
+    hppa*64*)
+      hardcode_direct_CXX=no
+      hardcode_shlibpath_var_CXX=no
+      ;;
+    ia64*)
+      hardcode_direct_CXX=no
+      hardcode_shlibpath_var_CXX=no
+      hardcode_minus_L_CXX=yes # Not in the search PATH,
+                                             # but as the default
+                                             # location of the library.
+      ;;
+    *)
+      hardcode_direct_CXX=yes
+      hardcode_minus_L_CXX=yes # Not in the search PATH,
+                                             # but as the default
+                                             # location of the library.
+      ;;
+    esac
+
+    case $cc_basename in
+      CC*)
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+      aCC*)
+       case "$host_cpu" in
+       hppa*64*|ia64*)
+         archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+         ;;
+       *)
+         archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+         ;;
+       esac
+       # Commands to make compiler produce verbose output that lists
+       # what "hidden" libraries, object files and flags are used when
+       # linking a shared library.
+       #
+       # There doesn't appear to be a way to prevent this compiler from
+       # explicitly linking system object files so we need to strip them
+       # from the output so that they don't get included in the library
+       # dependencies.
+       output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+       ;;
+      *)
+       if test "$GXX" = yes; then
+         if test $with_gnu_ld = no; then
+           case "$host_cpu" in
+           ia64*|hppa*64*)
+             archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+             ;;
+           *)
+             archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+             ;;
+           esac
+         fi
+       else
+         # FIXME: insert proper C++ library support
+         ld_shlibs_CXX=no
+       fi
+       ;;
+    esac
+    ;;
+  irix5* | irix6*)
+    case $cc_basename in
+      CC*)
+       # SGI C++
+       archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+       # Archives containing C++ object files must be created using
+       # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+       # necessary to make sure instantiated templates are included
+       # in the archive.
+       old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
+       ;;
+      *)
+       if test "$GXX" = yes; then
+         if test "$with_gnu_ld" = no; then
+           archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+         else
+           archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+         fi
+       fi
+       link_all_deplibs_CXX=yes
+       ;;
+    esac
+    hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator_CXX=:
+    ;;
+  linux*)
+    case $cc_basename in
+      KCC*)
+       # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+       # KCC will only create a shared library if the output file
+       # ends with ".so" (or ".sl" for HP-UX), so rename the library
+       # to its proper name (with version) after linking.
+       archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+       archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+       # Commands to make compiler produce verbose output that lists
+       # what "hidden" libraries, object files and flags are used when
+       # linking a shared library.
+       #
+       # There doesn't appear to be a way to prevent this compiler from
+       # explicitly linking system object files so we need to strip them
+       # from the output so that they don't get included in the library
+       # dependencies.
+       output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+       hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir'
+       export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+       # Archives containing C++ object files must be created using
+       # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+       old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+       ;;
+      icpc*)
+       # Intel C++
+       with_gnu_ld=yes
+       # version 8.0 and above of icpc choke on multiply defined symbols
+       # if we add $predep_objects and $postdep_objects, however 7.1 and
+       # earlier do not add the objects themselves.
+       case `$CC -V 2>&1` in
+       *"Version 7."*)
+         archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+         archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+         ;;
+       *)  # Version 8.0 or newer
+         tmp_idyn=
+         case $host_cpu in
+           ia64*) tmp_idyn=' -i_dynamic';;
+         esac
+         archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+         archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+         ;;
+       esac
+       archive_cmds_need_lc_CXX=no
+       hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+       export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+       whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+       ;;
+      pgCC*)
+        # Portland Group C++ compiler
+       archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+       archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+
+       hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+       export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+       whole_archive_flag_spec_CXX=''
+        ;;
+      cxx*)
+       # Compaq C++
+       archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+       runpath_var=LD_RUN_PATH
+       hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+       hardcode_libdir_separator_CXX=:
+
+       # Commands to make compiler produce verbose output that lists
+       # what "hidden" libraries, object files and flags are used when
+       # linking a shared library.
+       #
+       # There doesn't appear to be a way to prevent this compiler from
+       # explicitly linking system object files so we need to strip them
+       # from the output so that they don't get included in the library
+       # dependencies.
+       output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+       ;;
+    esac
+    ;;
+  lynxos*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  m88k*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  mvs*)
+    case $cc_basename in
+      cxx*)
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+      *)
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+    esac
+    ;;
+  netbsd*)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+      wlarc=
+      hardcode_libdir_flag_spec_CXX='-R$libdir'
+      hardcode_direct_CXX=yes
+      hardcode_shlibpath_var_CXX=no
+    fi
+    # Workaround some broken pre-1.5 toolchains
+    output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+    ;;
+  openbsd2*)
+    # C++ shared libraries are fairly broken
+    ld_shlibs_CXX=no
+    ;;
+  openbsd*)
+    hardcode_direct_CXX=yes
+    hardcode_shlibpath_var_CXX=no
+    archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+    if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+      archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+      export_dynamic_flag_spec_CXX='${wl}-E'
+      whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    fi
+    output_verbose_link_cmd='echo'
+    ;;
+  osf3*)
+    case $cc_basename in
+      KCC*)
+       # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+       # KCC will only create a shared library if the output file
+       # ends with ".so" (or ".sl" for HP-UX), so rename the library
+       # to its proper name (with version) after linking.
+       archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+       hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+       hardcode_libdir_separator_CXX=:
+
+       # Archives containing C++ object files must be created using
+       # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+       old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+
+       ;;
+      RCC*)
+       # Rational C++ 2.4.1
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+      cxx*)
+       allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+       archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+       hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+       hardcode_libdir_separator_CXX=:
+
+       # Commands to make compiler produce verbose output that lists
+       # what "hidden" libraries, object files and flags are used when
+       # linking a shared library.
+       #
+       # There doesn't appear to be a way to prevent this compiler from
+       # explicitly linking system object files so we need to strip them
+       # from the output so that they don't get included in the library
+       # dependencies.
+       output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+       ;;
+      *)
+       if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+         allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+         archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+         hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+         hardcode_libdir_separator_CXX=:
+
+         # Commands to make compiler produce verbose output that lists
+         # what "hidden" libraries, object files and flags are used when
+         # linking a shared library.
+         output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+       else
+         # FIXME: insert proper C++ library support
+         ld_shlibs_CXX=no
+       fi
+       ;;
+    esac
+    ;;
+  osf4* | osf5*)
+    case $cc_basename in
+      KCC*)
+       # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+       # KCC will only create a shared library if the output file
+       # ends with ".so" (or ".sl" for HP-UX), so rename the library
+       # to its proper name (with version) after linking.
+       archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+       hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+       hardcode_libdir_separator_CXX=:
+
+       # Archives containing C++ object files must be created using
+       # the KAI C++ compiler.
+       old_archive_cmds_CXX='$CC -o $oldlib $oldobjs'
+       ;;
+      RCC*)
+       # Rational C++ 2.4.1
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+      cxx*)
+       allow_undefined_flag_CXX=' -expect_unresolved \*'
+       archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+       archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+         echo "-hidden">> $lib.exp~
+         $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp  `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~
+         $rm $lib.exp'
+
+       hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+       hardcode_libdir_separator_CXX=:
+
+       # Commands to make compiler produce verbose output that lists
+       # what "hidden" libraries, object files and flags are used when
+       # linking a shared library.
+       #
+       # There doesn't appear to be a way to prevent this compiler from
+       # explicitly linking system object files so we need to strip them
+       # from the output so that they don't get included in the library
+       # dependencies.
+       output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+       ;;
+      *)
+       if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+         allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+        archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+         hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+         hardcode_libdir_separator_CXX=:
+
+         # Commands to make compiler produce verbose output that lists
+         # what "hidden" libraries, object files and flags are used when
+         # linking a shared library.
+         output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+       else
+         # FIXME: insert proper C++ library support
+         ld_shlibs_CXX=no
+       fi
+       ;;
+    esac
+    ;;
+  psos*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  sco*)
+    archive_cmds_need_lc_CXX=no
+    case $cc_basename in
+      CC*)
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+      *)
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+    esac
+    ;;
+  sunos4*)
+    case $cc_basename in
+      CC*)
+       # Sun C++ 4.x
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+      lcc*)
+       # Lucid
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+      *)
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+    esac
+    ;;
+  solaris*)
+    case $cc_basename in
+      CC*)
+       # Sun C++ 4.2, 5.x and Centerline C++
+       no_undefined_flag_CXX=' -zdefs'
+       archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+       archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+       $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+       hardcode_libdir_flag_spec_CXX='-R$libdir'
+       hardcode_shlibpath_var_CXX=no
+       case $host_os in
+         solaris2.[0-5] | solaris2.[0-5].*) ;;
+         *)
+           # The C++ compiler is used as linker so we must use $wl
+           # flag to pass the commands to the underlying system
+           # linker. We must also pass each convience library through
+           # to the system linker between allextract/defaultextract.
+           # The C++ compiler will combine linker options so we
+           # cannot just pass the convience library names through
+           # without $wl.
+           # Supported since Solaris 2.6 (maybe 2.5.1?)
+           whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
+           ;;
+       esac
+       link_all_deplibs_CXX=yes
+
+       # Commands to make compiler produce verbose output that lists
+       # what "hidden" libraries, object files and flags are used when
+       # linking a shared library.
+       #
+       # There doesn't appear to be a way to prevent this compiler from
+       # explicitly linking system object files so we need to strip them
+       # from the output so that they don't get included in the library
+       # dependencies.
+       output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+       # Archives containing C++ object files must be created using
+       # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+       # necessary to make sure instantiated templates are included
+       # in the archive.
+       old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+       ;;
+      gcx*)
+       # Green Hills C++ Compiler
+       archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+       # The C++ compiler must be used to create the archive.
+       old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+       ;;
+      *)
+       # GNU C++ compiler with Solaris linker
+       if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+         no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
+         if $CC --version | grep -v '^2\.7' > /dev/null; then
+           archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+           archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+               $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+         else
+           # g++ 2.7 appears to require `-G' NOT `-shared' on this
+           # platform.
+           archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+           archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+               $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+         fi
+
+         hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+       fi
+       ;;
+    esac
+    ;;
+  sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+    archive_cmds_need_lc_CXX=no
+    ;;
+  tandem*)
+    case $cc_basename in
+      NCC*)
+       # NonStop-UX NCC 3.20
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+      *)
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+    esac
+    ;;
+  vxworks*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  *)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+esac
+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+GCC_CXX="$GXX"
+LD_CXX="$LD"
+
+
+cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+EOF
+
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  # The `*' in the case matches for architectures that use `case' in
+  # $output_verbose_cmd can trigger glob expansion during the loop
+  # eval without this substitution.
+  output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
+
+  for p in `eval $output_verbose_link_cmd`; do
+    case $p in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test $p = "-L" \
+         || test $p = "-R"; then
+        prev=$p
+        continue
+       else
+        prev=
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+        case $p in
+        -L* | -R*)
+          # Internal compiler library paths should come after those
+          # provided the user.  The postdeps already come after the
+          # user supplied libs so there is no need to process them.
+          if test -z "$compiler_lib_search_path_CXX"; then
+            compiler_lib_search_path_CXX="${prev}${p}"
+          else
+            compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
+          fi
+          ;;
+        # The "-l" case would never come before the object being
+        # linked, so don't bother handling this case.
+        esac
+       else
+        if test -z "$postdeps_CXX"; then
+          postdeps_CXX="${prev}${p}"
+        else
+          postdeps_CXX="${postdeps_CXX} ${prev}${p}"
+        fi
+       fi
+       ;;
+
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+        pre_test_object_deps_done=yes
+        continue
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+        if test -z "$predep_objects_CXX"; then
+          predep_objects_CXX="$p"
+        else
+          predep_objects_CXX="$predep_objects_CXX $p"
+        fi
+       else
+        if test -z "$postdep_objects_CXX"; then
+          postdep_objects_CXX="$p"
+        else
+          postdep_objects_CXX="$postdep_objects_CXX $p"
+        fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling CXX test program"
+fi
+
+$rm -f confest.$objext
+
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+
+lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    lt_prog_compiler_wl_CXX='-Wl,'
+    lt_prog_compiler_static_CXX='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static_CXX='-Bstatic'
+      fi
+      ;;
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
+      ;;
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | os2* | pw32*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_CXX='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      lt_prog_compiler_pic_CXX=
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       lt_prog_compiler_pic_CXX=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+       ;;
+      *)
+       lt_prog_compiler_pic_CXX='-fPIC'
+       ;;
+      esac
+      ;;
+    *)
+      lt_prog_compiler_pic_CXX='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix4* | aix5*)
+       # All AIX code is PIC.
+       if test "$host_cpu" = ia64; then
+         # AIX 5 now supports IA64 processor
+         lt_prog_compiler_static_CXX='-Bstatic'
+       else
+         lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
+       fi
+       ;;
+      chorus*)
+       case $cc_basename in
+       cxch68*)
+         # Green Hills C++ Compiler
+         # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+         ;;
+       esac
+       ;;
+       darwin*)
+         # PIC is the default on this platform
+         # Common symbols not allowed in MH_DYLIB files
+         case $cc_basename in
+           xlc*)
+           lt_prog_compiler_pic_CXX='-qnocommon'
+           lt_prog_compiler_wl_CXX='-Wl,'
+           ;;
+         esac
+       ;;
+      dgux*)
+       case $cc_basename in
+         ec++*)
+           lt_prog_compiler_pic_CXX='-KPIC'
+           ;;
+         ghcx*)
+           # Green Hills C++ Compiler
+           lt_prog_compiler_pic_CXX='-pic'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      freebsd* | kfreebsd*-gnu | dragonfly*)
+       # FreeBSD uses GNU C++
+       ;;
+      hpux9* | hpux10* | hpux11*)
+       case $cc_basename in
+         CC*)
+           lt_prog_compiler_wl_CXX='-Wl,'
+           lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+           if test "$host_cpu" != ia64; then
+             lt_prog_compiler_pic_CXX='+Z'
+           fi
+           ;;
+         aCC*)
+           lt_prog_compiler_wl_CXX='-Wl,'
+           lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+           case "$host_cpu" in
+           hppa*64*|ia64*)
+             # +Z the default
+             ;;
+           *)
+             lt_prog_compiler_pic_CXX='+Z'
+             ;;
+           esac
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      irix5* | irix6* | nonstopux*)
+       case $cc_basename in
+         CC*)
+           lt_prog_compiler_wl_CXX='-Wl,'
+           lt_prog_compiler_static_CXX='-non_shared'
+           # CC pic flag -KPIC is the default.
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      linux*)
+       case $cc_basename in
+         KCC*)
+           # KAI C++ Compiler
+           lt_prog_compiler_wl_CXX='--backend -Wl,'
+           lt_prog_compiler_pic_CXX='-fPIC'
+           ;;
+         icpc* | ecpc*)
+           # Intel C++
+           lt_prog_compiler_wl_CXX='-Wl,'
+           lt_prog_compiler_pic_CXX='-KPIC'
+           lt_prog_compiler_static_CXX='-static'
+           ;;
+         pgCC*)
+           # Portland Group C++ compiler.
+           lt_prog_compiler_wl_CXX='-Wl,'
+           lt_prog_compiler_pic_CXX='-fpic'
+           lt_prog_compiler_static_CXX='-static'
+           ;;
+         cxx*)
+           # Compaq C++
+           # Make sure the PIC flag is empty.  It appears that all Alpha
+           # Linux and Compaq Tru64 Unix objects are PIC.
+           lt_prog_compiler_pic_CXX=
+           lt_prog_compiler_static_CXX='-non_shared'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      lynxos*)
+       ;;
+      m88k*)
+       ;;
+      mvs*)
+       case $cc_basename in
+         cxx*)
+           lt_prog_compiler_pic_CXX='-W c,exportall'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      netbsd*)
+       ;;
+      osf3* | osf4* | osf5*)
+       case $cc_basename in
+         KCC*)
+           lt_prog_compiler_wl_CXX='--backend -Wl,'
+           ;;
+         RCC*)
+           # Rational C++ 2.4.1
+           lt_prog_compiler_pic_CXX='-pic'
+           ;;
+         cxx*)
+           # Digital/Compaq C++
+           lt_prog_compiler_wl_CXX='-Wl,'
+           # Make sure the PIC flag is empty.  It appears that all Alpha
+           # Linux and Compaq Tru64 Unix objects are PIC.
+           lt_prog_compiler_pic_CXX=
+           lt_prog_compiler_static_CXX='-non_shared'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      psos*)
+       ;;
+      sco*)
+       case $cc_basename in
+         CC*)
+           lt_prog_compiler_pic_CXX='-fPIC'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      solaris*)
+       case $cc_basename in
+         CC*)
+           # Sun C++ 4.2, 5.x and Centerline C++
+           lt_prog_compiler_pic_CXX='-KPIC'
+           lt_prog_compiler_static_CXX='-Bstatic'
+           lt_prog_compiler_wl_CXX='-Qoption ld '
+           ;;
+         gcx*)
+           # Green Hills C++ Compiler
+           lt_prog_compiler_pic_CXX='-PIC'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      sunos4*)
+       case $cc_basename in
+         CC*)
+           # Sun C++ 4.x
+           lt_prog_compiler_pic_CXX='-pic'
+           lt_prog_compiler_static_CXX='-Bstatic'
+           ;;
+         lcc*)
+           # Lucid
+           lt_prog_compiler_pic_CXX='-pic'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      tandem*)
+       case $cc_basename in
+         NCC*)
+           # NonStop-UX NCC 3.20
+           lt_prog_compiler_pic_CXX='-KPIC'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      unixware*)
+       ;;
+      vxworks*)
+       ;;
+      *)
+       lt_prog_compiler_can_build_shared_CXX=no
+       ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works_CXX=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+   # 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}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:17604: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:17608: \$? = $ac_status" >&5
+   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 >conftest.exp
+     $SED '/^$/d' conftest.err >conftest.er2
+     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_prog_compiler_pic_works_CXX=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6
+
+if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then
+    case $lt_prog_compiler_pic_CXX in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
+     esac
+else
+    lt_prog_compiler_pic_CXX=
+     lt_prog_compiler_can_build_shared_CXX=no
+fi
+
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_CXX=
+    ;;
+  *)
+    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$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}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:17666: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:17670: \$? = $ac_status" >&5
+   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 > out/conftest.exp
+     $SED '/^$/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_CXX=yes
+     fi
+   fi
+   chmod u+w .
+   $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 ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  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
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  case $host_os in
+  aix4* | aix5*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+    else
+      export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    export_symbols_cmds_CXX="$ltdll_cmds"
+  ;;
+  cygwin* | mingw*)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  *)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  esac
+
+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_CXX" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_CXX=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_CXX in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_CXX
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+        allow_undefined_flag_CXX=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+         archive_cmds_need_lc_CXX=no
+        else
+         archive_cmds_need_lc_CXX=yes
+        fi
+        allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+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"
+if test "$GCC" = yes; then
+  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 ';' >/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.
+    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
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+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'
+  ;;
+
+aix4* | aix5*)
+  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*)
+  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'
+  ;;
+
+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*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    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'
+    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*)
+      # 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}${versuffix}$shared_ext ${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)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  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
+  ;;
+
+kfreebsd*-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
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  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
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    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'
+  ;;
+
+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*)
+  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
+  # 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
+
+  # find out which ABI we are using
+  libsuff=
+  case "$host_cpu" in
+  x86_64*|s390x*|powerpc64*)
+    echo '#line 18181 "configure"' > conftest.$ac_ext
+    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+      case `/usr/bin/file conftest.$ac_objext` in
+      *64-bit*)
+        libsuff=64
+        sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+        ;;
+      esac
+    fi
+    rm -rf conftest*
+    ;;
+  esac
+
+  # 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)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $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'
+  ;;
+
+knetbsd*-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
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU 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=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
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  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='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  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${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  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
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  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
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  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
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" || \
+   test -n "$runpath_var_CXX" || \
+   test "X$hardcode_automatic_CXX" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_CXX" != 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_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
+     test "$hardcode_minus_L_CXX" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_CXX=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_CXX=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_CXX=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
+echo "${ECHO_T}$hardcode_action_CXX" >&6
+
+if test "$hardcode_action_CXX" = relink; 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
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+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"
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+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"
+         echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+       else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+       ;;
+   *)
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    ;;
+  esac
+fi
+
+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*)
+    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
+    echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_cxx_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+   ;;
+
+  *)
+    echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_cxx_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+  lt_cv_dlopen="shl_load"
+else
+  echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_cxx_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+  echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char dlopen (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_cxx_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+  lt_cv_dlopen="dlopen"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_cxx_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_cxx_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_svld_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_cxx_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_dld_link=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  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"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+         if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 19052 "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
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#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); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+         if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 19150 "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
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#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); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+    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
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # 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
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_CXX \
+    CC_CXX \
+    LD_CXX \
+    lt_prog_compiler_wl_CXX \
+    lt_prog_compiler_pic_CXX \
+    lt_prog_compiler_static_CXX \
+    lt_prog_compiler_no_builtin_flag_CXX \
+    export_dynamic_flag_spec_CXX \
+    thread_safe_flag_spec_CXX \
+    whole_archive_flag_spec_CXX \
+    enable_shared_with_static_runtimes_CXX \
+    old_archive_cmds_CXX \
+    old_archive_from_new_cmds_CXX \
+    predep_objects_CXX \
+    postdep_objects_CXX \
+    predeps_CXX \
+    postdeps_CXX \
+    compiler_lib_search_path_CXX \
+    archive_cmds_CXX \
+    archive_expsym_cmds_CXX \
+    postinstall_cmds_CXX \
+    postuninstall_cmds_CXX \
+    old_archive_from_expsyms_cmds_CXX \
+    allow_undefined_flag_CXX \
+    no_undefined_flag_CXX \
+    export_symbols_cmds_CXX \
+    hardcode_libdir_flag_spec_CXX \
+    hardcode_libdir_flag_spec_ld_CXX \
+    hardcode_libdir_separator_CXX \
+    hardcode_automatic_CXX \
+    module_cmds_CXX \
+    module_expsym_cmds_CXX \
+    lt_cv_prog_compiler_c_o_CXX \
+    exclude_expsyms_CXX \
+    include_expsyms_CXX; do
+
+    case $var in
+    old_archive_cmds_CXX | \
+    old_archive_from_new_cmds_CXX | \
+    archive_cmds_CXX | \
+    archive_expsym_cmds_CXX | \
+    module_cmds_CXX | \
+    module_expsym_cmds_CXX | \
+    old_archive_from_expsyms_cmds_CXX | \
+    export_symbols_cmds_CXX | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_CXX
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_CXX
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_CXX
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_CXX
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_CXX
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_CXX
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_CXX
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_CXX
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_CXX
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_CXX
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_CXX"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_CXX
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_CXX
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_CXX
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+
+       else
+         tagname=""
+       fi
+       ;;
+
+      F77)
+       if test -n "$F77" && test "X$F77" != "Xno"; then
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+
+archive_cmds_need_lc_F77=no
+allow_undefined_flag_F77=
+always_export_symbols_F77=no
+archive_expsym_cmds_F77=
+export_dynamic_flag_spec_F77=
+hardcode_direct_F77=no
+hardcode_libdir_flag_spec_F77=
+hardcode_libdir_flag_spec_ld_F77=
+hardcode_libdir_separator_F77=
+hardcode_minus_L_F77=no
+hardcode_automatic_F77=no
+module_cmds_F77=
+module_expsym_cmds_F77=
+link_all_deplibs_F77=unknown
+old_archive_cmds_F77=$old_archive_cmds
+no_undefined_flag_F77=
+whole_archive_flag_spec_F77=
+enable_shared_with_static_runtimes_F77=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+objext_F77=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="      subroutine t\n      return\n      end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="      program t\n      end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+compiler_F77=$CC
+for cc_temp in $compiler""; 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-%%"`
+
+
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+aix4* | aix5*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+  ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
+
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+GCC_F77="$G77"
+LD_F77="$LD"
+
+lt_prog_compiler_wl_F77=
+lt_prog_compiler_pic_F77=
+lt_prog_compiler_static_F77=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl_F77='-Wl,'
+    lt_prog_compiler_static_F77='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static_F77='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_F77='-fno-common'
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared_F77=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       lt_prog_compiler_pic_F77=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+       # +Z the default
+       ;;
+      *)
+       lt_prog_compiler_pic_F77='-fPIC'
+       ;;
+      esac
+      ;;
+
+    *)
+      lt_prog_compiler_pic_F77='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static_F77='-Bstatic'
+      else
+       lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+      darwin*)
+        # PIC is the default on this platform
+        # Common symbols not allowed in MH_DYLIB files
+       case $cc_basename in
+         xlc*)
+         lt_prog_compiler_pic_F77='-qnocommon'
+         lt_prog_compiler_wl_F77='-Wl,'
+         ;;
+       esac
+       ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+       # +Z the default
+       ;;
+      *)
+       lt_prog_compiler_pic_F77='+Z'
+       ;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static_F77='-non_shared'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    linux*)
+      case $cc_basename in
+      icc* | ecc*)
+       lt_prog_compiler_wl_F77='-Wl,'
+       lt_prog_compiler_pic_F77='-KPIC'
+       lt_prog_compiler_static_F77='-static'
+        ;;
+      pgcc* | pgf77* | pgf90*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+       # which looks to be a dead project)
+       lt_prog_compiler_wl_F77='-Wl,'
+       lt_prog_compiler_pic_F77='-fpic'
+       lt_prog_compiler_static_F77='-static'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl_F77='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static_F77='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static_F77='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      lt_prog_compiler_pic_F77='-Kpic'
+      lt_prog_compiler_static_F77='-dn'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+       lt_prog_compiler_wl_F77='-Qoption ld ';;
+      *)
+       lt_prog_compiler_wl_F77='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl_F77='-Qoption ld '
+      lt_prog_compiler_pic_F77='-PIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+       lt_prog_compiler_pic_F77='-Kconform_pic'
+       lt_prog_compiler_static_F77='-Bstatic'
+      fi
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      lt_prog_compiler_can_build_shared_F77=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic_F77='-pic'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared_F77=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_F77"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works_F77=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_F77"
+   # 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}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:20035: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:20039: \$? = $ac_status" >&5
+   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 >conftest.exp
+     $SED '/^$/d' conftest.err >conftest.er2
+     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_prog_compiler_pic_works_F77=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6
+
+if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
+    case $lt_prog_compiler_pic_F77 in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
+     esac
+else
+    lt_prog_compiler_pic_F77=
+     lt_prog_compiler_can_build_shared_F77=no
+fi
+
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_F77=
+    ;;
+  *)
+    lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o_F77=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$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}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:20097: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:20101: \$? = $ac_status" >&5
+   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 > out/conftest.exp
+     $SED '/^$/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_F77=yes
+     fi
+   fi
+   chmod u+w .
+   $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 ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  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
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+  runpath_var=
+  allow_undefined_flag_F77=
+  enable_shared_with_static_runtimes_F77=no
+  archive_cmds_F77=
+  archive_expsym_cmds_F77=
+  old_archive_From_new_cmds_F77=
+  old_archive_from_expsyms_cmds_F77=
+  export_dynamic_flag_spec_F77=
+  whole_archive_flag_spec_F77=
+  thread_safe_flag_spec_F77=
+  hardcode_libdir_flag_spec_F77=
+  hardcode_libdir_flag_spec_ld_F77=
+  hardcode_libdir_separator_F77=
+  hardcode_direct_F77=no
+  hardcode_minus_L_F77=no
+  hardcode_shlibpath_var_F77=unsupported
+  link_all_deplibs_F77=unknown
+  hardcode_automatic_F77=no
+  module_cmds_F77=
+  module_expsym_cmds_F77=
+  always_export_symbols_F77=no
+  export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms_F77=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+  # Just being paranoid about ensuring that cc_basename is set.
+  for cc_temp in $compiler""; 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-%%"`
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs_F77=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec_F77='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+       whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+       whole_archive_flag_spec_F77=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>/dev/null` in
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+       ld_shlibs_F77=no
+       cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+
+      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      ld_shlibs_F77=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+       allow_undefined_flag_F77=unsupported
+       # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+       # support --undefined.  This deserves some investigation.  FIXME
+       archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+       ld_shlibs_F77=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      allow_undefined_flag_F77=unsupported
+      always_export_symbols_F77=no
+      enable_shared_with_static_runtimes_F77=yes
+      export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+       # If the export-symbols file already is a .def file (1st line
+       # is EXPORTS), use it as is; otherwise, prepend...
+       archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+         cp $export_symbols $output_objdir/$soname.def;
+       else
+         echo EXPORTS > $output_objdir/$soname.def;
+         cat $export_symbols >> $output_objdir/$soname.def;
+       fi~
+       $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
+      else
+       ld_shlibs_F77=no
+      fi
+      ;;
+
+    linux*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+       tmp_addflag=
+       case $cc_basename,$host_cpu in
+       pgcc*)                          # Portland Group C compiler
+         whole_archive_flag_spec_F77=
+         ;;
+       pgf77* | pgf90* )                       # Portland Group f77 and f90 compilers
+         whole_archive_flag_spec_F77=
+         tmp_addflag=' -fpic -Mnomain' ;;
+       ecc*,ia64* | icc*,ia64*)                # Intel C compiler on ia64
+         tmp_addflag=' -i_dynamic' ;;
+       efc*,ia64* | ifort*,ia64*)      # Intel Fortran compiler on ia64
+         tmp_addflag=' -i_dynamic -nofor_main' ;;
+       ifc* | ifort*)                  # Intel Fortran compiler
+         tmp_addflag=' -nofor_main' ;;
+       esac
+       archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+       if test $supports_anon_versioning = yes; then
+         archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
+  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+  $echo "local: *; };" >> $output_objdir/$libname.ver~
+         $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+       fi
+      else
+       ld_shlibs_F77=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+       archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+       wlarc=
+      else
+       archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris* | sysv5*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+       ld_shlibs_F77=no
+       cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+       archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       ld_shlibs_F77=no
+      fi
+      ;;
+
+    sunos4*)
+      archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+       archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       ld_shlibs_F77=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs_F77" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec_F77=
+      export_dynamic_flag_spec_F77=
+      whole_archive_flag_spec_F77=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag_F77=unsupported
+      always_export_symbols_F77=yes
+      archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L_F77=yes
+      if test "$GCC" = yes && test -z "$link_static_flag"; then
+       # Neither direct hardcoding nor static linking is supported with a
+       # broken collect2.
+       hardcode_direct_F77=unsupported
+      fi
+      ;;
+
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+       # On IA64, the linker does run time linking by default, so we don't
+       # have to do anything special.
+       aix_use_runtimelinking=no
+       exp_sym_flag='-Bexport'
+       no_entry_flag=""
+      else
+       # If we're using GNU nm, then we don't want the "-C" option.
+       # -C means demangle to AIX nm, but means don't demangle with GNU nm
+       if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+         export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+       else
+         export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+       fi
+       aix_use_runtimelinking=no
+
+       # Test if we are trying to use run time linking or normal
+       # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+       # need to do runtime linking.
+       case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+         for ld_flag in $LDFLAGS; do
+         if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+           aix_use_runtimelinking=yes
+           break
+         fi
+         done
+       esac
+
+       exp_sym_flag='-bexport'
+       no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds_F77=''
+      hardcode_direct_F77=yes
+      hardcode_libdir_separator_F77=':'
+      link_all_deplibs_F77=yes
+
+      if test "$GCC" = yes; then
+       case $host_os in aix4.[012]|aix4.[012].*)
+       # We only want to do this on AIX 4.2 and lower, the check
+       # below for broken collect2 doesn't work under 4.3+
+         collect2name=`${CC} -print-prog-name=collect2`
+         if test -f "$collect2name" && \
+          strings "$collect2name" | grep resolve_lib_name >/dev/null
+         then
+         # We have reworked collect2
+         hardcode_direct_F77=yes
+         else
+         # We have old collect2
+         hardcode_direct_F77=unsupported
+         # It fails to find uninstalled libraries when the uninstalled
+         # path is not listed in the libpath.  Setting hardcode_minus_L
+         # to unsupported forces relinking
+         hardcode_minus_L_F77=yes
+         hardcode_libdir_flag_spec_F77='-L$libdir'
+         hardcode_libdir_separator_F77=
+         fi
+       esac
+       shared_flag='-shared'
+       if test "$aix_use_runtimelinking" = yes; then
+         shared_flag="$shared_flag "'${wl}-G'
+       fi
+      else
+       # not using gcc
+       if test "$host_cpu" = ia64; then
+       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+       # chokes on -Wl,-G. The following line is correct:
+         shared_flag='-G'
+       else
+       if test "$aix_use_runtimelinking" = yes; then
+           shared_flag='${wl}-G'
+         else
+           shared_flag='${wl}-bM:SRE'
+       fi
+       fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols_F77=yes
+      if test "$aix_use_runtimelinking" = yes; then
+       # Warning - without using the other runtime loading flags (-brtl),
+       # -berok will link without error, but may produce a broken library.
+       allow_undefined_flag_F77='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_f77_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+       hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+       archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+       if test "$host_cpu" = ia64; then
+         hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
+         allow_undefined_flag_F77="-z nodefs"
+         archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+       else
+        # Determine the default libpath from the value encoded in an empty executable.
+        cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_f77_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+        hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+         # Warning - without using the other run time loading flags,
+         # -berok will link without error, but may produce a broken library.
+         no_undefined_flag_F77=' ${wl}-bernotok'
+         allow_undefined_flag_F77=' ${wl}-berok'
+         # -bexpall does not export symbols beginning with underscore (_)
+         always_export_symbols_F77=yes
+         # Exported symbols can be pulled into shared objects from archives
+         whole_archive_flag_spec_F77=' '
+         archive_cmds_need_lc_F77=yes
+         # This is similar to how AIX traditionally builds it's shared libraries.
+         archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+       fi
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs_F77=no
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec_F77=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec_F77=' '
+      allow_undefined_flag_F77=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds_F77='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path_F77='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes_F77=yes
+      ;;
+
+    darwin* | rhapsody*)
+      case "$host_os" in
+        rhapsody* | darwin1.[012])
+         allow_undefined_flag_F77='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[012])
+               allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+      esac
+      archive_cmds_need_lc_F77=no
+      hardcode_direct_F77=no
+      hardcode_automatic_F77=yes
+      hardcode_shlibpath_var_F77=unsupported
+      whole_archive_flag_spec_F77=''
+      link_all_deplibs_F77=yes
+    if test "$GCC" = yes ; then
+       output_verbose_link_cmd='echo'
+        archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+      archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+         archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+         module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+         archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         ld_shlibs_F77=no
+          ;;
+      esac
+    fi
+      ;;
+
+    dgux*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs_F77=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_F77=yes
+      hardcode_minus_L_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | kfreebsd*-gnu | dragonfly*)
+      archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+       archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+       archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      hardcode_direct_F77=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L_F77=yes
+      export_dynamic_flag_spec_F77='${wl}-E'
+      ;;
+
+    hpux10* | hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+       case "$host_cpu" in
+       hppa*64*|ia64*)
+         archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       esac
+      else
+       case "$host_cpu" in
+       hppa*64*|ia64*)
+         archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+         ;;
+       *)
+         archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+         ;;
+       esac
+      fi
+      if test "$with_gnu_ld" = no; then
+       case "$host_cpu" in
+       hppa*64*)
+         hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+         hardcode_libdir_flag_spec_ld_F77='+b $libdir'
+         hardcode_libdir_separator_F77=:
+         hardcode_direct_F77=no
+         hardcode_shlibpath_var_F77=no
+         ;;
+       ia64*)
+         hardcode_libdir_flag_spec_F77='-L$libdir'
+         hardcode_direct_F77=no
+         hardcode_shlibpath_var_F77=no
+
+         # hardcode_minus_L: Not really in the search PATH,
+         # but as the default location of the library.
+         hardcode_minus_L_F77=yes
+         ;;
+       *)
+         hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+         hardcode_libdir_separator_F77=:
+         hardcode_direct_F77=yes
+         export_dynamic_flag_spec_F77='${wl}-E'
+
+         # hardcode_minus_L: Not really in the search PATH,
+         # but as the default location of the library.
+         hardcode_minus_L_F77=yes
+         ;;
+       esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+       archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+       archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+       hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      link_all_deplibs_F77=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+       archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+       archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    newsos6)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_F77=yes
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    openbsd*)
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+       archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+       hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+       export_dynamic_flag_spec_F77='${wl}-E'
+      else
+       case $host_os in
+        openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+          archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+          hardcode_libdir_flag_spec_F77='-R$libdir'
+          ;;
+        *)
+          archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+          hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+          ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+      allow_undefined_flag_F77=unsupported
+      archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+       allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+       archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+       allow_undefined_flag_F77=' -expect_unresolved \*'
+       archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      ;;
+
+    osf4* | osf5*)     # as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+       allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+       archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      else
+       allow_undefined_flag_F77=' -expect_unresolved \*'
+       archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+       archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+       $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+       # Both c and cxx compiler support -rpath directly
+       hardcode_libdir_flag_spec_F77='-rpath $libdir'
+      fi
+      hardcode_libdir_separator_F77=:
+      ;;
+
+    sco3.2v5*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_F77=no
+      export_dynamic_flag_spec_F77='${wl}-Bexport'
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ;;
+
+    solaris*)
+      no_undefined_flag_F77=' -z text'
+      if test "$GCC" = yes; then
+       wlarc='${wl}'
+       archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+         $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+       wlarc=''
+       archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+       archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+       $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_shlibpath_var_F77=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+       # The compiler driver will combine linker options so we
+       # cannot just pass the convience library names through
+       # without $wl, iff we do not link with $LD.
+       # Luckily, gcc supports the same syntax we need for Sun Studio.
+       # Supported since Solaris 2.6 (maybe 2.5.1?)
+       case $wlarc in
+       '')
+         whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
+       *)
+         whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+       esac ;;
+      esac
+      link_all_deplibs_F77=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+       # Use $CC to link under sequent, because it throws in some extra .o
+       # files that make .init and .fini sections work.
+       archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_direct_F77=yes
+      hardcode_minus_L_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+       sni)
+         archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         hardcode_direct_F77=yes # is this really true???
+       ;;
+       siemens)
+         ## LD is ld it makes a PLAMLIB
+         ## CC just makes a GrossModule.
+         archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+         reload_cmds_F77='$CC -r -o $output$reload_objs'
+         hardcode_direct_F77=no
+        ;;
+       motorola)
+         archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
+       ;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_F77=no
+      export_dynamic_flag_spec_F77='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+       hardcode_shlibpath_var_F77=no
+       runpath_var=LD_RUN_PATH
+       hardcode_runpath_var=yes
+       ld_shlibs_F77=yes
+      fi
+      ;;
+
+    sysv4.2uw2*)
+      archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_F77=yes
+      hardcode_minus_L_F77=no
+      hardcode_shlibpath_var_F77=no
+      hardcode_runpath_var=yes
+      runpath_var=LD_RUN_PATH
+      ;;
+
+   sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[78]* | unixware7*)
+      no_undefined_flag_F77='${wl}-z ${wl}text'
+      if test "$GCC" = yes; then
+       archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    sysv5*)
+      no_undefined_flag_F77=' -z text'
+      # $CC -shared without GNU ld will not create a library from C++
+      # object files and a static libstdc++, better avoid it by now
+      archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+               $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      hardcode_libdir_flag_spec_F77=
+      hardcode_shlibpath_var_F77=no
+      runpath_var='LD_RUN_PATH'
+      ;;
+
+    uts4*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    *)
+      ld_shlibs_F77=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
+echo "${ECHO_T}$ld_shlibs_F77" >&6
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_F77" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_F77=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_F77 in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_F77
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_F77
+        allow_undefined_flag_F77=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+         archive_cmds_need_lc_F77=no
+        else
+         archive_cmds_need_lc_F77=yes
+        fi
+        allow_undefined_flag_F77=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+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"
+if test "$GCC" = yes; then
+  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 ';' >/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.
+    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
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+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'
+  ;;
+
+aix4* | aix5*)
+  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*)
+  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'
+  ;;
+
+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*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    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'
+    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*)
+      # 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}${versuffix}$shared_ext ${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)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  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
+  ;;
+
+kfreebsd*-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
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  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
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    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'
+  ;;
+
+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*)
+  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
+  # 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
+
+  # find out which ABI we are using
+  libsuff=
+  case "$host_cpu" in
+  x86_64*|s390x*|powerpc64*)
+    echo '#line 21462 "configure"' > conftest.$ac_ext
+    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+      case `/usr/bin/file conftest.$ac_objext` in
+      *64-bit*)
+        libsuff=64
+        sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+        ;;
+      esac
+    fi
+    rm -rf conftest*
+    ;;
+  esac
+
+  # 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)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $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'
+  ;;
+
+knetbsd*-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
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU 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=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
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  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='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  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${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  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
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  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
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  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
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_F77=
+if test -n "$hardcode_libdir_flag_spec_F77" || \
+   test -n "$runpath_var_F77" || \
+   test "X$hardcode_automatic_F77" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_F77" != 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_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
+     test "$hardcode_minus_L_F77" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_F77=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_F77=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_F77=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
+echo "${ECHO_T}$hardcode_action_F77" >&6
+
+if test "$hardcode_action_F77" = relink; 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
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+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"
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+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"
+         echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+       else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+       ;;
+   *)
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    ;;
+  esac
+fi
+
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # 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
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_F77 \
+    CC_F77 \
+    LD_F77 \
+    lt_prog_compiler_wl_F77 \
+    lt_prog_compiler_pic_F77 \
+    lt_prog_compiler_static_F77 \
+    lt_prog_compiler_no_builtin_flag_F77 \
+    export_dynamic_flag_spec_F77 \
+    thread_safe_flag_spec_F77 \
+    whole_archive_flag_spec_F77 \
+    enable_shared_with_static_runtimes_F77 \
+    old_archive_cmds_F77 \
+    old_archive_from_new_cmds_F77 \
+    predep_objects_F77 \
+    postdep_objects_F77 \
+    predeps_F77 \
+    postdeps_F77 \
+    compiler_lib_search_path_F77 \
+    archive_cmds_F77 \
+    archive_expsym_cmds_F77 \
+    postinstall_cmds_F77 \
+    postuninstall_cmds_F77 \
+    old_archive_from_expsyms_cmds_F77 \
+    allow_undefined_flag_F77 \
+    no_undefined_flag_F77 \
+    export_symbols_cmds_F77 \
+    hardcode_libdir_flag_spec_F77 \
+    hardcode_libdir_flag_spec_ld_F77 \
+    hardcode_libdir_separator_F77 \
+    hardcode_automatic_F77 \
+    module_cmds_F77 \
+    module_expsym_cmds_F77 \
+    lt_cv_prog_compiler_c_o_F77 \
+    exclude_expsyms_F77 \
+    include_expsyms_F77; do
+
+    case $var in
+    old_archive_cmds_F77 | \
+    old_archive_from_new_cmds_F77 | \
+    archive_cmds_F77 | \
+    archive_expsym_cmds_F77 | \
+    module_cmds_F77 | \
+    module_expsym_cmds_F77 | \
+    old_archive_from_expsyms_cmds_F77 | \
+    export_symbols_cmds_F77 | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_F77
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_F77
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_F77
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_F77
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_F77
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_F77
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_F77
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_F77
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_F77
+archive_expsym_cmds=$lt_archive_expsym_cmds_F77
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_F77
+module_expsym_cmds=$lt_module_expsym_cmds_F77
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_F77
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_F77
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_F77
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_F77
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_F77
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_F77
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_F77
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_F77
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_F77
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_F77
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_F77"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_F77
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_F77
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_F77
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_F77
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+       else
+         tagname=""
+       fi
+       ;;
+
+      GCJ)
+       if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+
+
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+objext_GCJ=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+compiler_GCJ=$CC
+for cc_temp in $compiler""; 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-%%"`
+
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+archive_cmds_need_lc_GCJ=no
+
+old_archive_cmds_GCJ=$old_archive_cmds
+
+
+lt_prog_compiler_no_builtin_flag_GCJ=
+
+if test "$GCC" = yes; then
+  lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin'
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # 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}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:22235: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:22239: \$? = $ac_status" >&5
+   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 >conftest.exp
+     $SED '/^$/d' conftest.err >conftest.er2
+     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+lt_prog_compiler_wl_GCJ=
+lt_prog_compiler_pic_GCJ=
+lt_prog_compiler_static_GCJ=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl_GCJ='-Wl,'
+    lt_prog_compiler_static_GCJ='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static_GCJ='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_GCJ='-fno-common'
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared_GCJ=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       lt_prog_compiler_pic_GCJ=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+       # +Z the default
+       ;;
+      *)
+       lt_prog_compiler_pic_GCJ='-fPIC'
+       ;;
+      esac
+      ;;
+
+    *)
+      lt_prog_compiler_pic_GCJ='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static_GCJ='-Bstatic'
+      else
+       lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+      darwin*)
+        # PIC is the default on this platform
+        # Common symbols not allowed in MH_DYLIB files
+       case $cc_basename in
+         xlc*)
+         lt_prog_compiler_pic_GCJ='-qnocommon'
+         lt_prog_compiler_wl_GCJ='-Wl,'
+         ;;
+       esac
+       ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+       # +Z the default
+       ;;
+      *)
+       lt_prog_compiler_pic_GCJ='+Z'
+       ;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static_GCJ='-non_shared'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    linux*)
+      case $cc_basename in
+      icc* | ecc*)
+       lt_prog_compiler_wl_GCJ='-Wl,'
+       lt_prog_compiler_pic_GCJ='-KPIC'
+       lt_prog_compiler_static_GCJ='-static'
+        ;;
+      pgcc* | pgf77* | pgf90*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+       # which looks to be a dead project)
+       lt_prog_compiler_wl_GCJ='-Wl,'
+       lt_prog_compiler_pic_GCJ='-fpic'
+       lt_prog_compiler_static_GCJ='-static'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl_GCJ='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static_GCJ='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static_GCJ='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      lt_prog_compiler_pic_GCJ='-Kpic'
+      lt_prog_compiler_static_GCJ='-dn'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+       lt_prog_compiler_wl_GCJ='-Qoption ld ';;
+      *)
+       lt_prog_compiler_wl_GCJ='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl_GCJ='-Qoption ld '
+      lt_prog_compiler_pic_GCJ='-PIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+       lt_prog_compiler_pic_GCJ='-Kconform_pic'
+       lt_prog_compiler_static_GCJ='-Bstatic'
+      fi
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      lt_prog_compiler_can_build_shared_GCJ=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic_GCJ='-pic'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared_GCJ=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_GCJ"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works_GCJ=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
+   # 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}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:22497: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:22501: \$? = $ac_status" >&5
+   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 >conftest.exp
+     $SED '/^$/d' conftest.err >conftest.er2
+     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_prog_compiler_pic_works_GCJ=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6
+
+if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then
+    case $lt_prog_compiler_pic_GCJ in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
+     esac
+else
+    lt_prog_compiler_pic_GCJ=
+     lt_prog_compiler_can_build_shared_GCJ=no
+fi
+
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_GCJ=
+    ;;
+  *)
+    lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ"
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o_GCJ=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$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}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:22559: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:22563: \$? = $ac_status" >&5
+   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 > out/conftest.exp
+     $SED '/^$/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_GCJ=yes
+     fi
+   fi
+   chmod u+w .
+   $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 ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  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
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+  runpath_var=
+  allow_undefined_flag_GCJ=
+  enable_shared_with_static_runtimes_GCJ=no
+  archive_cmds_GCJ=
+  archive_expsym_cmds_GCJ=
+  old_archive_From_new_cmds_GCJ=
+  old_archive_from_expsyms_cmds_GCJ=
+  export_dynamic_flag_spec_GCJ=
+  whole_archive_flag_spec_GCJ=
+  thread_safe_flag_spec_GCJ=
+  hardcode_libdir_flag_spec_GCJ=
+  hardcode_libdir_flag_spec_ld_GCJ=
+  hardcode_libdir_separator_GCJ=
+  hardcode_direct_GCJ=no
+  hardcode_minus_L_GCJ=no
+  hardcode_shlibpath_var_GCJ=unsupported
+  link_all_deplibs_GCJ=unknown
+  hardcode_automatic_GCJ=no
+  module_cmds_GCJ=
+  module_expsym_cmds_GCJ=
+  always_export_symbols_GCJ=no
+  export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms_GCJ=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+  # Just being paranoid about ensuring that cc_basename is set.
+  for cc_temp in $compiler""; 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-%%"`
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs_GCJ=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec_GCJ='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+       whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+       whole_archive_flag_spec_GCJ=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>/dev/null` in
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+       ld_shlibs_GCJ=no
+       cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+
+      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      ld_shlibs_GCJ=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+       allow_undefined_flag_GCJ=unsupported
+       # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+       # support --undefined.  This deserves some investigation.  FIXME
+       archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+       ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      allow_undefined_flag_GCJ=unsupported
+      always_export_symbols_GCJ=no
+      enable_shared_with_static_runtimes_GCJ=yes
+      export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+       # If the export-symbols file already is a .def file (1st line
+       # is EXPORTS), use it as is; otherwise, prepend...
+       archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+         cp $export_symbols $output_objdir/$soname.def;
+       else
+         echo EXPORTS > $output_objdir/$soname.def;
+         cat $export_symbols >> $output_objdir/$soname.def;
+       fi~
+       $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
+      else
+       ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    linux*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+       tmp_addflag=
+       case $cc_basename,$host_cpu in
+       pgcc*)                          # Portland Group C compiler
+         whole_archive_flag_spec_GCJ=
+         ;;
+       pgf77* | pgf90* )                       # Portland Group f77 and f90 compilers
+         whole_archive_flag_spec_GCJ=
+         tmp_addflag=' -fpic -Mnomain' ;;
+       ecc*,ia64* | icc*,ia64*)                # Intel C compiler on ia64
+         tmp_addflag=' -i_dynamic' ;;
+       efc*,ia64* | ifort*,ia64*)      # Intel Fortran compiler on ia64
+         tmp_addflag=' -i_dynamic -nofor_main' ;;
+       ifc* | ifort*)                  # Intel Fortran compiler
+         tmp_addflag=' -nofor_main' ;;
+       esac
+       archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+       if test $supports_anon_versioning = yes; then
+         archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
+  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+  $echo "local: *; };" >> $output_objdir/$libname.ver~
+         $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+       fi
+      else
+       ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+       archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+       wlarc=
+      else
+       archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris* | sysv5*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+       ld_shlibs_GCJ=no
+       cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+       archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    sunos4*)
+      archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+       archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       ld_shlibs_GCJ=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs_GCJ" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec_GCJ=
+      export_dynamic_flag_spec_GCJ=
+      whole_archive_flag_spec_GCJ=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag_GCJ=unsupported
+      always_export_symbols_GCJ=yes
+      archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L_GCJ=yes
+      if test "$GCC" = yes && test -z "$link_static_flag"; then
+       # Neither direct hardcoding nor static linking is supported with a
+       # broken collect2.
+       hardcode_direct_GCJ=unsupported
+      fi
+      ;;
+
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+       # On IA64, the linker does run time linking by default, so we don't
+       # have to do anything special.
+       aix_use_runtimelinking=no
+       exp_sym_flag='-Bexport'
+       no_entry_flag=""
+      else
+       # If we're using GNU nm, then we don't want the "-C" option.
+       # -C means demangle to AIX nm, but means don't demangle with GNU nm
+       if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+         export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+       else
+         export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+       fi
+       aix_use_runtimelinking=no
+
+       # Test if we are trying to use run time linking or normal
+       # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+       # need to do runtime linking.
+       case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+         for ld_flag in $LDFLAGS; do
+         if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+           aix_use_runtimelinking=yes
+           break
+         fi
+         done
+       esac
+
+       exp_sym_flag='-bexport'
+       no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds_GCJ=''
+      hardcode_direct_GCJ=yes
+      hardcode_libdir_separator_GCJ=':'
+      link_all_deplibs_GCJ=yes
+
+      if test "$GCC" = yes; then
+       case $host_os in aix4.[012]|aix4.[012].*)
+       # We only want to do this on AIX 4.2 and lower, the check
+       # below for broken collect2 doesn't work under 4.3+
+         collect2name=`${CC} -print-prog-name=collect2`
+         if test -f "$collect2name" && \
+          strings "$collect2name" | grep resolve_lib_name >/dev/null
+         then
+         # We have reworked collect2
+         hardcode_direct_GCJ=yes
+         else
+         # We have old collect2
+         hardcode_direct_GCJ=unsupported
+         # It fails to find uninstalled libraries when the uninstalled
+         # path is not listed in the libpath.  Setting hardcode_minus_L
+         # to unsupported forces relinking
+         hardcode_minus_L_GCJ=yes
+         hardcode_libdir_flag_spec_GCJ='-L$libdir'
+         hardcode_libdir_separator_GCJ=
+         fi
+       esac
+       shared_flag='-shared'
+       if test "$aix_use_runtimelinking" = yes; then
+         shared_flag="$shared_flag "'${wl}-G'
+       fi
+      else
+       # not using gcc
+       if test "$host_cpu" = ia64; then
+       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+       # chokes on -Wl,-G. The following line is correct:
+         shared_flag='-G'
+       else
+       if test "$aix_use_runtimelinking" = yes; then
+           shared_flag='${wl}-G'
+         else
+           shared_flag='${wl}-bM:SRE'
+       fi
+       fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols_GCJ=yes
+      if test "$aix_use_runtimelinking" = yes; then
+       # Warning - without using the other runtime loading flags (-brtl),
+       # -berok will link without error, but may produce a broken library.
+       allow_undefined_flag_GCJ='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+       hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+       archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+       if test "$host_cpu" = ia64; then
+         hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
+         allow_undefined_flag_GCJ="-z nodefs"
+         archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+       else
+        # Determine the default libpath from the value encoded in an empty executable.
+        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+        hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+         # Warning - without using the other run time loading flags,
+         # -berok will link without error, but may produce a broken library.
+         no_undefined_flag_GCJ=' ${wl}-bernotok'
+         allow_undefined_flag_GCJ=' ${wl}-berok'
+         # -bexpall does not export symbols beginning with underscore (_)
+         always_export_symbols_GCJ=yes
+         # Exported symbols can be pulled into shared objects from archives
+         whole_archive_flag_spec_GCJ=' '
+         archive_cmds_need_lc_GCJ=yes
+         # This is similar to how AIX traditionally builds it's shared libraries.
+         archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+       fi
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs_GCJ=no
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec_GCJ=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec_GCJ=' '
+      allow_undefined_flag_GCJ=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds_GCJ='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes_GCJ=yes
+      ;;
+
+    darwin* | rhapsody*)
+      case "$host_os" in
+        rhapsody* | darwin1.[012])
+         allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[012])
+               allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+      esac
+      archive_cmds_need_lc_GCJ=no
+      hardcode_direct_GCJ=no
+      hardcode_automatic_GCJ=yes
+      hardcode_shlibpath_var_GCJ=unsupported
+      whole_archive_flag_spec_GCJ=''
+      link_all_deplibs_GCJ=yes
+    if test "$GCC" = yes ; then
+       output_verbose_link_cmd='echo'
+        archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+      archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+         archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+         module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+         archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         ld_shlibs_GCJ=no
+          ;;
+      esac
+    fi
+      ;;
+
+    dgux*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs_GCJ=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_GCJ=yes
+      hardcode_minus_L_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | kfreebsd*-gnu | dragonfly*)
+      archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+       archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+       archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      hardcode_direct_GCJ=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L_GCJ=yes
+      export_dynamic_flag_spec_GCJ='${wl}-E'
+      ;;
+
+    hpux10* | hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+       case "$host_cpu" in
+       hppa*64*|ia64*)
+         archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       esac
+      else
+       case "$host_cpu" in
+       hppa*64*|ia64*)
+         archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+         ;;
+       *)
+         archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+         ;;
+       esac
+      fi
+      if test "$with_gnu_ld" = no; then
+       case "$host_cpu" in
+       hppa*64*)
+         hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+         hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
+         hardcode_libdir_separator_GCJ=:
+         hardcode_direct_GCJ=no
+         hardcode_shlibpath_var_GCJ=no
+         ;;
+       ia64*)
+         hardcode_libdir_flag_spec_GCJ='-L$libdir'
+         hardcode_direct_GCJ=no
+         hardcode_shlibpath_var_GCJ=no
+
+         # hardcode_minus_L: Not really in the search PATH,
+         # but as the default location of the library.
+         hardcode_minus_L_GCJ=yes
+         ;;
+       *)
+         hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+         hardcode_libdir_separator_GCJ=:
+         hardcode_direct_GCJ=yes
+         export_dynamic_flag_spec_GCJ='${wl}-E'
+
+         # hardcode_minus_L: Not really in the search PATH,
+         # but as the default location of the library.
+         hardcode_minus_L_GCJ=yes
+         ;;
+       esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+       archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+       archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+       hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      link_all_deplibs_GCJ=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+       archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+       archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    newsos6)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_GCJ=yes
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    openbsd*)
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+       archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+       hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+       export_dynamic_flag_spec_GCJ='${wl}-E'
+      else
+       case $host_os in
+        openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+          archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+          hardcode_libdir_flag_spec_GCJ='-R$libdir'
+          ;;
+        *)
+          archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+          hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+          ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+      allow_undefined_flag_GCJ=unsupported
+      archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+       allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+       archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+       allow_undefined_flag_GCJ=' -expect_unresolved \*'
+       archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      ;;
+
+    osf4* | osf5*)     # as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+       allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+       archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      else
+       allow_undefined_flag_GCJ=' -expect_unresolved \*'
+       archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+       archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+       $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+       # Both c and cxx compiler support -rpath directly
+       hardcode_libdir_flag_spec_GCJ='-rpath $libdir'
+      fi
+      hardcode_libdir_separator_GCJ=:
+      ;;
+
+    sco3.2v5*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_GCJ=no
+      export_dynamic_flag_spec_GCJ='${wl}-Bexport'
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ;;
+
+    solaris*)
+      no_undefined_flag_GCJ=' -z text'
+      if test "$GCC" = yes; then
+       wlarc='${wl}'
+       archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+         $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+       wlarc=''
+       archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+       archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+       $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+       # The compiler driver will combine linker options so we
+       # cannot just pass the convience library names through
+       # without $wl, iff we do not link with $LD.
+       # Luckily, gcc supports the same syntax we need for Sun Studio.
+       # Supported since Solaris 2.6 (maybe 2.5.1?)
+       case $wlarc in
+       '')
+         whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;;
+       *)
+         whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+       esac ;;
+      esac
+      link_all_deplibs_GCJ=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+       # Use $CC to link under sequent, because it throws in some extra .o
+       # files that make .init and .fini sections work.
+       archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_minus_L_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+       sni)
+         archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         hardcode_direct_GCJ=yes # is this really true???
+       ;;
+       siemens)
+         ## LD is ld it makes a PLAMLIB
+         ## CC just makes a GrossModule.
+         archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+         reload_cmds_GCJ='$CC -r -o $output$reload_objs'
+         hardcode_direct_GCJ=no
+        ;;
+       motorola)
+         archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie
+       ;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_GCJ=no
+      export_dynamic_flag_spec_GCJ='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+       hardcode_shlibpath_var_GCJ=no
+       runpath_var=LD_RUN_PATH
+       hardcode_runpath_var=yes
+       ld_shlibs_GCJ=yes
+      fi
+      ;;
+
+    sysv4.2uw2*)
+      archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_GCJ=yes
+      hardcode_minus_L_GCJ=no
+      hardcode_shlibpath_var_GCJ=no
+      hardcode_runpath_var=yes
+      runpath_var=LD_RUN_PATH
+      ;;
+
+   sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[78]* | unixware7*)
+      no_undefined_flag_GCJ='${wl}-z ${wl}text'
+      if test "$GCC" = yes; then
+       archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    sysv5*)
+      no_undefined_flag_GCJ=' -z text'
+      # $CC -shared without GNU ld will not create a library from C++
+      # object files and a static libstdc++, better avoid it by now
+      archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+               $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      hardcode_libdir_flag_spec_GCJ=
+      hardcode_shlibpath_var_GCJ=no
+      runpath_var='LD_RUN_PATH'
+      ;;
+
+    uts4*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    *)
+      ld_shlibs_GCJ=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
+echo "${ECHO_T}$ld_shlibs_GCJ" >&6
+test "$ld_shlibs_GCJ" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_GCJ" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_GCJ=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_GCJ in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_GCJ
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
+        allow_undefined_flag_GCJ=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+         archive_cmds_need_lc_GCJ=no
+        else
+         archive_cmds_need_lc_GCJ=yes
+        fi
+        allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+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"
+if test "$GCC" = yes; then
+  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 ';' >/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.
+    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
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+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'
+  ;;
+
+aix4* | aix5*)
+  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*)
+  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'
+  ;;
+
+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*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    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'
+    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*)
+      # 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}${versuffix}$shared_ext ${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)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  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
+  ;;
+
+kfreebsd*-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
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  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
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    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'
+  ;;
+
+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*)
+  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
+  # 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
+
+  # find out which ABI we are using
+  libsuff=
+  case "$host_cpu" in
+  x86_64*|s390x*|powerpc64*)
+    echo '#line 23944 "configure"' > conftest.$ac_ext
+    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+      case `/usr/bin/file conftest.$ac_objext` in
+      *64-bit*)
+        libsuff=64
+        sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+        ;;
+      esac
+    fi
+    rm -rf conftest*
+    ;;
+  esac
+
+  # 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)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $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'
+  ;;
+
+knetbsd*-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
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU 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=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
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  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='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  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${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  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
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  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
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  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
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_GCJ=
+if test -n "$hardcode_libdir_flag_spec_GCJ" || \
+   test -n "$runpath_var_GCJ" || \
+   test "X$hardcode_automatic_GCJ" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_GCJ" != 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_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
+     test "$hardcode_minus_L_GCJ" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_GCJ=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_GCJ=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_GCJ=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
+echo "${ECHO_T}$hardcode_action_GCJ" >&6
+
+if test "$hardcode_action_GCJ" = relink; 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
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+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"
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+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"
+         echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+       else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+       ;;
+   *)
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    ;;
+  esac
+fi
+
+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*)
+    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
+    echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+   ;;
+
+  *)
+    echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+  lt_cv_dlopen="shl_load"
+else
+  echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+  echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char dlopen (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+  lt_cv_dlopen="dlopen"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_svld_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_c_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_dld_link=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  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"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+         if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 24815 "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
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#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); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+         if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 24913 "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
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#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); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+    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
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # 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
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_GCJ \
+    CC_GCJ \
+    LD_GCJ \
+    lt_prog_compiler_wl_GCJ \
+    lt_prog_compiler_pic_GCJ \
+    lt_prog_compiler_static_GCJ \
+    lt_prog_compiler_no_builtin_flag_GCJ \
+    export_dynamic_flag_spec_GCJ \
+    thread_safe_flag_spec_GCJ \
+    whole_archive_flag_spec_GCJ \
+    enable_shared_with_static_runtimes_GCJ \
+    old_archive_cmds_GCJ \
+    old_archive_from_new_cmds_GCJ \
+    predep_objects_GCJ \
+    postdep_objects_GCJ \
+    predeps_GCJ \
+    postdeps_GCJ \
+    compiler_lib_search_path_GCJ \
+    archive_cmds_GCJ \
+    archive_expsym_cmds_GCJ \
+    postinstall_cmds_GCJ \
+    postuninstall_cmds_GCJ \
+    old_archive_from_expsyms_cmds_GCJ \
+    allow_undefined_flag_GCJ \
+    no_undefined_flag_GCJ \
+    export_symbols_cmds_GCJ \
+    hardcode_libdir_flag_spec_GCJ \
+    hardcode_libdir_flag_spec_ld_GCJ \
+    hardcode_libdir_separator_GCJ \
+    hardcode_automatic_GCJ \
+    module_cmds_GCJ \
+    module_expsym_cmds_GCJ \
+    lt_cv_prog_compiler_c_o_GCJ \
+    exclude_expsyms_GCJ \
+    include_expsyms_GCJ; do
+
+    case $var in
+    old_archive_cmds_GCJ | \
+    old_archive_from_new_cmds_GCJ | \
+    archive_cmds_GCJ | \
+    archive_expsym_cmds_GCJ | \
+    module_cmds_GCJ | \
+    module_expsym_cmds_GCJ | \
+    old_archive_from_expsyms_cmds_GCJ | \
+    export_symbols_cmds_GCJ | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_GCJ
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_GCJ
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_GCJ
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_GCJ
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_GCJ
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_GCJ
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_GCJ
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_GCJ
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_GCJ
+archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_GCJ
+module_expsym_cmds=$lt_module_expsym_cmds_GCJ
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_GCJ
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_GCJ
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_GCJ
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_GCJ
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_GCJ
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_GCJ
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_GCJ
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_GCJ
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_GCJ
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_GCJ"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_GCJ
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_GCJ
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_GCJ
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_GCJ
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+       else
+         tagname=""
+       fi
+       ;;
+
+      RC)
+
+
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+objext_RC=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+compiler_RC=$CC
+for cc_temp in $compiler""; 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_cv_prog_compiler_c_o_RC=yes
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # 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
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_RC \
+    CC_RC \
+    LD_RC \
+    lt_prog_compiler_wl_RC \
+    lt_prog_compiler_pic_RC \
+    lt_prog_compiler_static_RC \
+    lt_prog_compiler_no_builtin_flag_RC \
+    export_dynamic_flag_spec_RC \
+    thread_safe_flag_spec_RC \
+    whole_archive_flag_spec_RC \
+    enable_shared_with_static_runtimes_RC \
+    old_archive_cmds_RC \
+    old_archive_from_new_cmds_RC \
+    predep_objects_RC \
+    postdep_objects_RC \
+    predeps_RC \
+    postdeps_RC \
+    compiler_lib_search_path_RC \
+    archive_cmds_RC \
+    archive_expsym_cmds_RC \
+    postinstall_cmds_RC \
+    postuninstall_cmds_RC \
+    old_archive_from_expsyms_cmds_RC \
+    allow_undefined_flag_RC \
+    no_undefined_flag_RC \
+    export_symbols_cmds_RC \
+    hardcode_libdir_flag_spec_RC \
+    hardcode_libdir_flag_spec_ld_RC \
+    hardcode_libdir_separator_RC \
+    hardcode_automatic_RC \
+    module_cmds_RC \
+    module_expsym_cmds_RC \
+    lt_cv_prog_compiler_c_o_RC \
+    exclude_expsyms_RC \
+    include_expsyms_RC; do
+
+    case $var in
+    old_archive_cmds_RC | \
+    old_archive_from_new_cmds_RC | \
+    archive_cmds_RC | \
+    archive_expsym_cmds_RC | \
+    module_cmds_RC | \
+    module_expsym_cmds_RC | \
+    old_archive_from_expsyms_cmds_RC | \
+    export_symbols_cmds_RC | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_RC
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_RC
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_RC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_RC
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_RC
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_RC
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_RC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_RC
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_RC
+archive_expsym_cmds=$lt_archive_expsym_cmds_RC
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_RC
+module_expsym_cmds=$lt_module_expsym_cmds_RC
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_RC
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_RC
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_RC
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_RC
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_RC
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_RC
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_RC
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_RC
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_RC
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_RC
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_RC
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_RC"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_RC
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_RC
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_RC
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_RC
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+       ;;
+
+      *)
+       { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5
+echo "$as_me: error: Unsupported tag name: $tagname" >&2;}
+   { (exit 1); exit 1; }; }
+       ;;
+      esac
+
+      # Append the new tag name to the list of available tags.
+      if test -n "$tagname" ; then
+      available_tags="$available_tags $tagname"
+    fi
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  # Now substitute the updated list of available tags.
+  if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+    mv "${ofile}T" "$ofile"
+    chmod +x "$ofile"
   else
-    ac_cpp_err=
+    rm -f "${ofile}T"
+    { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5
+echo "$as_me: error: unable to update list of available tagged configurations." >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+fi
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+# Prevent multiple expansion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+       echo "$as_me:$LINENO: checking for linux kernel dir" >&5
+echo $ECHO_N "checking for linux kernel dir... $ECHO_C" >&6
+if test "${ensc_cv_path_kerneldir+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+# Check whether --with-kerneldir or --without-kerneldir was given.
+if test "${with_kerneldir+set}" = set; then
+  withval="$with_kerneldir"
+  case "$withval" in
+               yes|no) { { echo "$as_me:$LINENO: error: '$withval' is not a valid value for kerneldir" >&5
+echo "$as_me: error: '$withval' is not a valid value for kerneldir" >&2;}
+   { (exit 1); exit 1; }; };;
+               *)      ensc_cv_path_kerneldir=$withval;;
+            esac
+else
+  ensc_cv_path_kerneldir=
+            for i in /lib/modules/$(uname -r)/build /usr/src/linux /usr; do
+               test -e $i/include/linux/version.h && { ensc_cv_path_kerneldir=$i; break; }
+            done
+fi;
+
+fi
+echo "$as_me:$LINENO: result: $ensc_cv_path_kerneldir" >&5
+echo "${ECHO_T}$ensc_cv_path_kerneldir" >&6
+
+       test "$ensc_cv_path_kerneldir" -a -e "$ensc_cv_path_kerneldir"/include/linux/version.h || {
+               { { echo "$as_me:$LINENO: error: Can not find kernelsources" >&5
+echo "$as_me: error: Can not find kernelsources" >&2;}
+   { (exit 1); exit 1; }; }
+       }
+
+
+
+
+       echo "$as_me:$LINENO: checking for linux kernel headers" >&5
+echo $ECHO_N "checking for linux kernel headers... $ECHO_C" >&6
+if test "${ensc_cv_path_kernelheaders+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+               ensc_cv_path_kernelheaders=$ensc_cv_path_kerneldir/include
+
+fi
+echo "$as_me:$LINENO: result: $ensc_cv_path_kernelheaders" >&5
+echo "${ECHO_T}$ensc_cv_path_kernelheaders" >&6
+
+       if test x"kernelincludedir" != x; then
+               kernelincludedir=$ensc_cv_path_kernelheaders
+
+       fi
+
+
+       echo "$as_me:$LINENO: checking which vserver-rootdir is to use" >&5
+echo $ECHO_N "checking which vserver-rootdir is to use... $ECHO_C" >&6
+
+# Check whether --with-vrootdir or --without-vrootdir was given.
+if test "${with_vrootdir+set}" = set; then
+  withval="$with_vrootdir"
+  case "$withval" in
+                       yes|no) { { echo "$as_me:$LINENO: error: '$withval' is not a valid value for vrootdir" >&5
+echo "$as_me: error: '$withval' is not a valid value for vrootdir" >&2;}
+   { (exit 1); exit 1; }; };;
+                       *)      ensc_uv_path_vrootdir=$withval;;
+                    esac
+else
+  ensc_uv_path_vrootdir=/vservers
+fi;
+       echo "$as_me:$LINENO: result: $ensc_uv_path_vrootdir" >&5
+echo "${ECHO_T}$ensc_uv_path_vrootdir" >&6
+
+       if test x"vserverdir" != x; then
+               vserverdir=$ensc_uv_path_vrootdir
+
+       fi
+
+
+       if test x"trunk" != x; then
+               CVS2CL_TAG='-F trunk'
+
+       fi
+
+       for ac_prog in cvs2cl
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CVS2CL+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CVS2CL"; then
+  ac_cv_prog_CVS2CL="$CVS2CL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CVS2CL="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CVS2CL=$ac_cv_prog_CVS2CL
+if test -n "$CVS2CL"; then
+  echo "$as_me:$LINENO: result: $CVS2CL" >&5
+echo "${ECHO_T}$CVS2CL" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$CVS2CL" && break
+done
+
+
+
+if test x"$CVS2CL" != x; then
+  HAVE_CVS2CL_TRUE=
+  HAVE_CVS2CL_FALSE='#'
+else
+  HAVE_CVS2CL_TRUE='#'
+  HAVE_CVS2CL_FALSE=
+fi
+
+
+       for ac_prog in rcs2log
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_RCS2LOG+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$RCS2LOG"; then
+  ac_cv_prog_RCS2LOG="$RCS2LOG" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RCS2LOG="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
   fi
+done
+done
+
+fi
+fi
+RCS2LOG=$ac_cv_prog_RCS2LOG
+if test -n "$RCS2LOG"; then
+  echo "$as_me:$LINENO: result: $RCS2LOG" >&5
+echo "${ECHO_T}$RCS2LOG" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$RCS2LOG" && break
+done
+
+
+
+if test x"$RCS2LOG" != x; then
+  HAVE_RCS2LOG_TRUE=
+  HAVE_RCS2LOG_FALSE='#'
+else
+  HAVE_RCS2LOG_TRUE='#'
+  HAVE_RCS2LOG_FALSE=
+fi
+
+
+
+
+echo "$as_me:$LINENO: checking whether to use internal kernel headers" >&5
+echo $ECHO_N "checking whether to use internal kernel headers... $ECHO_C" >&6
+# Check whether --enable-internal-headers or --disable-internal-headers was given.
+if test "${enable_internal_headers+set}" = set; then
+  enableval="$enable_internal_headers"
+  case "$enableval" in
+                 (yes|no) ;;
+                 (*)      { { echo "$as_me:$LINENO: error: '$i' is not a supported value for '--disable-internal-headers'" >&5
+echo "$as_me: error: '$i' is not a supported value for '--disable-internal-headers'" >&2;}
+   { (exit 1); exit 1; }; };;
+              esac
 else
-  ac_cpp_err=yes
+  enable_internal_headers=yes
+fi;
+
+
+
+if test x"$enable_internal_headers" = xyes; then
+  ENSC_ENABLE_INTERNAL_HEADERS_TRUE=
+  ENSC_ENABLE_INTERNAL_HEADERS_FALSE='#'
+else
+  ENSC_ENABLE_INTERNAL_HEADERS_TRUE='#'
+  ENSC_ENABLE_INTERNAL_HEADERS_FALSE=
 fi
-if test -z "$ac_cpp_err"; then
-  # Broken: success on invalid input.
-continue
+
+echo "$as_me:$LINENO: result: $enable_internal_headers" >&5
+echo "${ECHO_T}$enable_internal_headers" >&6
+
+echo "$as_me:$LINENO: checking for supported APIs" >&5
+echo $ECHO_N "checking for supported APIs... $ECHO_C" >&6
+# Check whether --enable-apis or --disable-apis was given.
+if test "${enable_apis+set}" = set; then
+  enableval="$enable_apis"
+
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  enable_apis=compat,v11,v13,fscompat,net
+fi;
 
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.$ac_ext
+test x"$enable_apis" != xALL || enable_apis='legacy,compat,v11,v13,fscompat,net'
+enable_api_oldproc=
+enable_api_olduts=
+old_IFS=$IFS
+IFS=,;
+for i in $enable_apis; do
+       case "$i" in
+               (compat)
+cat >>confdefs.h <<\_ACEOF
+#define VC_ENABLE_API_COMPAT 1
+_ACEOF
+
+                               enable_api_oldproc=1
+                               enable_api_olduts=1
+                               ;;
+               (legacy)
+cat >>confdefs.h <<\_ACEOF
+#define VC_ENABLE_API_LEGACY 1
+_ACEOF
+
+                               enable_api_old_proc=1
+                               enable_api_olduts=1
+                               ;;
+               (v11)
+cat >>confdefs.h <<\_ACEOF
+#define VC_ENABLE_API_V11 1
+_ACEOF
 
+                               enable_api_oldproc=1
+                               enable_api_olduts=1
+                               ;;
+               (v13)
+cat >>confdefs.h <<\_ACEOF
+#define VC_ENABLE_API_V13 1
+_ACEOF
+;;
+               (net)
+cat >>confdefs.h <<\_ACEOF
+#define VC_ENABLE_API_NET 1
+_ACEOF
+;;
+               (fscompat)
+cat >>confdefs.h <<\_ACEOF
+#define VC_ENABLE_API_FSCOMPAT 1
+_ACEOF
+;;
+               (*)             { { echo "$as_me:$LINENO: error: '$i' is not a supported API" >&5
+echo "$as_me: error: '$i' is not a supported API" >&2;}
+   { (exit 1); exit 1; }; };;
+       esac
 done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
-  :
-else
-  { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&5
-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+IFS=$old_IFS
+if test x"$enable_api_oldproc" != x; then
+
+cat >>confdefs.h <<\_ACEOF
+#define VC_ENABLE_API_OLDPROC 1
+_ACEOF
+
+       enable_apis="$enable_apis,oldproc"
 fi
+if test x"$enable_api_olduts" != x; then
 
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+cat >>confdefs.h <<\_ACEOF
+#define VC_ENABLE_API_OLDUTS 1
+_ACEOF
 
-echo "$as_me:$LINENO: checking for egrep" >&5
-echo $ECHO_N "checking for egrep... $ECHO_C" >&6
-if test "${ac_cv_prog_egrep+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if echo a | (grep -E '(a|b)') >/dev/null 2>&1
-    then ac_cv_prog_egrep='grep -E'
-    else ac_cv_prog_egrep='egrep'
-    fi
+       enable_apis="$enable_apis,olduts"
 fi
-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
-echo "${ECHO_T}$ac_cv_prog_egrep" >&6
- EGREP=$ac_cv_prog_egrep
+echo "$as_me:$LINENO: result: $enable_apis" >&5
+echo "${ECHO_T}$enable_apis" >&6
 
 
 
@@ -4436,6 +26328,8 @@ _ACEOF
 
 
 
+
+
         echo "$as_me:$LINENO: checking for syscall(2) invocation method" >&5
 echo $ECHO_N "checking for syscall(2) invocation method... $ECHO_C" >&6
 
@@ -4450,7 +26344,7 @@ fi;
 echo "${ECHO_T}$with_syscall" >&6
 
         case x"$with_syscall" in
-            xauto)
+            (xauto)
                echo "$as_me:$LINENO: checking which syscall(2) invocation works" >&5
 echo $ECHO_N "checking which syscall(2) invocation works... $ECHO_C" >&6
 if test "${ensc_cv_test_syscall+set}" = set; then
@@ -4464,10 +26358,15 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
                                cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
 
-#include <asm/unistd.h>
-#include <syscall.h>
+#include "$srcdir/lib/syscall-wrap.h"
 #include <errno.h>
+
 #define __NR_foo0      300
 #define __NR_foo1      301
 #define __NR_foo2      302
@@ -4534,7 +26433,7 @@ echo "$as_me:$LINENO: result: $ensc_cv_test_syscall" >&5
 echo "${ECHO_T}$ensc_cv_test_syscall" >&6
                with_syscall=$ensc_cv_test_syscall
                ;;
-            xfast|xtraditional)
+            (xfast|xtraditional)
                ;;
             *)
                { { echo "$as_me:$LINENO: error: '$with_syscall' is not a valid value for '--with-syscall'" >&5
@@ -4543,6 +26442,10 @@ echo "$as_me: error: '$with_syscall' is not a valid value for '--with-syscall'"
                ;;
         esac
 
+       if test x"$with_syscall $ensc_use_alternative_syscall_macros" = 'xfast yes'; then
+           with_syscall='alternative'
+        fi
+
         if test x"$with_syscall" = xtraditional; then
 
 cat >>confdefs.h <<\_ACEOF
@@ -4554,260 +26457,125 @@ _ACEOF
 
 
 
-ac_ext=cc
+
+
+    ac_ext=cc
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
-echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
-if test -z "$CXXCPP"; then
-  if test "${ac_cv_prog_CXXCPP+set}" = set; then
+
+    echo "$as_me:$LINENO: checking for ext2fs-headers" >&5
+echo $ECHO_N "checking for ext2fs-headers... $ECHO_C" >&6
+if test "${ensc_cv_test_ext2fs_header+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-      # Double quotes because CXXCPP needs to be expanded
-    for CXXCPP in "$CXX -E" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_cxx_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.$ac_ext
 
-  # OK, works on sane cases.  Now check whether non-existent headers
-  # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
+       cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+#include <ext2fs/ext2_fs.h>
+                                         int main() { return 0; }
 _ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_cxx_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  # Broken: success on invalid input.
-continue
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
-  break
-fi
-
-    done
-    ac_cv_prog_CXXCPP=$CXXCPP
-
-fi
-  CXXCPP=$ac_cv_prog_CXXCPP
-else
-  ac_cv_prog_CXXCPP=$CXXCPP
-fi
-echo "$as_me:$LINENO: result: $CXXCPP" >&5
-echo "${ECHO_T}$CXXCPP" >&6
-ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_cxx_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
   ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_cxx_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  :
+  (exit $ac_status); }; }; then
+  ensc_cv_test_ext2fs_header=e2fsprogs
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.$ac_ext
 
-  # OK, works on sane cases.  Now check whether non-existent headers
-  # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
+       cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+#include <linux/ext2_fs.h>
+                                         int main() { return 0; }
 _ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_cxx_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  # Broken: success on invalid input.
-continue
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_cxx_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ensc_cv_test_ext2fs_header=kernel
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.$ac_ext
 
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
-  :
-else
-  { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
-See \`config.log' for more details." >&5
-echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+       ensc_cv_test_ext2fs_header=none
 fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ensc_cv_test_ext2fs_header" >&5
+echo "${ECHO_T}$ensc_cv_test_ext2fs_header" >&6
 
-ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
-if test "${ac_cv_header_stdc+set}" = set; then
+    case x"$ensc_cv_test_ext2fs_header" in
+       (xe2fsprogs)
+               if test "${ac_cv_header_ext2fs_ext2_fs_h+set}" = set; then
+  echo "$as_me:$LINENO: checking for ext2fs/ext2_fs.h" >&5
+echo $ECHO_N "checking for ext2fs/ext2_fs.h... $ECHO_C" >&6
+if test "${ac_cv_header_ext2fs_ext2_fs_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_ext2fs_ext2_fs_h" >&5
+echo "${ECHO_T}$ac_cv_header_ext2fs_ext2_fs_h" >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking ext2fs/ext2_fs.h usability" >&5
+echo $ECHO_N "checking ext2fs/ext2_fs.h usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
+$ac_includes_default
+#include <ext2fs/ext2_fs.h>
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
@@ -4831,143 +26599,344 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_header_stdc=yes
+  ac_header_compiler=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_header_stdc=no
+ac_header_compiler=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
 
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
+# Is the header present?
+echo "$as_me:$LINENO: checking ext2fs/ext2_fs.h presence" >&5
+echo $ECHO_N "checking ext2fs/ext2_fs.h presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <string.h>
-
+#include <ext2fs/ext2_fs.h>
 _ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then
-  :
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+  else
+    ac_cpp_err=
+  fi
 else
-  ac_cv_header_stdc=no
+  ac_cpp_err=yes
 fi
-rm -f conftest*
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+  ac_header_preproc=no
 fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
 
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdlib.h>
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: ext2fs/ext2_fs.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: ext2fs/ext2_fs.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: ext2fs/ext2_fs.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: ext2fs/ext2_fs.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: ext2fs/ext2_fs.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: ext2fs/ext2_fs.h: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: ext2fs/ext2_fs.h:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: ext2fs/ext2_fs.h:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: ext2fs/ext2_fs.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: ext2fs/ext2_fs.h: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: ext2fs/ext2_fs.h:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: ext2fs/ext2_fs.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: ext2fs/ext2_fs.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: ext2fs/ext2_fs.h: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: ext2fs/ext2_fs.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: ext2fs/ext2_fs.h: in the future, the compiler will take precedence" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------------------------ ##
+## Report this to enrico.scholz@informatik.tu-chemnitz.de ##
+## ------------------------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for ext2fs/ext2_fs.h" >&5
+echo $ECHO_N "checking for ext2fs/ext2_fs.h... $ECHO_C" >&6
+if test "${ac_cv_header_ext2fs_ext2_fs_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_header_ext2fs_ext2_fs_h=$ac_header_preproc
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_ext2fs_ext2_fs_h" >&5
+echo "${ECHO_T}$ac_cv_header_ext2fs_ext2_fs_h" >&6
+
+fi
+if test $ac_cv_header_ext2fs_ext2_fs_h = yes; then
 
+cat >>confdefs.h <<\_ACEOF
+#define ENSC_HAVE_EXT2FS_EXT2_FS_H 1
 _ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then
-  :
+
 else
-  ac_cv_header_stdc=no
+  { { echo "$as_me:$LINENO: error: unexpected error while checkin for <ext2fs/ext2_fs.h>
+See \`config.log' for more details." >&5
+echo "$as_me: error: unexpected error while checkin for <ext2fs/ext2_fs.h>
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
 fi
-rm -f conftest*
 
-fi
 
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then
-  :
+               ;;
+       (xkernel)
+               if test "${ac_cv_header_linux_ext2_fs_h+set}" = set; then
+  echo "$as_me:$LINENO: checking for linux/ext2_fs.h" >&5
+echo $ECHO_N "checking for linux/ext2_fs.h... $ECHO_C" >&6
+if test "${ac_cv_header_linux_ext2_fs_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_linux_ext2_fs_h" >&5
+echo "${ECHO_T}$ac_cv_header_linux_ext2_fs_h" >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking linux/ext2_fs.h usability" >&5
+echo $ECHO_N "checking linux/ext2_fs.h usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <ctype.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-                  (('a' <= (c) && (c) <= 'i') \
-                    || ('j' <= (c) && (c) <= 'r') \
-                    || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-       || toupper (i) != TOUPPER (i))
-      exit(2);
-  exit (0);
-}
+$ac_includes_default
+#include <linux/ext2_fs.h>
 _ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  (exit $ac_status); } &&
+        { ac_try='test -z "$ac_cxx_werror_flag"
+                        || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+        { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  :
+  ac_header_compiler=yes
 else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
+  echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-( exit $ac_status )
-ac_cv_header_stdc=no
+ac_header_compiler=no
 fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking linux/ext2_fs.h presence" >&5
+echo $ECHO_N "checking linux/ext2_fs.h presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <linux/ext2_fs.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
 fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: linux/ext2_fs.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: linux/ext2_fs.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: linux/ext2_fs.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: linux/ext2_fs.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: linux/ext2_fs.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: linux/ext2_fs.h: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: linux/ext2_fs.h:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: linux/ext2_fs.h:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: linux/ext2_fs.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: linux/ext2_fs.h: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: linux/ext2_fs.h:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: linux/ext2_fs.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: linux/ext2_fs.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: linux/ext2_fs.h: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: linux/ext2_fs.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: linux/ext2_fs.h: in the future, the compiler will take precedence" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------------------------ ##
+## Report this to enrico.scholz@informatik.tu-chemnitz.de ##
+## ------------------------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for linux/ext2_fs.h" >&5
+echo $ECHO_N "checking for linux/ext2_fs.h... $ECHO_C" >&6
+if test "${ac_cv_header_linux_ext2_fs_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_header_linux_ext2_fs_h=$ac_header_preproc
 fi
+echo "$as_me:$LINENO: result: $ac_cv_header_linux_ext2_fs_h" >&5
+echo "${ECHO_T}$ac_cv_header_linux_ext2_fs_h" >&6
+
 fi
-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-echo "${ECHO_T}$ac_cv_header_stdc" >&6
-if test $ac_cv_header_stdc = yes; then
+if test $ac_cv_header_linux_ext2_fs_h = yes; then
 
 cat >>confdefs.h <<\_ACEOF
-#define STDC_HEADERS 1
+#define ENSC_HAVE_LINUX_EXT2_FS_H 1
 _ACEOF
 
+else
+  { { echo "$as_me:$LINENO: error: unexpected error while checkin for <linux/ext2_fs.h>
+See \`config.log' for more details." >&5
+echo "$as_me: error: unexpected error while checkin for <linux/ext2_fs.h>
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
 fi
 
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
 
+               ;;
+       (*)
+               { { echo "$as_me:$LINENO: error:
+ext2fs headers were not found, or they are not usable. This can have
+the following reasons:
+
+* you have neither the e2fsprogs nor the kernel headers installed
+
+* kernel headers are broken (e.g. these of linux 2.6 are known to be)
+  and you do not have e2fsprogs headers installed; please try to install
+  - e2fsprogs-devel (for Red Hat), or
+  - libext2fs2-devel (for Mandrake), or
+  - e2fslibs-dev (for Debian)
+  in this case.
+
+* kernel headers are broken and your e2fsprogs headers are too old;
+  until version 1.27 (inclusive), they are using reserved C++ keywords
 
+* kernel headers are broken and your e2fsprogs headers are too new;
+  recent (January 2004) BK snapshots of e2fsprogs are unusable for
+  C++, for details and a solution see
+  https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=112448
 
 
+In the latter two cases you have the following options:
+* fix the headers manually, or
+* install a stable version of e2fsprogs (e.g. 1.34), or
+* use good kernel headers (from linux 2.4.x)
 
+See \`config.log' for more details." >&5
+echo "$as_me: error:
+ext2fs headers were not found, or they are not usable. This can have
+the following reasons:
 
+* you have neither the e2fsprogs nor the kernel headers installed
 
+* kernel headers are broken (e.g. these of linux 2.6 are known to be)
+  and you do not have e2fsprogs headers installed; please try to install
+  - e2fsprogs-devel (for Red Hat), or
+  - libext2fs2-devel (for Mandrake), or
+  - e2fslibs-dev (for Debian)
+  in this case.
 
+* kernel headers are broken and your e2fsprogs headers are too old;
+  until version 1.27 (inclusive), they are using reserved C++ keywords
 
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-                 inttypes.h stdint.h unistd.h
+* kernel headers are broken and your e2fsprogs headers are too new;
+  recent (January 2004) BK snapshots of e2fsprogs are unusable for
+  C++, for details and a solution see
+  https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=112448
+
+
+In the latter two cases you have the following options:
+* fix the headers manually, or
+* install a stable version of e2fsprogs (e.g. 1.34), or
+* use good kernel headers (from linux 2.4.x)
+
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+               ;;
+    esac
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+for ac_func in vserver
 do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -4976,74 +26945,116 @@ _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-$ac_includes_default
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
 
-#include <$ac_header>
+int
+main ()
+{
+return f != $ac_func;
+  ;
+  return 0;
+}
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_cxx_werror_flag"
+        { ac_try='test -z "$ac_c_werror_flag"
                         || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; } &&
-        { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  eval "$as_ac_Header=yes"
+  eval "$as_ac_var=yes"
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-eval "$as_ac_Header=no"
+eval "$as_ac_var=no"
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
 
 fi
-
 done
 
-
-
-    ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-    echo "$as_me:$LINENO: checking for ext2fs-headers" >&5
-echo $ECHO_N "checking for ext2fs-headers... $ECHO_C" >&6
-if test "${ensc_cv_test_ext2fs_header+set}" = set; then
+echo "$as_me:$LINENO: checking whether MS_MOVE is declared" >&5
+echo $ECHO_N "checking whether MS_MOVE is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_MS_MOVE+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-
-       cat >conftest.$ac_ext <<_ACEOF
+  cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <ext2fs/ext2_fs.h>
-                                         int main() { return 0; }
+#include <linux/fs.h>
+
+int
+main ()
+{
+#ifndef MS_MOVE
+  char *p = (char *) MS_MOVE;
+#endif
+
+  ;
+  return 0;
+}
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
@@ -5054,7 +27065,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_cxx_werror_flag"
+        { ac_try='test -z "$ac_c_werror_flag"
                         || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -5067,20 +27078,56 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ensc_cv_test_ext2fs_header=e2fsprogs
+  ac_cv_have_decl_MS_MOVE=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
+ac_cv_have_decl_MS_MOVE=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_MS_MOVE" >&5
+echo "${ECHO_T}$ac_cv_have_decl_MS_MOVE" >&6
+if test $ac_cv_have_decl_MS_MOVE = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_MS_MOVE 1
+_ACEOF
+
 
-       cat >conftest.$ac_ext <<_ACEOF
+else
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_MS_MOVE 0
+_ACEOF
+
+
+fi
+
+
+echo "$as_me:$LINENO: checking for xid_t" >&5
+echo $ECHO_N "checking for xid_t... $ECHO_C" >&6
+if test "${ac_cv_type_xid_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <linux/ext2_fs.h>
-                                         int main() { return 0; }
+#include <sys/types.h>
+
+int
+main ()
+{
+if ((xid_t *) 0)
+  return 0;
+if (sizeof (xid_t))
+  return 0;
+  ;
+  return 0;
+}
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
@@ -5091,7 +27138,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_cxx_werror_flag"
+        { ac_try='test -z "$ac_c_werror_flag"
                         || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -5104,43 +27151,49 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ensc_cv_test_ext2fs_header=kernel
+  ac_cv_type_xid_t=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-
-       ensc_cv_test_ext2fs_header=none
+ac_cv_type_xid_t=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_cv_type_xid_t" >&5
+echo "${ECHO_T}$ac_cv_type_xid_t" >&6
+if test $ac_cv_type_xid_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_XID_T 1
+_ACEOF
+
+
 fi
-echo "$as_me:$LINENO: result: $ensc_cv_test_ext2fs_header" >&5
-echo "${ECHO_T}$ensc_cv_test_ext2fs_header" >&6
 
-    case x"$ensc_cv_test_ext2fs_header" in
-       (xe2fsprogs)
-               if test "${ac_cv_header_ext2fs_ext2_fs_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for ext2fs/ext2_fs.h" >&5
-echo $ECHO_N "checking for ext2fs/ext2_fs.h... $ECHO_C" >&6
-if test "${ac_cv_header_ext2fs_ext2_fs_h+set}" = set; then
+echo "$as_me:$LINENO: checking for nid_t" >&5
+echo $ECHO_N "checking for nid_t... $ECHO_C" >&6
+if test "${ac_cv_type_nid_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_ext2fs_ext2_fs_h" >&5
-echo "${ECHO_T}$ac_cv_header_ext2fs_ext2_fs_h" >&6
 else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking ext2fs/ext2_fs.h usability" >&5
-echo $ECHO_N "checking ext2fs/ext2_fs.h usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
+  cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-$ac_includes_default
-#include <ext2fs/ext2_fs.h>
+#include <sys/types.h>
+
+int
+main ()
+{
+if ((nid_t *) 0)
+  return 0;
+if (sizeof (nid_t))
+  return 0;
+  ;
+  return 0;
+}
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
@@ -5151,142 +27204,56 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_cxx_werror_flag"
+        { ac_try='test -z "$ac_c_werror_flag"
                         || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; } &&
-        { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking ext2fs/ext2_fs.h presence" >&5
-echo $ECHO_N "checking ext2fs/ext2_fs.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <ext2fs/ext2_fs.h>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_cxx_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: ext2fs/ext2_fs.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: ext2fs/ext2_fs.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: ext2fs/ext2_fs.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: ext2fs/ext2_fs.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: ext2fs/ext2_fs.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: ext2fs/ext2_fs.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: ext2fs/ext2_fs.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: ext2fs/ext2_fs.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: ext2fs/ext2_fs.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: ext2fs/ext2_fs.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: ext2fs/ext2_fs.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: ext2fs/ext2_fs.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: ext2fs/ext2_fs.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: ext2fs/ext2_fs.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: ext2fs/ext2_fs.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: ext2fs/ext2_fs.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ------------------------------------------------------ ##
-## Report this to enrico.scholz@informatik.tu-chemnitz.de ##
-## ------------------------------------------------------ ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for ext2fs/ext2_fs.h" >&5
-echo $ECHO_N "checking for ext2fs/ext2_fs.h... $ECHO_C" >&6
-if test "${ac_cv_header_ext2fs_ext2_fs_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+        { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_type_nid_t=yes
 else
-  ac_cv_header_ext2fs_ext2_fs_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_ext2fs_ext2_fs_h" >&5
-echo "${ECHO_T}$ac_cv_header_ext2fs_ext2_fs_h" >&6
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+ac_cv_type_nid_t=no
 fi
-if test $ac_cv_header_ext2fs_ext2_fs_h = yes; then
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_nid_t" >&5
+echo "${ECHO_T}$ac_cv_type_nid_t" >&6
+if test $ac_cv_type_nid_t = yes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define ENSC_HAVE_EXT2FS_EXT2_FS_H 1
+cat >>confdefs.h <<_ACEOF
+#define HAVE_NID_T 1
 _ACEOF
 
-else
-  { { echo "$as_me:$LINENO: error: unexpected error while checkin for <ext2fs/ext2_fs.h>
-See \`config.log' for more details." >&5
-echo "$as_me: error: unexpected error while checkin for <ext2fs/ext2_fs.h>
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+
 fi
 
 
-               ;;
-       (xkernel)
-               if test "${ac_cv_header_linux_ext2_fs_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for linux/ext2_fs.h" >&5
-echo $ECHO_N "checking for linux/ext2_fs.h... $ECHO_C" >&6
-if test "${ac_cv_header_linux_ext2_fs_h+set}" = set; then
+
+for ac_header in sys/capability.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 fi
-echo "$as_me:$LINENO: result: $ac_cv_header_linux_ext2_fs_h" >&5
-echo "${ECHO_T}$ac_cv_header_linux_ext2_fs_h" >&6
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
 else
   # Is the header compilable?
-echo "$as_me:$LINENO: checking linux/ext2_fs.h usability" >&5
-echo $ECHO_N "checking linux/ext2_fs.h usability... $ECHO_C" >&6
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -5294,7 +27261,7 @@ cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 $ac_includes_default
-#include <linux/ext2_fs.h>
+#include <$ac_header>
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
@@ -5305,7 +27272,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   cat conftest.err >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } &&
-        { ac_try='test -z "$ac_cxx_werror_flag"
+        { ac_try='test -z "$ac_c_werror_flag"
                         || test ! -s conftest.err'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -5330,15 +27297,15 @@ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
 echo "${ECHO_T}$ac_header_compiler" >&6
 
 # Is the header present?
-echo "$as_me:$LINENO: checking linux/ext2_fs.h presence" >&5
-echo $ECHO_N "checking linux/ext2_fs.h presence... $ECHO_C" >&6
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <linux/ext2_fs.h>
+#include <$ac_header>
 _ACEOF
 if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
@@ -5349,8 +27316,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } >/dev/null; then
   if test -s conftest.err; then
-    ac_cpp_err=$ac_cxx_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
   else
     ac_cpp_err=
   fi
@@ -5370,27 +27337,27 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
 echo "${ECHO_T}$ac_header_preproc" >&6
 
 # So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
   yes:no: )
-    { echo "$as_me:$LINENO: WARNING: linux/ext2_fs.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: linux/ext2_fs.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: linux/ext2_fs.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: linux/ext2_fs.h: proceeding with the compiler's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
     ac_header_preproc=yes
     ;;
   no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: linux/ext2_fs.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: linux/ext2_fs.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: linux/ext2_fs.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: linux/ext2_fs.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: linux/ext2_fs.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: linux/ext2_fs.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: linux/ext2_fs.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: linux/ext2_fs.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: linux/ext2_fs.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: linux/ext2_fs.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: linux/ext2_fs.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: linux/ext2_fs.h: in the future, the compiler will take precedence" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
 ## ------------------------------------------------------ ##
@@ -5401,225 +27368,52 @@ _ASBOX
       sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
-echo "$as_me:$LINENO: checking for linux/ext2_fs.h" >&5
-echo $ECHO_N "checking for linux/ext2_fs.h... $ECHO_C" >&6
-if test "${ac_cv_header_linux_ext2_fs_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_linux_ext2_fs_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_linux_ext2_fs_h" >&5
-echo "${ECHO_T}$ac_cv_header_linux_ext2_fs_h" >&6
-
-fi
-if test $ac_cv_header_linux_ext2_fs_h = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define ENSC_HAVE_LINUX_EXT2_FS_H 1
-_ACEOF
-
-else
-  { { echo "$as_me:$LINENO: error: unexpected error while checkin for <linux/ext2_fs.h>
-See \`config.log' for more details." >&5
-echo "$as_me: error: unexpected error while checkin for <linux/ext2_fs.h>
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-
-               ;;
-       (*)
-               { { echo "$as_me:$LINENO: error:
-ext2fs headers were not found, or they are not usable. This can have
-the following reasons:
-
-* you have neither the e2fsprogs nor the kernel headers installed
-
-* kernel headers are broken (e.g. these of linux 2.6 are known to be)
-  and you do not have e2fsprogs headers installed; please try to install
-  - e2fsprogs-devel (for Red Hat), or
-  - libext2fs2-devel (for Mandrake), or
-  - e2fslibs-dev (for Debian)
-  in this case.
-
-* kernel headers are broken and your e2fsprogs headers are too old;
-  until version 1.27 (inclusive), they are using reserved C++ keywords
-
-* kernel headers are broken and your e2fsprogs headers are too new;
-  recent (January 2004) BK snapshots of e2fsprogs are unusable for
-  C++, for details and a solution see
-  https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=112448
-
-
-In the latter two cases you have the following options:
-* fix the headers manually, or
-* install a stable version of e2fsprogs (e.g. 1.34), or
-* use good kernel headers (from linux 2.4.x)
-
-See \`config.log' for more details." >&5
-echo "$as_me: error:
-ext2fs headers were not found, or they are not usable. This can have
-the following reasons:
-
-* you have neither the e2fsprogs nor the kernel headers installed
-
-* kernel headers are broken (e.g. these of linux 2.6 are known to be)
-  and you do not have e2fsprogs headers installed; please try to install
-  - e2fsprogs-devel (for Red Hat), or
-  - libext2fs2-devel (for Mandrake), or
-  - e2fslibs-dev (for Debian)
-  in this case.
-
-* kernel headers are broken and your e2fsprogs headers are too old;
-  until version 1.27 (inclusive), they are using reserved C++ keywords
-
-* kernel headers are broken and your e2fsprogs headers are too new;
-  recent (January 2004) BK snapshots of e2fsprogs are unusable for
-  C++, for details and a solution see
-  https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=112448
-
-
-In the latter two cases you have the following options:
-* fix the headers manually, or
-* install a stable version of e2fsprogs (e.g. 1.34), or
-* use good kernel headers (from linux 2.4.x)
-
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-               ;;
-    esac
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-for ac_func in vserver
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"
-                        || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-        { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
 fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
 
 fi
+
 done
 
-echo "$as_me:$LINENO: checking whether MS_MOVE is declared" >&5
-echo $ECHO_N "checking whether MS_MOVE is declared... $ECHO_C" >&6
-if test "${ac_cv_have_decl_MS_MOVE+set}" = set; then
+
+
+if test x"$ensc_cv_c99_c99compiler" = xyes; then
+       ensc_have_beecrypt=yes
+
+       if test x"$ensc_have_beecrypt" = xyes; then
+               if test "${ac_cv_header_beecrypt_beecrypt_h+set}" = set; then
+  echo "$as_me:$LINENO: checking for beecrypt/beecrypt.h" >&5
+echo $ECHO_N "checking for beecrypt/beecrypt.h... $ECHO_C" >&6
+if test "${ac_cv_header_beecrypt_beecrypt_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_beecrypt_beecrypt_h" >&5
+echo "${ECHO_T}$ac_cv_header_beecrypt_beecrypt_h" >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking beecrypt/beecrypt.h usability" >&5
+echo $ECHO_N "checking beecrypt/beecrypt.h usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <linux/fs.h>
-
-int
-main ()
-{
-#ifndef MS_MOVE
-  char *p = (char *) MS_MOVE;
-#endif
-
-  ;
-  return 0;
-}
+$ac_includes_default
+#include <beecrypt/beecrypt.h>
 _ACEOF
 rm -f conftest.$ac_objext
 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
@@ -5643,60 +27437,142 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_have_decl_MS_MOVE=yes
+  ac_header_compiler=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_have_decl_MS_MOVE=no
+ac_header_compiler=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_have_decl_MS_MOVE" >&5
-echo "${ECHO_T}$ac_cv_have_decl_MS_MOVE" >&6
-if test $ac_cv_have_decl_MS_MOVE = yes; then
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_MS_MOVE 1
+# Is the header present?
+echo "$as_me:$LINENO: checking beecrypt/beecrypt.h presence" >&5
+echo $ECHO_N "checking beecrypt/beecrypt.h presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <beecrypt/beecrypt.h>
 _ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
 
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: beecrypt/beecrypt.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: beecrypt/beecrypt.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: beecrypt/beecrypt.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: beecrypt/beecrypt.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: beecrypt/beecrypt.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: beecrypt/beecrypt.h: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: beecrypt/beecrypt.h:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: beecrypt/beecrypt.h:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: beecrypt/beecrypt.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: beecrypt/beecrypt.h: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: beecrypt/beecrypt.h:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: beecrypt/beecrypt.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: beecrypt/beecrypt.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: beecrypt/beecrypt.h: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: beecrypt/beecrypt.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: beecrypt/beecrypt.h: in the future, the compiler will take precedence" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------------------------ ##
+## Report this to enrico.scholz@informatik.tu-chemnitz.de ##
+## ------------------------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for beecrypt/beecrypt.h" >&5
+echo $ECHO_N "checking for beecrypt/beecrypt.h... $ECHO_C" >&6
+if test "${ac_cv_header_beecrypt_beecrypt_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_MS_MOVE 0
-_ACEOF
-
+  ac_cv_header_beecrypt_beecrypt_h=$ac_header_preproc
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_beecrypt_beecrypt_h" >&5
+echo "${ECHO_T}$ac_cv_header_beecrypt_beecrypt_h" >&6
 
+fi
+if test $ac_cv_header_beecrypt_beecrypt_h = yes; then
+   :
+else
+   ensc_have_beecrypt=no
 fi
 
 
-echo "$as_me:$LINENO: checking for xid_t" >&5
-echo $ECHO_N "checking for xid_t... $ECHO_C" >&6
-if test "${ac_cv_type_xid_t+set}" = set; then
+       fi
+
+       if test x"$ensc_have_beecrypt" = xyes; then
+               echo "$as_me:$LINENO: checking for hashFunctionContextInit in -lbeecrypt" >&5
+echo $ECHO_N "checking for hashFunctionContextInit in -lbeecrypt... $ECHO_C" >&6
+if test "${ac_cv_lib_beecrypt_hashFunctionContextInit+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbeecrypt  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-#include <sys/types.h>
 
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char hashFunctionContextInit ();
 int
 main ()
 {
-if ((xid_t *) 0)
-  return 0;
-if (sizeof (xid_t))
-  return 0;
+hashFunctionContextInit ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
@@ -5710,34 +27586,107 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; } &&
-        { ac_try='test -s conftest.$ac_objext'
+        { ac_try='test -s conftest$ac_exeext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_type_xid_t=yes
+  ac_cv_lib_beecrypt_hashFunctionContextInit=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_xid_t=no
+ac_cv_lib_beecrypt_hashFunctionContextInit=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_beecrypt_hashFunctionContextInit" >&5
+echo "${ECHO_T}$ac_cv_lib_beecrypt_hashFunctionContextInit" >&6
+if test $ac_cv_lib_beecrypt_hashFunctionContextInit = yes; then
+   :
+else
+   ensc_have_beecrypt=no
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_xid_t" >&5
-echo "${ECHO_T}$ac_cv_type_xid_t" >&6
-if test $ac_cv_type_xid_t = yes; then
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_XID_T 1
+       fi
+
+       if test x"$ensc_have_beecrypt" != xyes; then
+               { echo "$as_me:$LINENO: WARNING:
+****
+**** 'beecrypt' could not be found;
+**** this will disable the build of 'vhashify'
+****" >&5
+echo "$as_me: WARNING:
+****
+**** 'beecrypt' could not be found;
+**** this will disable the build of 'vhashify'
+****" >&2;}
+       fi
+else
+       ensc_have_beecrypt=no
+fi
+
+
+
+if test x"$ensc_have_beecrypt" = xyes; then
+  ENSC_HAVE_BEECRYPT_TRUE=
+  ENSC_HAVE_BEECRYPT_FALSE='#'
+else
+  ENSC_HAVE_BEECRYPT_TRUE='#'
+  ENSC_HAVE_BEECRYPT_FALSE=
+fi
+
+
+
+if false; then
+  ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE=
+  ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE='#'
+else
+  ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE='#'
+  ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE=
+fi
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define UTMP_GID 22
 _ACEOF
 
 
+if false; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_GROWING_STACK 1
+_ACEOF
+
 fi
 
 
-                    ac_config_files="$ac_config_files util-vserver.spec Makefile"
+cat >>confdefs.h <<\_ACEOF
+#define _FILE_OFFSET_BITS 64
+_ACEOF
+
+
+ensc_cxx_affected=" (affected: vbuild, vcheck)"
+ensc_c99_affected=" (affected: vunify, vcopy, vhashify, vdlimit)"
+ensc_diet_msg=" (you have been warned)"
+ensc_diet_version_msg=" ($ensc_version_dietlibc)"
+ensc_diet_compat_msg=" (using -lcompat)"
+test x"$ensc_cv_cxx_cxxcompiler"    = xno || ensc_cxx_affected=
+test x"$ensc_cv_c99_c99compiler"    = xno || ensc_c99_affected=
+test x"$ensc_have_dietlibc"         = xno || ensc_diet_msg=
+test x"$ensc_version_dietlibc"     != x   || ensc_diet_version_msg=
+test x"$ensc_have_dietlibc$ensc_cv_c_dietlibc_compat" = xyesyes || ensc_diet_compat_msg=
+
+
+
+
+
+                                        ac_config_files="$ac_config_files util-vserver.spec Makefile distrib/Makefile lib/apidoc/Doxyfile"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -5858,6 +27807,97 @@ echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
+if test -z "${ENSC_HAVE_CXX_COMPILER_TRUE}" && test -z "${ENSC_HAVE_CXX_COMPILER_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"ENSC_HAVE_CXX_COMPILER\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"ENSC_HAVE_CXX_COMPILER\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${ENSC_HAVE_C99_COMPILER_TRUE}" && test -z "${ENSC_HAVE_C99_COMPILER_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"ENSC_HAVE_C99_COMPILER\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"ENSC_HAVE_C99_COMPILER\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${HAVE_XSLTP_TRUE}" && test -z "${HAVE_XSLTP_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"HAVE_XSLTP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"HAVE_XSLTP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${HAVE_XSLTPROC_TRUE}" && test -z "${HAVE_XSLTPROC_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"HAVE_XSLTPROC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"HAVE_XSLTPROC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${USE_DIETLIBC_TRUE}" && test -z "${USE_DIETLIBC_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"USE_DIETLIBC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"USE_DIETLIBC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${USE_DIETLIBC_TRUE}" && test -z "${USE_DIETLIBC_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"USE_DIETLIBC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"USE_DIETLIBC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${USE_DIETLIBC_TRUE}" && test -z "${USE_DIETLIBC_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"USE_DIETLIBC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"USE_DIETLIBC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${USE_DIETLIBC_TRUE}" && test -z "${USE_DIETLIBC_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"USE_DIETLIBC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"USE_DIETLIBC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${USE_DIETLIBC_TRUE}" && test -z "${USE_DIETLIBC_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"USE_DIETLIBC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"USE_DIETLIBC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${USE_DIETLIBC_COMPAT_TRUE}" && test -z "${USE_DIETLIBC_COMPAT_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"USE_DIETLIBC_COMPAT\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"USE_DIETLIBC_COMPAT\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${USE_DIETLIBC_COMPAT_TRUE}" && test -z "${USE_DIETLIBC_COMPAT_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"USE_DIETLIBC_COMPAT\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"USE_DIETLIBC_COMPAT\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${ENSC_USE_DIETLIBC_TRUE}" && test -z "${ENSC_USE_DIETLIBC_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"ENSC_USE_DIETLIBC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"ENSC_USE_DIETLIBC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${ENSC_USE_GLIBC_TRUE}" && test -z "${ENSC_USE_GLIBC_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"ENSC_USE_GLIBC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"ENSC_USE_GLIBC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
 if test -z "${HAVE_CVS2CL_TRUE}" && test -z "${HAVE_CVS2CL_FALSE}"; then
   { { echo "$as_me:$LINENO: error: conditional \"HAVE_CVS2CL\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
@@ -5872,21 +27912,56 @@ echo "$as_me: error: conditional \"HAVE_RCS2LOG\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
-if test -z "${ENSC_ENABLE_LINUXCONF_TRUE}" && test -z "${ENSC_ENABLE_LINUXCONF_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"ENSC_ENABLE_LINUXCONF\" was never defined.
+if test -z "${ENSC_ENABLE_INTERNAL_HEADERS_TRUE}" && test -z "${ENSC_ENABLE_INTERNAL_HEADERS_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"ENSC_ENABLE_INTERNAL_HEADERS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"ENSC_ENABLE_INTERNAL_HEADERS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${ENSC_HAVE_BEECRYPT_TRUE}" && test -z "${ENSC_HAVE_BEECRYPT_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"ENSC_HAVE_BEECRYPT\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"ENSC_ENABLE_LINUXCONF\" was never defined.
+echo "$as_me: error: conditional \"ENSC_HAVE_BEECRYPT\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
-if test -z "${ENSC_ENABLE_INTERNAL_HEADERS_TRUE}" && test -z "${ENSC_ENABLE_INTERNAL_HEADERS_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"ENSC_ENABLE_INTERNAL_HEADERS\" was never defined.
+if test -z "${ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE}" && test -z "${ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"ENSC_CAN_BEECRYPT_WITH_DIETLIBC\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"ENSC_ENABLE_INTERNAL_HEADERS\" was never defined.
+echo "$as_me: error: conditional \"ENSC_CAN_BEECRYPT_WITH_DIETLIBC\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 
+                       FEATURES_TXT="\
+Features:
+                      CC: $CC, $($CC   --version | sed -e '1p;d')
+                      CXX: $CXX, $($CXX --version | sed -e '1p;d')
+                 CPPFLAGS: '$CPPFLAGS'
+                   CFLAGS: '$CFLAGS'
+                 CXXFLAGS: '$CXXFLAGS'
+               build/host: $build/$host
+             Use dietlibc: $ensc_have_dietlibc$ensc_diet_version_msg$ensc_diet_msg$ensc_diet_compat_msg
+       Build C++ programs: $ensc_cv_cxx_cxxcompiler$ensc_cxx_affected
+       Build C99 programs: $ensc_cv_c99_c99compiler$ensc_c99_affected
+           Available APIs: $enable_apis
+            ext2fs Source: $ensc_cv_test_ext2fs_header
+    syscall(2) invocation: $with_syscall
+      vserver(2) syscall#: $ensc_cv_value_syscall_vserver
+
+Paths:
+                   prefix: $prefix
+        sysconf-Directory: $sysconfdir
+            cfg-Directory: $sysconfdir/vservers
+         initrd-Directory: $initrddir
+       pkgstate-Directory: $localstatedir/run/vservers
+            Kernelheaders: $kernelincludedir
+          vserver-Rootdir: $vserverdir
+"
+                       echo "$FEATURES_TXT" >FEATURES.txt
+
+
 : ${CONFIG_STATUS=./config.status}
 ac_clean_files_save=$ac_clean_files
 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
@@ -6157,7 +28232,7 @@ _ASBOX
 } >&5
 cat >&5 <<_CSEOF
 
-This file was extended by util-vserver $as_me 0.30, which was
+This file was extended by util-vserver $as_me 0.30.208, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -6220,7 +28295,7 @@ _ACEOF
 
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-util-vserver config.status 0.30
+util-vserver config.status 0.30.208
 configured by $0, generated by GNU Autoconf 2.59,
   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -6332,6 +28407,8 @@ do
   # Handling of arguments.
   "util-vserver.spec" ) CONFIG_FILES="$CONFIG_FILES util-vserver.spec" ;;
   "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+  "distrib/Makefile" ) CONFIG_FILES="$CONFIG_FILES distrib/Makefile" ;;
+  "lib/apidoc/Doxyfile" ) CONFIG_FILES="$CONFIG_FILES lib/apidoc/Doxyfile" ;;
   "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
   "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
   *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
@@ -6430,7 +28507,6 @@ s,@AUTOCONF@,$AUTOCONF,;t t
 s,@AUTOMAKE@,$AUTOMAKE,;t t
 s,@AUTOHEADER@,$AUTOHEADER,;t t
 s,@MAKEINFO@,$MAKEINFO,;t t
-s,@AMTAR@,$AMTAR,;t t
 s,@install_sh@,$install_sh,;t t
 s,@STRIP@,$STRIP,;t t
 s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
@@ -6439,9 +28515,21 @@ s,@mkdir_p@,$mkdir_p,;t t
 s,@AWK@,$AWK,;t t
 s,@SET_MAKE@,$SET_MAKE,;t t
 s,@am__leading_dot@,$am__leading_dot,;t t
+s,@AMTAR@,$AMTAR,;t t
+s,@am__tar@,$am__tar,;t t
+s,@am__untar@,$am__untar,;t t
 s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
 s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
 s,@MAINT@,$MAINT,;t t
+s,@build@,$build,;t t
+s,@build_cpu@,$build_cpu,;t t
+s,@build_vendor@,$build_vendor,;t t
+s,@build_os@,$build_os,;t t
+s,@host@,$host,;t t
+s,@host_cpu@,$host_cpu,;t t
+s,@host_vendor@,$host_vendor,;t t
+s,@host_os@,$host_os,;t t
+s,@GPG_KEY@,$GPG_KEY,;t t
 s,@CXX@,$CXX,;t t
 s,@CXXFLAGS@,$CXXFLAGS,;t t
 s,@LDFLAGS@,$LDFLAGS,;t t
@@ -6465,8 +28553,77 @@ s,@CCDEPMODE@,$CCDEPMODE,;t t
 s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t
 s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t
 s,@LN_S@,$LN_S,;t t
+s,@ENSC_HAVE_CXX_COMPILER_TRUE@,$ENSC_HAVE_CXX_COMPILER_TRUE,;t t
+s,@ENSC_HAVE_CXX_COMPILER_FALSE@,$ENSC_HAVE_CXX_COMPILER_FALSE,;t t
+s,@ENSC_HAVE_C99_COMPILER_TRUE@,$ENSC_HAVE_C99_COMPILER_TRUE,;t t
+s,@ENSC_HAVE_C99_COMPILER_FALSE@,$ENSC_HAVE_C99_COMPILER_FALSE,;t t
+s,@ENSC_PATHPROG_SED@,$ENSC_PATHPROG_SED,;t t
+s,@CAT@,$CAT,;t t
+s,@CHOWN@,$CHOWN,;t t
+s,@CMP@,$CMP,;t t
+s,@CP@,$CP,;t t
+s,@DIRNAME@,$DIRNAME,;t t
+s,@EGREP@,$EGREP,;t t
+s,@ENV@,$ENV,;t t
+s,@GREP@,$GREP,;t t
+s,@LN@,$LN,;t t
+s,@MKDIR@,$MKDIR,;t t
+s,@MKFIFO@,$MKFIFO,;t t
+s,@MKTEMP@,$MKTEMP,;t t
+s,@MOUNT@,$MOUNT,;t t
+s,@MV@,$MV,;t t
+s,@NICE@,$NICE,;t t
+s,@PS@,$PS,;t t
+s,@RM@,$RM,;t t
+s,@RMDIR@,$RMDIR,;t t
+s,@SED@,$SED,;t t
+s,@SH@,$SH,;t t
+s,@TAC@,$TAC,;t t
+s,@TAR@,$TAR,;t t
+s,@TOUCH@,$TOUCH,;t t
+s,@TTY@,$TTY,;t t
+s,@UMOUNT@,$UMOUNT,;t t
+s,@WC@,$WC,;t t
+s,@IP@,$IP,;t t
+s,@IPTABLES@,$IPTABLES,;t t
+s,@MODPROBE@,$MODPROBE,;t t
+s,@NAMEIF@,$NAMEIF,;t t
+s,@NOHUP@,$NOHUP,;t t
+s,@RMMOD@,$RMMOD,;t t
+s,@VCONFIG@,$VCONFIG,;t t
+s,@WGET@,$WGET,;t t
+s,@DOXYGEN@,$DOXYGEN,;t t
+s,@XSLTP@,$XSLTP,;t t
+s,@XSLTPROC@,$XSLTPROC,;t t
+s,@HAVE_XSLTP_TRUE@,$HAVE_XSLTP_TRUE,;t t
+s,@HAVE_XSLTP_FALSE@,$HAVE_XSLTP_FALSE,;t t
+s,@HAVE_XSLTPROC_TRUE@,$HAVE_XSLTPROC_TRUE,;t t
+s,@HAVE_XSLTPROC_FALSE@,$HAVE_XSLTPROC_FALSE,;t t
+s,@LIB_DEBUG_CPPFLAGS@,$LIB_DEBUG_CPPFLAGS,;t t
+s,@ENSC_USE_EXPENSIVE_TESTS@,$ENSC_USE_EXPENSIVE_TESTS,;t t
+s,@initrddir@,$initrddir,;t t
+s,@RELEASE_CPPFLAGS@,$RELEASE_CPPFLAGS,;t t
+s,@DIET@,$DIET,;t t
+s,@DIETFLAGS@,$DIETFLAGS,;t t
+s,@USE_DIETLIBC_TRUE@,$USE_DIETLIBC_TRUE,;t t
+s,@USE_DIETLIBC_FALSE@,$USE_DIETLIBC_FALSE,;t t
+s,@USE_DIETLIBC_COMPAT_TRUE@,$USE_DIETLIBC_COMPAT_TRUE,;t t
+s,@USE_DIETLIBC_COMPAT_FALSE@,$USE_DIETLIBC_COMPAT_FALSE,;t t
+s,@ENSC_USE_DIETLIBC_TRUE@,$ENSC_USE_DIETLIBC_TRUE,;t t
+s,@ENSC_USE_DIETLIBC_FALSE@,$ENSC_USE_DIETLIBC_FALSE,;t t
+s,@ENSC_USE_GLIBC_TRUE@,$ENSC_USE_GLIBC_TRUE,;t t
+s,@ENSC_USE_GLIBC_FALSE@,$ENSC_USE_GLIBC_FALSE,;t t
+s,@ECHO@,$ECHO,;t t
+s,@AR@,$AR,;t t
+s,@ac_ct_AR@,$ac_ct_AR,;t t
 s,@RANLIB@,$RANLIB,;t t
 s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+s,@CPP@,$CPP,;t t
+s,@CXXCPP@,$CXXCPP,;t t
+s,@F77@,$F77,;t t
+s,@FFLAGS@,$FFLAGS,;t t
+s,@ac_ct_F77@,$ac_ct_F77,;t t
+s,@LIBTOOL@,$LIBTOOL,;t t
 s,@kernelincludedir@,$kernelincludedir,;t t
 s,@vserverdir@,$vserverdir,;t t
 s,@CVS2CL_TAG@,$CVS2CL_TAG,;t t
@@ -6476,13 +28633,12 @@ s,@HAVE_CVS2CL_FALSE@,$HAVE_CVS2CL_FALSE,;t t
 s,@RCS2LOG@,$RCS2LOG,;t t
 s,@HAVE_RCS2LOG_TRUE@,$HAVE_RCS2LOG_TRUE,;t t
 s,@HAVE_RCS2LOG_FALSE@,$HAVE_RCS2LOG_FALSE,;t t
-s,@ENSC_ENABLE_LINUXCONF_TRUE@,$ENSC_ENABLE_LINUXCONF_TRUE,;t t
-s,@ENSC_ENABLE_LINUXCONF_FALSE@,$ENSC_ENABLE_LINUXCONF_FALSE,;t t
 s,@ENSC_ENABLE_INTERNAL_HEADERS_TRUE@,$ENSC_ENABLE_INTERNAL_HEADERS_TRUE,;t t
 s,@ENSC_ENABLE_INTERNAL_HEADERS_FALSE@,$ENSC_ENABLE_INTERNAL_HEADERS_FALSE,;t t
-s,@CPP@,$CPP,;t t
-s,@EGREP@,$EGREP,;t t
-s,@CXXCPP@,$CXXCPP,;t t
+s,@ENSC_HAVE_BEECRYPT_TRUE@,$ENSC_HAVE_BEECRYPT_TRUE,;t t
+s,@ENSC_HAVE_BEECRYPT_FALSE@,$ENSC_HAVE_BEECRYPT_FALSE,;t t
+s,@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@,$ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE,;t t
+s,@ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@,$ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE,;t t
 s,@LIBOBJS@,$LIBOBJS,;t t
 s,@LTLIBOBJS@,$LTLIBOBJS,;t t
 CEOF
@@ -7107,27 +29263,21 @@ echo X"$mf" |
   else
     continue
   fi
-  grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue
-  # Extract the definition of DEP_FILES from the Makefile without
-  # running `make'.
+  # 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"`
-  test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
-  # 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 '
-    /^DEP_FILES = .*\\\\$/ {
-      s/^DEP_FILES = //
-      :loop
-       s/\\\\$//
-       p
-       n
-       /\\\\$/ b loop
-      p
-    }
-    /^DEP_FILES = / s/^DEP_FILES = //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
@@ -7206,3 +29356,14 @@ if test "$no_create" != yes; then
   $ac_cs_success || { (exit 1); exit 1; }
 fi
 
+
+{ echo "$as_me:$LINENO:
+
+$PACKAGE_STRING
+
+$FEATURES_TXT" >&5
+echo "$as_me:
+
+$PACKAGE_STRING
+
+$FEATURES_TXT" >&6;}
index 392f5d4..1767da3 100644 (file)
@@ -1,6 +1,6 @@
-dnl $Id: configure.ac,v 1.1.2.1.2.37 2004/07/02 22:49:54 ensc Exp $
+dnl $Id: configure.ac,v 1.97 2005/07/15 20:25:06 ensc Exp $
 
-dnl Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+dnl Copyright (C) 2003,2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 dnl  
 dnl This program is free software; you can redistribute it and/or modify
 dnl it under the terms of the GNU General Public License as published by
@@ -24,82 +24,232 @@ dnl distribution terms that you use for the rest of that program.
 dnl  
 
 AC_PREREQ(2.57)
-
-AC_INIT(util-vserver, 0.30, enrico.scholz@informatik.tu-chemnitz.de)
+AC_INIT(util-vserver, 0.30.208, enrico.scholz@informatik.tu-chemnitz.de)
 AC_CONFIG_SRCDIR([src/capchroot.c])
 AC_CONFIG_HEADER([config.h])
 
-AM_INIT_AUTOMAKE([gnu dist-bzip2 subdir-objects])
+AM_INIT_AUTOMAKE([1.9 gnits dist-bzip2 subdir-objects])
 AM_MAINTAINER_MODE
 
+AC_CANONICAL_BUILD
+AC_CANONICAL_HOST
+
+AC_SUBST(GPG_KEY, "0xFFD316AC53ACA43A!")
 
 # Checks for programs.
 AC_PROG_CXX
 AC_PROG_CC
 AC_PROG_INSTALL
 AC_PROG_LN_S
-AC_PROG_RANLIB
 AM_PROG_CC_C_O
+ENSC_CXXCOMPILER
+ENSC_C99COMPILER
+
+ENSC_SET_SEARCHPATH([$PATH:/sbin:/usr/sbin:/usr/local/sbin])
+ENSC_PATHPROG_STANDARD_TOOLS
+
+ENSC_PATHPROG(IP,        ip,,      [Usually, this tool is shipped in the 'iproute' or 'iproute2' package of your distribution])
+ENSC_PATHPROG(IPTABLES,  iptables)
+ENSC_PATHPROG(MODPROBE,  modprobe)
+ENSC_PATHPROG(NAMEIF,    nameif)
+ENSC_PATHPROG(NOHUP,     nohup)
+ENSC_PATHPROG(RMMOD,     rmmod)
+ENSC_PATHPROG(VCONFIG,   vconfig,, [See http://www.candelatech.com/~greear/vlan.html; usually this tool is shipped in the 'vconfig' or 'vlan' package of your distribution])
+ENSC_PATHPROG(WGET,      wget)
+
+ENSC_PATHPROG(DOXYGEN,   doxygen,  [:])
+ENSC_PATHPROG(XSLTP,     xsltp,    [:])
+ENSC_PATHPROG(XSLTPROC,  xsltproc, [:])
+
 
-ENSC_CHECK_CC_FLAG([-std=c99 -Wall -pedantic -W -Wno-unused-parameter])
+AM_CONDITIONAL(HAVE_XSLTP,    test "$XSLTP"    != ':')
+AM_CONDITIONAL(HAVE_XSLTPROC, test "$XSLTPROC" != ':')
+       
+
+ENSC_CHECK_CC_FLAG([-std=c99 -Wall -pedantic -W])
 ENSC_CHECK_CXX_FLAG([-ansi   -Wall -pedantic -W -fmessage-length=0])
 
-AC_ARG_VAR(CC, [The C compiler])
-ENSC_KERNEL_HEADERS(kernelincludedir)
-ENSC_UV_VROOTDIR(vserverdir)
-ENSC_CHANGELOG([SYSCALL_SWITCH])
+AC_MSG_CHECKING([whether to enable extra optimizations])
+AC_ARG_ENABLE([extra-optimizations],
+             [AC_HELP_STRING([--disable-extra-optimizations],
+                             [disable certain extra optimizations (default: no)])],
+             [case "$enableval" in
+                 (yes) use_extra_optimizations=1;;
+                 (no)  use_extra_optimizations=;;
+                  (*)   AC_MSG_ERROR(['$enableval' is not a valid value for '--disable-extra-optimizations']);;
+               esac],
+              [use_extra_optimizations=1])
+
+if test x"$use_extra_optimizations" = x; then
+       AC_MSG_RESULT(no)
+else
+       AC_MSG_RESULT(yes)
+       ENSC_CHECK_CC_FLAG([-funit-at-a-time])
+       ENSC_CHECK_CXX_FLAG([-funit-at-a-time])
+fi
 
-dnl Check whether to enable linuxconf
-AC_MSG_CHECKING([whether to enable linuxconf modules])
-AC_ARG_ENABLE([linuxconf],
-              [AC_HELP_STRING([--enable-linuxconf],
-                              [enable 'newvserver' linuxconf module (default: no)])],
+AC_MSG_CHECKING([whether to enable debug-code in library])
+AC_ARG_ENABLE([lib-debug],
+             [AC_HELP_STRING([--enable-lib-debug],
+                              [enable additional debug code in library (default: no)])],
               [case "$enableval" in
-                 yes|no) ;;
-                 *)      AC_MSG_ERROR(['$i' is not a supported value for '--enable-linuxconf']);;
+                 (yes) use_lib_debug=1;;
+                  (no)  use_lib_debug=;;
+                  (*)   AC_MSG_ERROR(['$enableval' is not a valid value for '--enable-lib-debug']);;
+               esac],
+              [ use_lib_debug= ])
+
+if test x"$use_lib_debug" = x; then
+       AC_SUBST(LIB_DEBUG_CPPFLAGS, [-DNDEBUG])
+       AC_MSG_RESULT(no)
+else
+       AC_SUBST(LIB_DEBUG_CPPFLAGS, [])
+       AC_MSG_RESULT(yes)
+fi
+
+AC_MSG_CHECKING([whether to enable expensive tests])
+AC_ARG_ENABLE([expensive-tests],
+             [AC_HELP_STRING([--disable-expensive-tests],
+                             [disable tests which might be expensive on some systems (default: no)])],
+             [case "$enableval" in
+                (yes|no)  use_expensive_tests=$enableval;;
+                (*)       AC_MSG_ERROR(['$enableval' is not a valid value for '--disable-expensive-tests']);;
               esac],
-              [enable_linuxconf=no])
+              [ use_expensive_tests=yes ])
+AC_MSG_RESULT($use_expensive_tests)
+
+AC_SUBST(ENSC_USE_EXPENSIVE_TESTS, "$use_expensive_tests")
+
+
+ENSC_CHECK_PERSONALITY_FLAGS
+
+AC_ARG_VAR(CC, [The C compiler])
+
+ENSC_INITRDDIR(initrddir)
+ENSC_RELEASE(RELEASE_CPPFLAGS)
+
+dnl ###########################
+dnl
+dnl {some dietlibc related tests
+dnl
+
+case $host_cpu in
+       (i*86|athlon)   min_diet_ver=0.25;;
+       (ia64|hppa*)    min_diet_ver=0.29;;
+       (*)             min_diet_ver=0.28;;
+esac
+
+ENSC_ENABLE_DIETLIBC(USE_DIETLIBC, [$min_diet_ver])
+
+if test x"$ensc_have_dietlibc" = xno; then
+       AC_MSG_WARN([***                                                         ***])
+       AC_MSG_WARN([*** it is strongly recommended to link util-vserver against ***])
+       AC_MSG_WARN([*** dietlibc;  glibc's NSS functions are very unreliable in ***])
+       AC_MSG_WARN([*** chroot() environments,  so you have to  expect problems ***])
+       AC_MSG_WARN([*** there.                                                  ***])
+       AC_MSG_WARN([***                                                         ***])
+       AM_CONDITIONAL(USE_DIETLIBC_COMPAT, false)
+else
+       # HACK: libtool does not have cmdline options to build only
+       # dynamic libraries; this can be done with the
+       # '--disable-static' ./configure option only.  As our static
+       # libraries will be build with dietlibc, we have to do set
+       # this option which is evaluated by 'AC_PROG_LIBTOOL'
+       # below.  Therefore, this macro must not be called earlier.
+       enable_static=no
 
-AM_CONDITIONAL(ENSC_ENABLE_LINUXCONF, [test x"$enable_linuxconf" = xyes])
-AC_MSG_RESULT($enable_linuxconf)
+       ENSC_DIETLIBC_SANITYCHECK
+       ENSC_DIETLIBC_NEED_COMPAT(USE_DIETLIBC_COMPAT)
+fi
 
+AM_CONDITIONAL(ENSC_USE_DIETLIBC, test x"$ensc_have_dietlibc" = xyes)
+AM_CONDITIONAL(ENSC_USE_GLIBC,    true)
 
-dnl Check whether to use external kernel headers
+# HACK: see comments at 'enable_static' above
+AC_PROG_LIBTOOL
+dnl
+dnl dietlibc stuff ends here}
+dnl
+dnl ##########################
+
+
+ENSC_KERNEL_HEADERS(kernelincludedir)
+ENSC_UV_VROOTDIR(vserverdir)
+ENSC_CHANGELOG([trunk])
+
+
+dnl ##########################
+dnl
+dnl {Check whether to use external kernel headers
+dnl
 AC_MSG_CHECKING([whether to use internal kernel headers])
 AC_ARG_ENABLE([internal-headers],
               [AC_HELP_STRING([--disable-internal-headers],
                               [use vserver specific headers from the kernel instead of the shipped versions (default: no)])],
               [case "$enableval" in
-                 yes|no) ;;
-                 *)      AC_MSG_ERROR(['$i' is not a supported value for '--disable-internal-headers']);;
+                 (yes|no) ;;
+                 (*)      AC_MSG_ERROR(['$i' is not a supported value for '--disable-internal-headers']);;
               esac],
               [enable_internal_headers=yes])
 
 AM_CONDITIONAL(ENSC_ENABLE_INTERNAL_HEADERS, [test x"$enable_internal_headers" = xyes])
 AC_MSG_RESULT([$enable_internal_headers])
+dnl
+dnl the check regarding external kernel headers ends here}
+dnl
+dnl ##########################
 
-
-dnl Check for the APIs to be used
+dnl ##########################
+dnl
+dnl {Check for the APIs to be used
+dnl
 AC_MSG_CHECKING([for supported APIs])
 AC_ARG_ENABLE([apis],
              [AC_HELP_STRING([--enable-apis=APIS],
-                             [enable support for the given apis; possible values are: legacy,compat,v11,ALL (default: ALL)])],
+                             [enable support for the given apis; possible values are: legacy,compat,v11,v13,fscompat,net,ALL (default: all except 'legacy')])],
               [],
-             [enable_apis=ALL])
+             [enable_apis=compat,v11,v13,fscompat,net])
 
-test x"$enable_apis" != xALL || enable_apis='legacy,compat,v11'
+test x"$enable_apis" != xALL || enable_apis='legacy,compat,v11,v13,fscompat,net'
+enable_api_oldproc=
+enable_api_olduts=
 old_IFS=$IFS
 IFS=,;
 for i in $enable_apis; do
        case "$i" in
-               compat) AC_DEFINE(VC_ENABLE_API_COMPAT, 1, [Enable support for compatibily syscall API]);;
-               legacy) AC_DEFINE(VC_ENABLE_API_LEGACY, 1, [Enable support for old, /proc parsing API]);;
-               v11)    AC_DEFINE(VC_ENABLE_API_V11,    1, [Enable support for API of vserver 1.1.x]);;
-               *)      AC_MSG_ERROR(['$i' is not a supported API]);;
+               (compat)        AC_DEFINE(VC_ENABLE_API_COMPAT,   1, [Enable support for compatibility syscall API])
+                               enable_api_oldproc=1
+                               enable_api_olduts=1
+                               ;;
+               (legacy)        AC_DEFINE(VC_ENABLE_API_LEGACY,   1, [Enable support for old, /proc parsing API])
+                               enable_api_old_proc=1
+                               enable_api_olduts=1
+                               ;;
+               (v11)           AC_DEFINE(VC_ENABLE_API_V11,      1, [Enable support for API of vserver 1.1.x])
+                               enable_api_oldproc=1
+                               enable_api_olduts=1
+                               ;;
+               (v13)           AC_DEFINE(VC_ENABLE_API_V13,      1, [Enable support for API of vserver 1.3.x]);;
+               (net)           AC_DEFINE(VC_ENABLE_API_NET,      1, [Enable support for network context API]);;
+               (fscompat)      AC_DEFINE(VC_ENABLE_API_FSCOMPAT, 1, [Enable support for filesystem compatibility API]);;
+               (*)             AC_MSG_ERROR(['$i' is not a supported API]);;
        esac
 done
 IFS=$old_IFS
+if test x"$enable_api_oldproc" != x; then
+       AC_DEFINE(VC_ENABLE_API_OLDPROC, 1, [Enable API for a backward compatible /proc parsing])
+       enable_apis="$enable_apis,oldproc"
+fi
+if test x"$enable_api_olduts" != x; then
+       AC_DEFINE(VC_ENABLE_API_OLDUTS, 1, [Enable API for a backward compatible uts handling])
+       enable_apis="$enable_apis,olduts"
+fi
 AC_MSG_RESULT([$enable_apis])
+dnl
+dnl the check for used APIs ends here}
+dnl
+dnl ##########################
+
 
 ENSC_SYSCALLNR(vserver,273)
 ENSC_SYSCALL
@@ -107,6 +257,111 @@ ENSC_CHECK_EXT2FS_HEADER
 AC_CHECK_FUNCS([vserver])
 AC_CHECK_DECLS(MS_MOVE,,,[#include <linux/fs.h>])
 AC_CHECK_TYPES(xid_t,,,[#include <sys/types.h>])
+AC_CHECK_TYPES(nid_t,,,[#include <sys/types.h>])
+
+AC_CHECK_HEADERS([sys/capability.h])
+
+
+dnl ########################
+dnl
+dnl {check for beecrypt
+dnl
+if test x"$ensc_cv_c99_c99compiler" = xyes; then
+       ensc_have_beecrypt=yes
+
+       if test x"$ensc_have_beecrypt" = xyes; then
+               AC_CHECK_HEADER([beecrypt/beecrypt.h], [ : ],
+                               [ ensc_have_beecrypt=no ])
+       fi
+                       
+       if test x"$ensc_have_beecrypt" = xyes; then
+               AC_CHECK_LIB(beecrypt, hashFunctionContextInit, [ : ],
+                            [ ensc_have_beecrypt=no ])
+       fi
 
-AC_CONFIG_FILES([util-vserver.spec Makefile])
+       if test x"$ensc_have_beecrypt" != xyes; then
+               AC_MSG_WARN([
+****
+**** 'beecrypt' could not be found;
+**** this will disable the build of 'vhashify'
+****])
+       fi
+else
+       ensc_have_beecrypt=no
+fi
+
+AM_CONDITIONAL(ENSC_HAVE_BEECRYPT, test x"$ensc_have_beecrypt" = xyes)
+AM_CONDITIONAL(ENSC_CAN_BEECRYPT_WITH_DIETLIBC, false)
+dnl
+dnl beecrypt stuff ends here}
+dnl
+dnl ########################
+
+
+dnl BIG HACK! Do some autodetection here!
+AC_DEFINE(UTMP_GID, [22], [The utmp gid-number])
+
+if false; then
+       AC_DEFINE(HAVE_GROWING_STACK, [1], [Define to 1 if the stack is on growing addresses])
+fi
+
+AC_DEFINE(_FILE_OFFSET_BITS, [64], [Use 64bit interface for filesystem operations])
+
+dnl ########################
+dnl
+dnl {The final info-page
+dnl
+ensc_cxx_affected=" (affected: vbuild, vcheck)"
+ensc_c99_affected=" (affected: vunify, vcopy, vhashify, vdlimit)"
+ensc_diet_msg=" (you have been warned)"
+ensc_diet_version_msg=" ($ensc_version_dietlibc)"
+ensc_diet_compat_msg=" (using -lcompat)"
+test x"$ensc_cv_cxx_cxxcompiler"    = xno || ensc_cxx_affected=
+test x"$ensc_cv_c99_c99compiler"    = xno || ensc_c99_affected=
+test x"$ensc_have_dietlibc"         = xno || ensc_diet_msg=
+test x"$ensc_version_dietlibc"     != x   || ensc_diet_version_msg=
+test x"$ensc_have_dietlibc$ensc_cv_c_dietlibc_compat" = xyesyes || ensc_diet_compat_msg=
+
+AH_BOTTOM([#include "compat.h"
+])
+AC_CONFIG_COMMANDS_PRE([
+                       FEATURES_TXT="\
+Features:
+                      CC: $CC, $($CC   --version | sed -e '1p;d')
+                      CXX: $CXX, $($CXX --version | sed -e '1p;d')
+                 CPPFLAGS: '$CPPFLAGS'
+                   CFLAGS: '$CFLAGS'
+                 CXXFLAGS: '$CXXFLAGS'
+               build/host: $build/$host
+             Use dietlibc: $ensc_have_dietlibc$ensc_diet_version_msg$ensc_diet_msg$ensc_diet_compat_msg
+       Build C++ programs: $ensc_cv_cxx_cxxcompiler$ensc_cxx_affected
+       Build C99 programs: $ensc_cv_c99_c99compiler$ensc_c99_affected
+           Available APIs: $enable_apis
+            ext2fs Source: $ensc_cv_test_ext2fs_header
+    syscall(2) invocation: $with_syscall
+      vserver(2) syscall#: $ensc_cv_value_syscall_vserver
+   
+Paths:
+                   prefix: $prefix
+        sysconf-Directory: $sysconfdir
+            cfg-Directory: $sysconfdir/vservers
+         initrd-Directory: $initrddir
+       pkgstate-Directory: $localstatedir/run/vservers
+            Kernelheaders: $kernelincludedir
+          vserver-Rootdir: $vserverdir
+"
+                       echo "$FEATURES_TXT" >FEATURES.txt
+                       ])
+dnl
+dnl final info-page ends here}
+dnl
+dnl ########################
+
+AC_CONFIG_FILES([util-vserver.spec Makefile distrib/Makefile lib/apidoc/Doxyfile])
 AC_OUTPUT
+
+AC_MSG_NOTICE([
+
+$PACKAGE_STRING
+
+$FEATURES_TXT])
diff --git a/contrib/Makefile-files b/contrib/Makefile-files
new file mode 100644 (file)
index 0000000..10315af
--- /dev/null
@@ -0,0 +1,35 @@
+## $Id: Makefile-files,v 1.5 2005/07/15 16:25:39 ensc Exp $  -*- makefile -*-
+
+## Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+##  
+## 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, 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.
+##  
+
+
+contrib_gen_DTA =                      contrib/manifest.dat
+contrib_subst_SRCS =                   contrib/manifest.dat.pathsubst
+
+
+noinst_DATA +=                         $(contrib_gen_DTA)
+CLEANFILES +=                          $(contrib_gen_DTA)
+
+EXTRA_DIST +=                          $(contrib_subst_SRCS) \
+                                       contrib/make-manifest \
+                                       contrib/yum-2.2.1-chroot.patch \
+                                       contrib/yum-2.3.2-chroot.patch \
+                                       contrib/yum-2.3.3-chroot.patch \
+                                       contrib/yum-2.3.4-chroot.patch
+
+contrib/manifest.dat:                  contrib/.manifest.dat.pathsubst.stamp
diff --git a/contrib/make-manifest b/contrib/make-manifest
new file mode 100755 (executable)
index 0000000..7e497c7
--- /dev/null
@@ -0,0 +1,37 @@
+#! /bin/bash
+
+# Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+## Usage: make-manifest <basename> <destdir> <datfile>
+
+name=$1
+dest=$2
+data=$3
+
+for i in $name-{core,devel,base,build,legacy,lib,sysv}.list; do
+    echo '%defattr(-,root,root,-)' >$i
+done
+
+sed -e "s!@CONFIG@!$MANIFEST_CONFIG!g;
+        s!@CONFIG_NOREPLACE@!$MANIFEST_CONFIG_NOREPLACE!g" \
+       $data | \
+while read style file; do
+    test "$file" || continue
+    case "$style" in
+       (\#*)   continue;;
+    esac
+    echo "$file" >>$name-$style.list
+done
diff --git a/contrib/manifest.dat.pathsubst b/contrib/manifest.dat.pathsubst
new file mode 100644 (file)
index 0000000..906ac2f
--- /dev/null
@@ -0,0 +1,131 @@
+lib    @LIBDIR@/libvserver.so.*
+devel  @LIBDIR@/libvserver.a
+devel  @LIBDIR@/libvserver.so
+base   @PKGLIBDIR@/functions
+build  @PKGLIBDIR@/vserver-build.apt-rpm
+build  @PKGLIBDIR@/vserver-build.skeleton
+build  @PKGLIBDIR@/vserver-build.debootstrap
+build  @PKGLIBDIR@/vserver-build.yum
+build  @PKGLIBDIR@/vserver-build.rpm
+build  @PKGLIBDIR@/vserver-build.functions
+build  @PKGLIBDIR@/vserver-build.functions.apt
+build  @PKGLIBDIR@/vserver-build.functions.rpm
+build  @PKGLIBDIR@/vserver-build.functions.yum
+build  @PKGLIBDIR@/vserver-build.functions.pkgmgmt
+build  @PKGLIBDIR@/vserver-setup.functions
+base   @PKGLIBDIR@/vserver.functions
+base   @PKGLIBDIR@/vserver.start
+@ENSC_HAVE_C99_COMPILER_TRUE@base   @PKGLIBDIR@/vserver.start.bin
+base   @PKGLIBDIR@/vserver.stop
+base   @PKGLIBDIR@/vserver.suexec
+core   @PKGLIBDIR@/util-vserver-vars
+build  @PKGLIBDIR@/rpm-fake.so
+legacy @LEGACYDIR@/save_s_context
+legacy @LEGACYDIR@/vps
+legacy @LEGACYDIR@/vserver
+legacy @LEGACYDIR@/vserverkillall
+legacy @LEGACYDIR@/distrib-info
+legacy @LEGACYDIR@/ifspec
+legacy @LEGACYDIR@/listdevip
+legacy @LEGACYDIR@/parserpmdump
+legacy @LEGACYDIR@/rebootmgr
+legacy @LEGACYDIR@/rootshell
+legacy @LEGACYDIR@/showperm
+legacy @LEGACYDIR@/vreboot
+core   @PKGLIBDIR@/FEATURES.txt
+base   @PKGLIBDIR@/defaults/mtab
+base   @PKGLIBDIR@/defaults/vprocunhide-files
+build  @PKGLIBDIR@/defaults/fstab
+build  @PKGLIBDIR@/defaults/debootstrap.uri
+@ENSC_HAVE_C99_COMPILER_TRUE@build  @PKGLIBDIR@/defaults/vunify-exclude
+base   @PKGLIBDIR@/capchroot
+base   @PKGLIBDIR@/chain-echo
+core   @PKGLIBDIR@/chcontext-compat
+base   @PKGLIBDIR@/check-unixfile
+base   @PKGLIBDIR@/chroot-sh
+base   @PKGLIBDIR@/exec-ulimit
+base   @PKGLIBDIR@/fakerunlevel
+base   @PKGLIBDIR@/filetime
+base   @PKGLIBDIR@/lockfile
+base   @PKGLIBDIR@/keep-ctx-alive
+base   @PKGLIBDIR@/mask2prefix
+build  @PKGLIBDIR@/pkgmgmt
+base   @PKGLIBDIR@/readlink
+build  @PKGLIBDIR@/rpm-fake-resolver
+base   @PKGLIBDIR@/save_ctxinfo
+base   @PKGLIBDIR@/secure-mount
+base   @PKGLIBDIR@/sigexec
+base   @PKGLIBDIR@/start-vservers
+build  @PKGLIBDIR@/vapt-get-worker
+build  @PKGLIBDIR@/vyum-worker
+build  @PKGLIBDIR@/vpkg
+base   @PKGLIBDIR@/vprocunhide
+build  @PKGLIBDIR@/vrpm-preload
+build  @PKGLIBDIR@/vrpm-worker
+build  @PKGLIBDIR@/vserver-build
+sysv   @PKGLIBDIR@/vserver-wrapper
+base   @PKGLIBDIR@/vshelper
+base   @PKGLIBDIR@/vshelper-sync
+sysv   @PKGLIBDIR@/vsysvwrapper
+@ENSC_HAVE_C99_COMPILER_TRUE@build  @PKGLIBDIR@/vcopy
+@ENSC_HAVE_C99_COMPILER_TRUE@build  @PKGLIBDIR@/vunify
+@ENSC_HAVE_C99_COMPILER_TRUE@build  @PKGLIBDIR@/vhashify
+base   @PKGLIBDIR@/vservers.grabinfo.sh
+build  @PKGLIBDIR@/distributions
+devel  @LIBDIR@/pkgconfig/util-vserver.pc
+core   @SBINDIR@/chbind
+core   @SBINDIR@/chcontext
+core   @SBINDIR@/chxid
+base   @SBINDIR@/exec-cd
+core   @SBINDIR@/lsxid
+core   @SBINDIR@/reducecap
+core   @SBINDIR@/setattr
+core   @SBINDIR@/showattr
+build  @SBINDIR@/vapt-get
+build  @SBINDIR@/vyum
+core   @SBINDIR@/vattribute
+core   @SBINDIR@/vcontext
+core   @SBINDIR@/vdlimit
+core   @SBINDIR@/vnamespace
+base   @SBINDIR@/vdu
+core   @SBINDIR@/vkill
+core   @SBINDIR@/vlimit
+base   @SBINDIR@/vps
+base   @SBINDIR@/vpstree
+build  @SBINDIR@/vrpm
+core   @SBINDIR@/vrsetup
+core   @SBINDIR@/vsched
+base   @SBINDIR@/vserver
+legacy @SBINDIR@/vserver-copy
+core   @SBINDIR@/vserver-info
+base   @SBINDIR@/vserver-stat
+base   @SBINDIR@/vsomething
+base   @SBINDIR@/vtop
+core   @SBINDIR@/vuname
+core   @SBINDIR@/vwait
+devel  @INCLUDEDIR@/vserver.h
+core   @MANDIR@/*/chbind*
+core   @MANDIR@/*/chcontext*
+core   @MANDIR@/*/reducecap*
+legacy @MANDIR@/*/distrib-info*
+build  @MANDIR@/*/vserver-copy*
+legacy @MANDIR@/*/rebootmgr*
+legacy @MANDIR@/*/vps.*
+base   @MANDIR@/*/vpstree.*
+base   @MANDIR@/*/vserver-stat*
+base   @MANDIR@/*/vserver.*
+base   @MANDIR@/*/vtop*
+legacy @CONFIG@ @INITRDDIR@/v_gated
+legacy @CONFIG@ @INITRDDIR@/v_httpd
+legacy @CONFIG@ @INITRDDIR@/v_named
+legacy @CONFIG@ @INITRDDIR@/v_portmap
+legacy @CONFIG@ @INITRDDIR@/v_sendmail
+legacy @CONFIG@ @INITRDDIR@/v_smb
+legacy @CONFIG@ @INITRDDIR@/v_sshd
+legacy @CONFIG@ @INITRDDIR@/v_xinetd
+sysv   @CONFIG@ @INITRDDIR@/vprocunhide
+sysv   @CONFIG@ @INITRDDIR@/vservers-default
+legacy @CONFIG@ @INITRDDIR@/rebootmgr
+legacy @CONFIG@ @INITRDDIR@/vservers-legacy
+legacy @CONFIG_NOREPLACE@ @SYSCONFDIR@/vservers.conf
+build  @CONFIG_NOREPLACE@ @CONFDIR@/.distributions/*/apt/sources.list
diff --git a/contrib/yum-2.2.1-chroot.patch b/contrib/yum-2.2.1-chroot.patch
new file mode 100644 (file)
index 0000000..7741680
--- /dev/null
@@ -0,0 +1,194 @@
+--- yum-2.2.1/docs/yum.conf.5.chroot   2005-02-19 23:30:54.000000000 +0100
++++ yum-2.2.1/docs/yum.conf.5  2005-04-08 19:53:02.000000000 +0200
+@@ -23,8 +23,10 @@
+ following options:
+ .IP \fBcachedir\fR
+-Directory where yum should store its cache and db files. The default is
+-`/var/cache/yum'.
++Directory where yum should store its cache and db files. The default
++is `/var/cache/yum'. Unless the prefixes `hostfs://' or `chrootfs://'
++are used, some magic will be applied to determine the real path in
++combination with `--installroot'.
+ .IP \fBreposdir\fR
+ Directory where yum should look for .repo files for its configuration
+@@ -33,6 +35,10 @@
+ repository options below. These will be merged with the repositories defined
+ in /etc/yum.conf to form the complete set of repositories that yum will use.
++Unless the prefixes `hostfs://' or `chrootfs://' are used, some magic
++will be applied to determine the real path in combination with
++`--installroot'.
++
+ .IP \fBdebuglevel\fR
+ Debug message output level. Practical range is 0\-10. Default is `2'.
+@@ -40,7 +46,10 @@
+ Error message output level. Practical range is 0\-10. Default is `2'.
+ .IP \fBlogfile\fR
+-Full directory and file name for where yum should write its log file.
++Full directory and file name for where yum should write its log
++file. Unless the prefixes `hostfs://' or `chrootfs://' are used,
++some magic will be applied to determine the real path in combination
++with `--installroot'.
+ .IP \fBgpgcheck\fR
+ Either `1' or `0'. This tells yum whether or not it should perform a GPG
+--- yum-2.2.1/yum/__init__.py.chroot   2005-03-15 08:34:03.000000000 +0100
++++ yum-2.2.1/yum/__init__.py  2005-04-08 20:10:36.000000000 +0200
+@@ -298,19 +298,22 @@
+                 self.log(3, 'Arch Excluding %s' % po)
+                 self.pkgSack.delPackage(po)
+         self.log(2, 'Finished')
++
++    def __getLockfileName(self):
++        lockfile = self.conf.configdata['lockfile']
++        return self.conf.getRootedPath(lockfile,
++                                       enforce_default  = True,
++                                       defaults_to_host = False)
+         
+-        
+-        
+-    def doLock(self, lockfile):
++    def doLock(self):
+         """perform the yum locking, raise yum-based exceptions, not OSErrors"""
+         
+         # if we're not root then we don't lock - just return nicely
+         if self.conf.getConfigOption('uid') != 0:
+             return
+-        root = self.conf.installroot
+-        lockfile = root + '/' + lockfile # lock in the chroot
+-
++        lockfile=self.__getLockfileName()
++        
+         mypid=str(os.getpid())    
+         while not self._lock(lockfile, mypid, 0644):
+             fd = open(lockfile, 'r')
+@@ -333,15 +336,14 @@
+                     msg = 'Existing lock %s: another copy is running. Aborting.' % lockfile
+                     raise Errors.LockError(0, msg)
+     
+-    def doUnlock(self, lockfile):
++    def doUnlock(self):
+         """do the unlock for yum"""
+         
+         # if we're not root then we don't lock - just return nicely
+         if self.conf.getConfigOption('uid') != 0:
+             return
+-        root = self.conf.installroot
+-        lockfile = root + '/' + lockfile # lock in the chroot
++        lockfile=self.__getLockfileName()
+         self._unlock(lockfile)
+         
+--- yum-2.2.1/yum/config.py.chroot     2005-03-15 07:09:18.000000000 +0100
++++ yum-2.2.1/yum/config.py    2005-04-08 19:53:02.000000000 +0200
+@@ -194,7 +194,8 @@
+                       
+         #defaults -either get them or set them
+         optionstrings = [('cachedir', '/var/cache/yum'), 
+-                         ('logfile', '/var/log/yum.log'), 
++                         ('logfile', '/var/log/yum.log'),
++                         ('lockfile', '/var/run/yum.pid'),
+                          ('reposdir', '/etc/yum.repos.d'),
+                          ('rss-filename', 'yum-rss.xml'),
+                          ('pkgpolicy', 'newest'),
+@@ -270,9 +271,7 @@
+             
+         # do the dirs - set the root if there is one (grumble)
+         for option in ['cachedir', 'logfile']:
+-            path = self.configdata[option]
+-            root = self.configdata['installroot']
+-            rootedpath = root + path
++            rootedpath = self.getRootedPath(self.configdata[option])
+             self.configdata[option] = rootedpath
+             setattr(self, option, rootedpath)
+         
+@@ -314,8 +313,7 @@
+         # read each of them in using confpp, then parse them same as any other repo
+         # section - as above.
+         reposdir = self.getConfigOption('reposdir')
+-        if os.path.exists(self.getConfigOption('installroot') + '/' + reposdir):
+-            reposdir = self.getConfigOption('installroot') + '/' + reposdir
++        reposdir = self.getRootedPath(reposdir)
+         
+         reposglob = reposdir + '/*.repo'
+         if os.path.exists(reposdir) and os.path.isdir(reposdir):
+@@ -334,6 +332,23 @@
+                     print e
+                     
++    def getRootedPath(self, path, enforce_default=False, defaults_to_host=False):
++      instroot = self.configdata['installroot']
++        if   path.startswith('hostfs://'):   res = path[9:]
++        elif path.startswith('chrootfs://'): res = instroot + '/' + path[11:]
++        else:
++          tmp = instroot + '/' +path
++
++            if enforce_default:
++                if defaults_to_host:    res = path
++                else:                   res = tmp
++            else:
++                if os.path.exists(tmp): res = tmp
++                elif defaults_to_host:  res = path
++                else:                   res = tmp
++
++      return res
++
+     def listConfigOptions(self):
+         """return list of options available for global config"""
+         return self.configdata.keys()
+--- yum-2.2.1/cli.py.chroot    2005-03-15 08:19:11.000000000 +0100
++++ yum-2.2.1/cli.py   2005-04-08 19:53:02.000000000 +0200
+@@ -126,7 +126,7 @@
+         sleeptime=0
+         root = '/'
+         installroot = None
+-        conffile = '/etc/yum.conf'
++        conffile = None
+         
+         try: 
+             for o,a in gopts:
+@@ -140,12 +140,14 @@
+             
+             # if the conf file is inside the  installroot - use that.
+             # otherwise look for it in the normal root
+-            if installroot:
+-                if os.access(installroot + '/' + conffile, os.R_OK):
++            if conffile==None:
++                conffile = '/etc/yum.conf'
++                if installroot and os.access(installroot + '/' + conffile, os.R_OK):
+                     conffile = installroot + '/' + conffile
+-                    
++
++            if installroot:
+                 root = installroot
+-                    
++
+             try:
+                 self.conf = yumconf(configfile = conffile, root = root)
+             except yum.Errors.ConfigError, e:
+--- yum-2.2.1/yummain.py.chroot        2005-01-07 14:45:50.000000000 +0100
++++ yum-2.2.1/yummain.py       2005-04-08 19:53:02.000000000 +0200
+@@ -41,7 +41,7 @@
+     def unlock():
+         try:
+             base.closeRpmDB()
+-            base.doUnlock('/var/run/yum.pid')
++            base.doUnlock()
+         except Errors.LockError, e:
+             sys.exit(200)
+@@ -58,7 +58,7 @@
+         sys.exit(1)
+         
+     try:
+-        base.doLock('/var/run/yum.pid')
++        base.doLock()
+     except Errors.LockError, e:
+         base.errorlog(0,'%s' % e.msg)
+         sys.exit(200)
diff --git a/contrib/yum-2.3.2-chroot.patch b/contrib/yum-2.3.2-chroot.patch
new file mode 100644 (file)
index 0000000..5e40dfe
--- /dev/null
@@ -0,0 +1,205 @@
+--- yum-2.3.2/docs/yum.conf.5.chroot   2005-03-25 11:12:20.000000000 +0100
++++ yum-2.3.2/docs/yum.conf.5  2005-04-08 18:27:12.000000000 +0200
+@@ -23,8 +23,10 @@
+ following options:
+ .IP \fBcachedir\fR
+-Directory where yum should store its cache and db files. The default is
+-`/var/cache/yum'.
++Directory where yum should store its cache and db files. The default
++is `/var/cache/yum'. Unless the prefixes `hostfs://' or `chrootfs://'
++are used, some magic will be applied to determine the real path in
++combination with `--installroot'.
+ .IP \fBreposdir\fR
+ A list of directories where yum should look for .repo files which define
+@@ -34,6 +36,10 @@
+ repositories defined in /etc/yum.conf to form the complete set of repositories
+ that yum will use.
++Unless the prefixes `hostfs://' or `chrootfs://' are used, some magic
++will be applied to determine the real path in combination with
++`--installroot'.
++
+ .IP \fBdebuglevel\fR
+ Debug message output level. Practical range is 0\-10. Default is `2'.
+@@ -41,7 +47,10 @@
+ Error message output level. Practical range is 0\-10. Default is `2'.
+ .IP \fBlogfile\fR
+-Full directory and file name for where yum should write its log file.
++Full directory and file name for where yum should write its log
++file. Unless the prefixes `hostfs://' or `chrootfs://' are used,
++some magic will be applied to determine the real path in combination
++with `--installroot'.
+ .IP \fBgpgcheck\fR
+ Either `1' or `0'. This tells yum whether or not it should perform a GPG
+--- yum-2.3.2/yum/__init__.py.chroot   2005-04-04 20:14:18.000000000 +0200
++++ yum-2.3.2/yum/__init__.py  2005-04-08 20:11:06.000000000 +0200
+@@ -97,9 +97,8 @@
+         # read each of them in using confpp, then parse them same as any other repo
+         # section - as above.
+         for reposdir in self.conf.reposdir:
+-            if os.path.exists(self.conf.installroot + '/' + reposdir):
+-                reposdir = self.conf.installroot + '/' + reposdir
+-            
++            reposdir  = self.conf.getRootedPath(reposdir)
++
+             if os.path.isdir(reposdir):
+                 repofn = glob.glob(reposdir+'/*.repo')
+                 repofn.sort()
+@@ -405,17 +404,20 @@
+         self.pkgSack.excludeArchs(archlist)
+         self.log(3, 'Finished')
+         
++    def __getLockfileName(self):
++        lockfile = self.conf.configdata['lockfile']
++        return self.conf.getRootedPath(lockfile,
++                                       enforce_default  = True,
++                                       defaults_to_host = False)
+         
+-        
+-    def doLock(self, lockfile):
++    def doLock(self):
+         """perform the yum locking, raise yum-based exceptions, not OSErrors"""
+         
+         # if we're not root then we don't lock - just return nicely
+         if self.conf.getConfigOption('uid') != 0:
+             return
+-            
+-        root = self.conf.installroot
+-        lockfile = root + '/' + lockfile # lock in the chroot
++
++        lockfile=self.__getLockfileName()
+         
+         mypid=str(os.getpid())    
+         while not self._lock(lockfile, mypid, 0644):
+@@ -439,15 +441,14 @@
+                     msg = 'Existing lock %s: another copy is running. Aborting.' % lockfile
+                     raise Errors.LockError(0, msg)
+     
+-    def doUnlock(self, lockfile):
++    def doUnlock(self):
+         """do the unlock for yum"""
+         
+         # if we're not root then we don't lock - just return nicely
+         if self.conf.getConfigOption('uid') != 0:
+             return
+         
+-        root = self.conf.installroot
+-        lockfile = root + '/' + lockfile # lock in the chroot
++        lockfile=self.__getLockfileName()
+         
+         self._unlock(lockfile)
+         
+--- yum-2.3.2/yum/config.py.chroot     2005-03-28 00:01:22.000000000 +0200
++++ yum-2.3.2/yum/config.py    2005-04-08 20:09:25.000000000 +0200
+@@ -193,7 +193,8 @@
+                       
+         #defaults -either get them or set them
+         optionstrings = [('cachedir', '/var/cache/yum'), 
+-                         ('logfile', '/var/log/yum.log'), 
++                         ('logfile', '/var/log/yum.log'),
++                         ('lockfile', '/var/run/yum.pid'),
+                          ('reposdir', ['/etc/yum/repos.d', '/etc/yum.repos.d']),
+                          ('syslog_ident', None),
+                          ('syslog_facility', 'LOG_USER'),
+@@ -304,9 +305,7 @@
+         # do the dirs - set the root if there is one (grumble)
+         for option in ['cachedir', 'logfile']:
+-            path = self.configdata[option]
+-            root = self.configdata['installroot']
+-            rootedpath = root + path
++            rootedpath = self.getRootedPath(self.configdata[option])
+             self.configdata[option] = rootedpath
+             setattr(self, option, rootedpath)
+         
+@@ -339,6 +338,23 @@
+                         "All plugin search paths must be absolute")
++    def getRootedPath(self, path, enforce_default=False, defaults_to_host=False):
++      instroot = self.configdata['installroot']
++        if   path.startswith('hostfs://'):   res = path[9:]
++        elif path.startswith('chrootfs://'): res = instroot + '/' + path[11:]
++        else:
++          tmp = instroot + '/' +path
++
++            if enforce_default:
++                if defaults_to_host:    res = path
++                else:                   res = tmp
++            else:
++                if os.path.exists(tmp): res = tmp
++                elif defaults_to_host:  res = path
++                else:                   res = tmp
++
++      return res
++
+     def listConfigOptions(self):
+         """return list of options available for global config"""
+         return self.configdata.keys()
+@@ -717,9 +733,7 @@
+     # read each of them in using confpp, then parse them same as any other repo
+     # section - as above.
+-    reposdir = conf.reposdir
+-    if os.path.exists(conf.installroot + '/' + reposdir):
+-        reposdir = conf.installroot + '/' + reposdir
++    reposdir  = conf.getRootedPath(conf.reposdir)
+     
+     reposglob = reposdir + '/*.repo'
+     if os.path.exists(reposdir) and os.path.isdir(reposdir):
+--- yum-2.3.2/cli.py.chroot    2005-03-28 05:18:03.000000000 +0200
++++ yum-2.3.2/cli.py   2005-04-08 18:27:12.000000000 +0200
+@@ -115,7 +115,7 @@
+         sleeptime=0
+         root = '/'
+         installroot = None
+-        conffile = '/etc/yum.conf'
++        conffile = None
+         
+         try: 
+             for o,a in gopts:
+@@ -129,12 +129,14 @@
+             
+             # if the conf file is inside the  installroot - use that.
+             # otherwise look for it in the normal root
++            if conffile==None:
++               conffile = '/etc/yum.conf'
++               if installroot and os.access(installroot + '/' + conffile, os.R_OK):
++                  conffile = installroot + '/' + conffile
++
+             if installroot:
+-                if os.access(installroot + '/' + conffile, os.R_OK):
+-                    conffile = installroot + '/' + conffile
+-                    
+-                root = installroot
+-                    
++               root = installroot
++
+             try:
+                 self.doConfigSetup(fn = conffile, root = root)
+             except yum.Errors.ConfigError, e:
+--- yum-2.3.2/yummain.py.chroot        2005-03-27 07:39:17.000000000 +0200
++++ yum-2.3.2/yummain.py       2005-04-08 18:27:12.000000000 +0200
+@@ -41,7 +41,7 @@
+     def unlock():
+         try:
+             base.closeRpmDB()
+-            base.doUnlock('/var/run/yum.pid')
++            base.doUnlock()
+         except Errors.LockError, e:
+             sys.exit(200)
+@@ -58,7 +58,7 @@
+         sys.exit(1)
+         
+     try:
+-        base.doLock('/var/run/yum.pid')
++        base.doLock()
+     except Errors.LockError, e:
+         base.errorlog(0,'%s' % e.msg)
+         sys.exit(200)
diff --git a/contrib/yum-2.3.3-chroot.patch b/contrib/yum-2.3.3-chroot.patch
new file mode 100644 (file)
index 0000000..a12b73b
--- /dev/null
@@ -0,0 +1,200 @@
+--- yum-2.3.3/docs/yum.conf.5.chroot
++++ yum-2.3.3/docs/yum.conf.5
+@@ -23,8 +23,10 @@
+ following options:
+ .IP \fBcachedir\fR
+-Directory where yum should store its cache and db files. The default is
+-`/var/cache/yum'.
++Directory where yum should store its cache and db files. The default
++is `/var/cache/yum'. Unless the prefixes `hostfs://' or `chrootfs://'
++are used, some magic will be applied to determine the real path in
++combination with `--installroot'.
+ .IP \fBreposdir\fR
+ A list of directories where yum should look for .repo files which define
+@@ -34,6 +36,10 @@
+ repositories defined in /etc/yum.conf to form the complete set of repositories
+ that yum will use.
++Unless the prefixes `hostfs://' or `chrootfs://' are used, some magic
++will be applied to determine the real path in combination with
++`--installroot'.
++
+ .IP \fBdebuglevel\fR
+ Debug message output level. Practical range is 0\-10. Default is `2'.
+@@ -41,7 +47,10 @@
+ Error message output level. Practical range is 0\-10. Default is `2'.
+ .IP \fBlogfile\fR
+-Full directory and file name for where yum should write its log file.
++Full directory and file name for where yum should write its log
++file. Unless the prefixes `hostfs://' or `chrootfs://' are used,
++some magic will be applied to determine the real path in combination
++with `--installroot'.
+ .IP \fBgpgcheck\fR
+ Either `1' or `0'. This tells yum whether or not it should perform a GPG
+--- yum-2.3.3/yum/__init__.py.chroot
++++ yum-2.3.3/yum/__init__.py
+@@ -101,9 +101,8 @@
+         # read each of them in using confpp, then parse them same as any other repo
+         # section - as above.
+         for reposdir in self.conf.reposdir:
+-            if os.path.exists(self.conf.installroot + '/' + reposdir):
+-                reposdir = self.conf.installroot + '/' + reposdir
+-            
++            reposdir  = self.conf.getRootedPath(reposdir)
++
+             if os.path.isdir(reposdir):
+                 repofn = glob.glob(reposdir+'/*.repo')
+                 repofn.sort()
+@@ -425,17 +424,20 @@
+         self.pkgSack.excludeArchs(archlist)
+         self.log(3, 'Finished')
+         
++    def __getLockfileName(self):
++        lockfile = self.conf.configdata['lockfile']
++        return self.conf.getRootedPath(lockfile,
++                                       enforce_default  = True,
++                                       defaults_to_host = False)
+         
+-        
+-    def doLock(self, lockfile):
++    def doLock(self):
+         """perform the yum locking, raise yum-based exceptions, not OSErrors"""
+         
+         # if we're not root then we don't lock - just return nicely
+         if self.conf.getConfigOption('uid') != 0:
+             return
+-            
+-        root = self.conf.installroot
+-        lockfile = root + '/' + lockfile # lock in the chroot
++
++        lockfile=self.__getLockfileName()
+         
+         mypid=str(os.getpid())    
+         while not self._lock(lockfile, mypid, 0644):
+@@ -459,15 +461,14 @@
+                     msg = 'Existing lock %s: another copy is running. Aborting.' % lockfile
+                     raise Errors.LockError(0, msg)
+     
+-    def doUnlock(self, lockfile):
++    def doUnlock(self):
+         """do the unlock for yum"""
+         
+         # if we're not root then we don't lock - just return nicely
+         if self.conf.getConfigOption('uid') != 0:
+             return
+         
+-        root = self.conf.installroot
+-        lockfile = root + '/' + lockfile # lock in the chroot
++        lockfile=self.__getLockfileName()
+         
+         self._unlock(lockfile)
+         
+--- yum-2.3.3/yum/config.py.chroot
++++ yum-2.3.3/yum/config.py
+@@ -193,7 +193,8 @@
+                       
+         #defaults -either get them or set them
+         optionstrings = [('cachedir', '/var/cache/yum'), 
+-                         ('logfile', '/var/log/yum.log'), 
++                         ('logfile', '/var/log/yum.log'),
++                         ('lockfile', '/var/run/yum.pid'),
+                          ('reposdir', ['/etc/yum/repos.d', '/etc/yum.repos.d']),
+                          ('syslog_ident', None),
+                          ('syslog_facility', 'LOG_USER'),
+@@ -305,9 +306,7 @@
+         # do the dirs - set the root if there is one (grumble)
+         for option in ['cachedir', 'logfile']:
+-            path = self.configdata[option]
+-            root = self.configdata['installroot']
+-            rootedpath = root + path
++            rootedpath = self.getRootedPath(self.configdata[option])
+             self.configdata[option] = rootedpath
+             setattr(self, option, rootedpath)
+         
+@@ -340,6 +339,23 @@
+                         "All plugin search paths must be absolute")
++    def getRootedPath(self, path, enforce_default=False, defaults_to_host=False):
++      instroot = self.configdata['installroot']
++        if   path.startswith('hostfs://'):   res = path[9:]
++        elif path.startswith('chrootfs://'): res = instroot + '/' + path[11:]
++        else:
++          tmp = instroot + '/' +path
++
++            if enforce_default:
++                if defaults_to_host:    res = path
++                else:                   res = tmp
++            else:
++                if os.path.exists(tmp): res = tmp
++                elif defaults_to_host:  res = path
++                else:                   res = tmp
++
++      return res
++
+     def listConfigOptions(self):
+         """return list of options available for global config"""
+         return self.configdata.keys()
+@@ -719,9 +735,7 @@
+     # read each of them in using confpp, then parse them same as any other repo
+     # section - as above.
+-    reposdir = conf.reposdir
+-    if os.path.exists(conf.installroot + '/' + reposdir):
+-        reposdir = conf.installroot + '/' + reposdir
++    reposdir  = conf.getRootedPath(conf.reposdir)
+     
+     reposglob = reposdir + '/*.repo'
+     if os.path.exists(reposdir) and os.path.isdir(reposdir):
+--- yum-2.3.3/cli.py.chroot
++++ yum-2.3.3/cli.py
+@@ -108,7 +108,7 @@
+                 action="store_true", default=False, 
+                 help="run entirely from cache, don't update cache")
+         self.optparser.add_option("-c", "", dest="conffile", action="store", 
+-                default='/etc/yum.conf', help="config file location", 
++                default=None, help="config file location", 
+                 metavar=' [config file]')
+         self.optparser.add_option("-R", "", dest="sleeptime", action="store", 
+                 type='int', default=None, help="maximum command wait time",
+@@ -161,9 +161,12 @@
+         try: 
+             # If the conf file is inside the  installroot - use that.
+             # otherwise look for it in the normal root
+-            if opts.installroot:
+-                if os.access(opts.installroot+'/'+opts.conffile, os.R_OK):
++            if opts.conffile==None:
++                opts.conffile = '/etc/yum.conf'
++                if opts.installroot and os.access(opts.installroot+'/'+opts.conffile, os.R_OK):
+                     opts.conffile = opts.installroot+'/'+opts.conffile
++
++            if opts.installroot:
+                 root=opts.installroot
+             else:
+                 root = '/'
+--- yum-2.3.3/yummain.py.chroot
++++ yum-2.3.3/yummain.py
+@@ -60,7 +60,7 @@
+     def unlock():
+         try:
+             base.closeRpmDB()
+-            base.doUnlock(YUM_PID_FILE)
++            base.doUnlock()
+         except Errors.LockError, e:
+             sys.exit(200)
+@@ -78,7 +78,7 @@
+     except Errors.YumBaseError, e:
+         exFatal(e)
+     try:
+-        base.doLock(YUM_PID_FILE)
++        base.doLock()
+     except Errors.LockError, e:
+         base.errorlog(0,'%s' % e.msg)
+         sys.exit(200)
diff --git a/contrib/yum-2.3.4-chroot.patch b/contrib/yum-2.3.4-chroot.patch
new file mode 100644 (file)
index 0000000..2b69cbf
--- /dev/null
@@ -0,0 +1,199 @@
+--- yum-2.3.4/docs/yum.conf.5.chroot
++++ yum-2.3.4/docs/yum.conf.5
+@@ -23,8 +23,10 @@
+ following options:
+ .IP \fBcachedir\fR
+-Directory where yum should store its cache and db files. The default is
+-`/var/cache/yum'.
++Directory where yum should store its cache and db files. The default
++is `/var/cache/yum'. Unless the prefixes `hostfs://' or `chrootfs://'
++are used, some magic will be applied to determine the real path in
++combination with `--installroot'.
+ .IP \fBreposdir\fR
+ A list of directories where yum should look for .repo files which define
+@@ -34,6 +36,10 @@
+ repositories defined in /etc/yum.conf to form the complete set of repositories
+ that yum will use.
++Unless the prefixes `hostfs://' or `chrootfs://' are used, some magic
++will be applied to determine the real path in combination with
++`--installroot'.
++
+ .IP \fBdebuglevel\fR
+ Debug message output level. Practical range is 0\-10. Default is `2'.
+@@ -41,7 +47,10 @@
+ Error message output level. Practical range is 0\-10. Default is `2'.
+ .IP \fBlogfile\fR
+-Full directory and file name for where yum should write its log file.
++Full directory and file name for where yum should write its log
++file. Unless the prefixes `hostfs://' or `chrootfs://' are used,
++some magic will be applied to determine the real path in combination
++with `--installroot'.
+ .IP \fBgpgcheck\fR
+ Either `1' or `0'. This tells yum whether or not it should perform a GPG
+--- yum-2.3.4/yum/__init__.py.chroot
++++ yum-2.3.4/yum/__init__.py
+@@ -102,9 +102,8 @@
+         # read each of them in using confpp, then parse them same as any other repo
+         # section - as above.
+         for reposdir in self.conf.reposdir:
+-            if os.path.exists(self.conf.installroot + '/' + reposdir):
+-                reposdir = self.conf.installroot + '/' + reposdir
+-            
++            reposdir  = self.conf.getRootedPath(reposdir)
++
+             if os.path.isdir(reposdir):
+                 repofn = glob.glob(reposdir+'/*.repo')
+                 repofn.sort()
+@@ -426,18 +425,20 @@
+         self.pkgSack.excludeArchs(archlist)
+         self.log(3, 'Finished')
+         
++    def __getLockfileName(self):
++        lockfile = self.conf.configdata['lockfile']
++        return self.conf.getRootedPath(lockfile,
++                                       enforce_default  = True,
++                                       defaults_to_host = False)
+         
+-        
+-    def doLock(self, lockfile):
++    def doLock(self):
+         """perform the yum locking, raise yum-based exceptions, not OSErrors"""
+         
+         # if we're not root then we don't lock - just return nicely
+         if self.conf.getConfigOption('uid') != 0:
+             return
+             
+-        root = self.conf.installroot
+-        lockfile = root + '/' + lockfile # lock in the chroot
+-        lockfile = os.path.normpath(lockfile) # get rid of silly preceding extra /
++        lockfile = self.__getLockfileName()
+         
+         mypid=str(os.getpid())    
+         while not self._lock(lockfile, mypid, 0644):
+@@ -461,15 +462,14 @@
+                     msg = 'Existing lock %s: another copy is running. Aborting.' % lockfile
+                     raise Errors.LockError(0, msg)
+     
+-    def doUnlock(self, lockfile):
++    def doUnlock(self):
+         """do the unlock for yum"""
+         
+         # if we're not root then we don't lock - just return nicely
+         if self.conf.getConfigOption('uid') != 0:
+             return
+         
+-        root = self.conf.installroot
+-        lockfile = root + '/' + lockfile # lock in the chroot
++        lockfile=self.__getLockfileName()
+         
+         self._unlock(lockfile)
+         
+--- yum-2.3.4/yum/config.py.chroot
++++ yum-2.3.4/yum/config.py
+@@ -205,7 +205,8 @@
+                       
+         #defaults -either get them or set them
+         optionstrings = [('cachedir', '/var/cache/yum'), 
+-                         ('logfile', '/var/log/yum.log'), 
++                         ('logfile', '/var/log/yum.log'),
++                         ('lockfile', '/var/run/yum.pid'),
+                          ('reposdir', ['/etc/yum/repos.d', '/etc/yum.repos.d']),
+                          ('syslog_ident', None),
+                          ('syslog_facility', 'LOG_USER'),
+@@ -318,9 +319,7 @@
+         # do the dirs - set the root if there is one (grumble)
+         for option in ['cachedir', 'logfile']:
+-            path = self.configdata[option]
+-            root = self.configdata['installroot']
+-            rootedpath = root + path
++            rootedpath = self.getRootedPath(self.configdata[option])
+             self.configdata[option] = rootedpath
+             setattr(self, option, rootedpath)
+         
+@@ -358,6 +357,23 @@
+                         "All plugin search paths must be absolute")
++    def getRootedPath(self, path, enforce_default=False, defaults_to_host=False):
++      instroot = self.configdata['installroot']
++        if   path.startswith('hostfs://'):   res = path[9:]
++        elif path.startswith('chrootfs://'): res = instroot + '/' + path[11:]
++        else:
++          tmp = instroot + '/' +path
++
++            if enforce_default:
++                if defaults_to_host:    res = path
++                else:                   res = tmp
++            else:
++                if os.path.exists(tmp): res = tmp
++                elif defaults_to_host:  res = path
++                else:                   res = tmp
++
++      return res
++
+     def listConfigOptions(self):
+         """return list of options available for global config"""
+         return self.configdata.keys()
+@@ -749,8 +765,7 @@
+     reposdirs = []
+     for dir in conf.reposdir:
+-        if os.path.exists(conf.installroot + '/' + dir):
+-            reposdirs.append(conf.installroot + '/' + dir)
++        reposdirs.append(conf.getRootedPath(dir))
+     repofn = []
+     for reposdir in reposdirs:
+--- yum-2.3.4/cli.py.chroot
++++ yum-2.3.4/cli.py
+@@ -105,7 +105,7 @@
+                 action="store_true", default=False, 
+                 help="run entirely from cache, don't update cache")
+         self.optparser.add_option("-c", "", dest="conffile", action="store", 
+-                default='/etc/yum.conf', help="config file location", 
++                default=None, help="config file location", 
+                 metavar=' [config file]')
+         self.optparser.add_option("-R", "", dest="sleeptime", action="store", 
+                 type='int', default=None, help="maximum command wait time",
+@@ -158,9 +158,12 @@
+         try: 
+             # If the conf file is inside the  installroot - use that.
+             # otherwise look for it in the normal root
+-            if opts.installroot:
+-                if os.access(opts.installroot+'/'+opts.conffile, os.R_OK):
++            if opts.conffile==None:
++                opts.conffile = '/etc/yum.conf'
++                if opts.installroot and os.access(opts.installroot+'/'+opts.conffile, os.R_OK):
+                     opts.conffile = opts.installroot+'/'+opts.conffile
++
++            if opts.installroot:
+                 root=opts.installroot
+             else:
+                 root = '/'
+--- yum-2.3.4/yummain.py.chroot
++++ yum-2.3.4/yummain.py
+@@ -60,7 +60,7 @@
+     def unlock():
+         try:
+             base.closeRpmDB()
+-            base.doUnlock(YUM_PID_FILE)
++            base.doUnlock()
+         except Errors.LockError, e:
+             sys.exit(200)
+@@ -78,7 +78,7 @@
+     except Errors.YumBaseError, e:
+         exFatal(e)
+     try:
+-        base.doLock(YUM_PID_FILE)
++        base.doLock()
+     except Errors.LockError, e:
+         base.errorlog(0,'%s' % e.msg)
+         sys.exit(200)
diff --git a/depcomp b/depcomp
index 25bdb18..ffcd540 100755 (executable)
--- a/depcomp
+++ b/depcomp
@@ -1,9 +1,9 @@
 #! /bin/sh
 # depcomp - compile a program generating dependencies as side-effects
 
-scriptversion=2004-04-25.13
+scriptversion=2005-02-09.22
 
-# Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
 
 # 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
@@ -43,17 +43,18 @@ Environment variables:
   depmode     Dependency tracking mode.
   source      Source file read by `PROGRAMS ARGS'.
   object      Object file output by `PROGRAMS ARGS'.
+  DEPDIR      directory where to store dependencies.
   depfile     Dependency file to output.
   tmpdepfile  Temporary file to use when outputing dependencies.
   libtool     Whether libtool is used (yes/no).
 
 Report bugs to <bug-automake@gnu.org>.
 EOF
-    exit 0
+    exit $?
     ;;
   -v | --v*)
     echo "depcomp $scriptversion"
-    exit 0
+    exit $?
     ;;
 esac
 
@@ -61,18 +62,10 @@ if test -z "$depmode" || test -z "$source" || test -z "$object"; then
   echo "depcomp: Variables source, object and depmode must be set" 1>&2
   exit 1
 fi
-# `libtool' can also be set to `yes' or `no'.
-
-if test -z "$depfile"; then
-   base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
-   dir=`echo "$object" | sed 's,/.*$,/,'`
-   if test "$dir" = "$object"; then
-      dir=
-   fi
-   # FIXME: should be _deps on DOS.
-   depfile="$dir.deps/$base"
-fi
 
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
 tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
 
 rm -f "$tmpdepfile"
@@ -294,33 +287,43 @@ tru64)
    base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
 
    if test "$libtool" = yes; then
-      # Dependencies are output in .lo.d with libtool 1.4.
-      # They are output in .o.d with libtool 1.5.
-      tmpdepfile1="$dir.libs/$base.lo.d"
-      tmpdepfile2="$dir.libs/$base.o.d"
-      tmpdepfile3="$dir.libs/$base.d"
+      # With Tru64 cc, shared objects can also be used to make a
+      # static library.  This mecanism is used in libtool 1.4 series to
+      # handle both shared and static libraries in a single compilation.
+      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+      #
+      # With libtool 1.5 this exception was removed, and libtool now
+      # generates 2 separate objects for the 2 libraries.  These two
+      # compilations output dependencies in in $dir.libs/$base.o.d and
+      # in $dir$base.o.d.  We have to check for both files, because
+      # one of the two compilations can be disabled.  We should prefer
+      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+      # automatically cleaned when .libs/ is deleted, while ignoring
+      # the former would cause a distcleancheck panic.
+      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
+      tmpdepfile2=$dir$base.o.d          # libtool 1.5
+      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
+      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
       "$@" -Wc,-MD
    else
-      tmpdepfile1="$dir$base.o.d"
-      tmpdepfile2="$dir$base.d"
-      tmpdepfile3="$dir$base.d"
+      tmpdepfile1=$dir$base.o.d
+      tmpdepfile2=$dir$base.d
+      tmpdepfile3=$dir$base.d
+      tmpdepfile4=$dir$base.d
       "$@" -MD
    fi
 
    stat=$?
    if test $stat -eq 0; then :
    else
-      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
       exit $stat
    fi
 
-   if test -f "$tmpdepfile1"; then
-      tmpdepfile="$tmpdepfile1"
-   elif test -f "$tmpdepfile2"; then
-      tmpdepfile="$tmpdepfile2"
-   else
-      tmpdepfile="$tmpdepfile3"
-   fi
+   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+   do
+     test -f "$tmpdepfile" && break
+   done
    if test -f "$tmpdepfile"; then
       sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
       # That's a tab and a space in the [].
diff --git a/distrib/Makefile.am b/distrib/Makefile.am
new file mode 100644 (file)
index 0000000..2ff8c4e
--- /dev/null
@@ -0,0 +1,83 @@
+## $Id: Makefile.am,v 1.26 2005/07/03 22:40:43 ensc Exp $
+
+## Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+##  
+## 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; version 2 of the License.
+##  
+## 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.
+
+confdir =              $(sysconfdir)/vservers
+defaultsdir =          $(pkglibdir)/defaults
+distribdir =           $(pkglibdir)/distributions
+confdistribdir =       $(confdir)/.distributions
+confdefaultsdir =      $(confdir)/.defaults
+
+defaults_DATA =                misc/debootstrap.uri \
+                       misc/fstab \
+                       misc/mtab \
+                       misc/vprocunhide-files \
+                       misc/vunify-exclude
+
+nobase_distrib_SCRIPTS =  redhat/initpost \
+                          redhat/initpre \
+                          redhat/rc.sysinit
+
+nobase_distrib_DATA    =  defaults/devs \
+                          defaults/apt.conf \
+                          defaults/rpm/macros \
+                          defaults/apt/apt.conf \
+                          template/initpost template/initpre \
+                          rh9/apt/rpmpriorities    rh9/pkgs/01    rh9/pkgs/02 \
+                          fc1/apt/rpmpriorities    fc1/pkgs/01    fc1/pkgs/02 \
+                          fc2/apt/rpmpriorities    fc2/pkgs/01    fc2/pkgs/02 \
+                          fc3/apt/rpmpriorities    fc3/pkgs/01    fc3/pkgs/02    fc3/pkgs/03 \
+                          fc3/yum/yum.conf $(wildcard fc3/yum.repos.d/fedora*.repo) \
+                          $(wildcard fc3/rpmlist.d/*.lst) $(wildcard fc3/rpmlist.d/*.opt) \
+                          fc4/apt/rpmpriorities    fc4/pkgs/01    fc4/pkgs/02    fc4/pkgs/03 \
+                          fc4/yum/yum.conf $(wildcard fc4/yum.repos.d/fedora*.repo) \
+                          $(wildcard fc4/rpmlist.d/*.lst) $(wildcard fc4/rpmlist.d/*.opt) \
+                          suse91/apt/rpmpriorities suse91/pkgs/01 suse91/pkgs/02 \
+                          suse91/rpm/macros
+
+nobase_confdistrib_DATA        =  rh9/apt/sources.list \
+                          fc1/apt/sources.list \
+                          fc2/apt/sources.list \
+                          fc3/apt/sources.list \
+                          fc4/apt/sources.list \
+                          suse91/apt/sources.list
+
+AM_INSTALLCHECK_STD_OPTIONS_EXEMPT \
+                       =  $(nobase_distrib_SCRIPTS)
+
+EXTRA_DIST             =  $(nobase_distrib_DATA) \
+                          $(nobase_distrib_SCRIPTS) \
+                          $(nobase_confdistrib_DATA) \
+                          $(defaults_DATA)
+
+redhat_style           =  rh9 fc1 fc2 fc3 fc4
+
+install-exec-hook:     install-notify-xtra
+install-data-hook:     install-data-xtras
+
+install-data-xtras:
+                       l="$(redhat_style)"; for i in $$l; do \
+                               ln -sf ../redhat/initpost $(DESTDIR)$(distribdir)/$$i/ && \
+                               ln -sf ../redhat/initpre  $(DESTDIR)$(distribdir)/$$i/; \
+                       done
+                       $(mkinstalldirs) $(DESTDIR)$(confdir) \
+                               $(DESTDIR)$(confdistribdir)/.common/pubkeys \
+                               $(DESTDIR)$(confdefaultsdir) \
+                               $(DESTDIR)$(confdefaultsdir)/apps/vunify/hash \
+                               $(DESTDIR)$(confdefaultsdir)/files
+
+
+include $(top_srcdir)/m4/install-notify.am
diff --git a/distrib/Makefile.in b/distrib/Makefile.in
new file mode 100644 (file)
index 0000000..fdc46bb
--- /dev/null
@@ -0,0 +1,610 @@
+# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  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@
+
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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@
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(top_srcdir)/m4/install-notify.am
+subdir = distrib
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/ensc_cflags.m4 \
+       $(top_srcdir)/m4/ensc_changelog.m4 \
+       $(top_srcdir)/m4/ensc_cxxcompiler.m4 \
+       $(top_srcdir)/m4/ensc_dietlibc.m4 \
+       $(top_srcdir)/m4/ensc_dietlibc_compat.m4 \
+       $(top_srcdir)/m4/ensc_e2fscheck.m4 \
+       $(top_srcdir)/m4/ensc_initrddir.m4 \
+       $(top_srcdir)/m4/ensc_kerneldir.m4 \
+       $(top_srcdir)/m4/ensc_pathprog.m4 \
+       $(top_srcdir)/m4/ensc_personality.m4 \
+       $(top_srcdir)/m4/ensc_release.m4 \
+       $(top_srcdir)/m4/ensc_syscall.m4 \
+       $(top_srcdir)/m4/ensc_syscallnr.m4 \
+       $(top_srcdir)/m4/ensc_uv_vrootdir.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(distribdir)" "$(DESTDIR)$(defaultsdir)" \
+       "$(DESTDIR)$(confdistribdir)" "$(DESTDIR)$(distribdir)"
+nobase_distribSCRIPT_INSTALL = $(install_sh_SCRIPT)
+SCRIPTS = $(nobase_distrib_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+defaultsDATA_INSTALL = $(INSTALL_DATA)
+nobase_confdistribDATA_INSTALL = $(install_sh_DATA)
+nobase_distribDATA_INSTALL = $(install_sh_DATA)
+DATA = $(defaults_DATA) $(nobase_confdistrib_DATA) \
+       $(nobase_distrib_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAT = @CAT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHOWN = @CHOWN@
+CMP = @CMP@
+CP = @CP@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CVS2CL = @CVS2CL@
+CVS2CL_TAG = @CVS2CL_TAG@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DIET = @DIET@
+DIETFLAGS = @DIETFLAGS@
+DIRNAME = @DIRNAME@
+DOXYGEN = @DOXYGEN@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE = @ENSC_CAN_BEECRYPT_WITH_DIETLIBC_FALSE@
+ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE = @ENSC_CAN_BEECRYPT_WITH_DIETLIBC_TRUE@
+ENSC_ENABLE_INTERNAL_HEADERS_FALSE = @ENSC_ENABLE_INTERNAL_HEADERS_FALSE@
+ENSC_ENABLE_INTERNAL_HEADERS_TRUE = @ENSC_ENABLE_INTERNAL_HEADERS_TRUE@
+ENSC_HAVE_BEECRYPT_FALSE = @ENSC_HAVE_BEECRYPT_FALSE@
+ENSC_HAVE_BEECRYPT_TRUE = @ENSC_HAVE_BEECRYPT_TRUE@
+ENSC_HAVE_C99_COMPILER_FALSE = @ENSC_HAVE_C99_COMPILER_FALSE@
+ENSC_HAVE_C99_COMPILER_TRUE = @ENSC_HAVE_C99_COMPILER_TRUE@
+ENSC_HAVE_CXX_COMPILER_FALSE = @ENSC_HAVE_CXX_COMPILER_FALSE@
+ENSC_HAVE_CXX_COMPILER_TRUE = @ENSC_HAVE_CXX_COMPILER_TRUE@
+ENSC_PATHPROG_SED = @ENSC_PATHPROG_SED@
+ENSC_USE_DIETLIBC_FALSE = @ENSC_USE_DIETLIBC_FALSE@
+ENSC_USE_DIETLIBC_TRUE = @ENSC_USE_DIETLIBC_TRUE@
+ENSC_USE_EXPENSIVE_TESTS = @ENSC_USE_EXPENSIVE_TESTS@
+ENSC_USE_GLIBC_FALSE = @ENSC_USE_GLIBC_FALSE@
+ENSC_USE_GLIBC_TRUE = @ENSC_USE_GLIBC_TRUE@
+ENV = @ENV@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GPG_KEY = @GPG_KEY@
+GREP = @GREP@
+HAVE_CVS2CL_FALSE = @HAVE_CVS2CL_FALSE@
+HAVE_CVS2CL_TRUE = @HAVE_CVS2CL_TRUE@
+HAVE_RCS2LOG_FALSE = @HAVE_RCS2LOG_FALSE@
+HAVE_RCS2LOG_TRUE = @HAVE_RCS2LOG_TRUE@
+HAVE_XSLTPROC_FALSE = @HAVE_XSLTPROC_FALSE@
+HAVE_XSLTPROC_TRUE = @HAVE_XSLTPROC_TRUE@
+HAVE_XSLTP_FALSE = @HAVE_XSLTP_FALSE@
+HAVE_XSLTP_TRUE = @HAVE_XSLTP_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+IP = @IP@
+IPTABLES = @IPTABLES@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIB_DEBUG_CPPFLAGS = @LIB_DEBUG_CPPFLAGS@
+LN = @LN@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKDIR = @MKDIR@
+MKFIFO = @MKFIFO@
+MKTEMP = @MKTEMP@
+MODPROBE = @MODPROBE@
+MOUNT = @MOUNT@
+MV = @MV@
+NAMEIF = @NAMEIF@
+NICE = @NICE@
+NOHUP = @NOHUP@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PS = @PS@
+RANLIB = @RANLIB@
+RCS2LOG = @RCS2LOG@
+RELEASE_CPPFLAGS = @RELEASE_CPPFLAGS@
+RM = @RM@
+RMDIR = @RMDIR@
+RMMOD = @RMMOD@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SH = @SH@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TAC = @TAC@
+TAR = @TAR@
+TOUCH = @TOUCH@
+TTY = @TTY@
+UMOUNT = @UMOUNT@
+USE_DIETLIBC_COMPAT_FALSE = @USE_DIETLIBC_COMPAT_FALSE@
+USE_DIETLIBC_COMPAT_TRUE = @USE_DIETLIBC_COMPAT_TRUE@
+USE_DIETLIBC_FALSE = @USE_DIETLIBC_FALSE@
+USE_DIETLIBC_TRUE = @USE_DIETLIBC_TRUE@
+VCONFIG = @VCONFIG@
+VERSION = @VERSION@
+WC = @WC@
+WGET = @WGET@
+XSLTP = @XSLTP@
+XSLTPROC = @XSLTPROC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+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@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+initrddir = @initrddir@
+install_sh = @install_sh@
+kernelincludedir = @kernelincludedir@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+vserverdir = @vserverdir@
+confdir = $(sysconfdir)/vservers
+defaultsdir = $(pkglibdir)/defaults
+distribdir = $(pkglibdir)/distributions
+confdistribdir = $(confdir)/.distributions
+confdefaultsdir = $(confdir)/.defaults
+defaults_DATA = misc/debootstrap.uri \
+                       misc/fstab \
+                       misc/mtab \
+                       misc/vprocunhide-files \
+                       misc/vunify-exclude
+
+nobase_distrib_SCRIPTS = redhat/initpost \
+                          redhat/initpre \
+                          redhat/rc.sysinit
+
+nobase_distrib_DATA = defaults/devs \
+                          defaults/apt.conf \
+                          defaults/rpm/macros \
+                          defaults/apt/apt.conf \
+                          template/initpost template/initpre \
+                          rh9/apt/rpmpriorities    rh9/pkgs/01    rh9/pkgs/02 \
+                          fc1/apt/rpmpriorities    fc1/pkgs/01    fc1/pkgs/02 \
+                          fc2/apt/rpmpriorities    fc2/pkgs/01    fc2/pkgs/02 \
+                          fc3/apt/rpmpriorities    fc3/pkgs/01    fc3/pkgs/02    fc3/pkgs/03 \
+                          fc3/yum/yum.conf $(wildcard fc3/yum.repos.d/fedora*.repo) \
+                          $(wildcard fc3/rpmlist.d/*.lst) $(wildcard fc3/rpmlist.d/*.opt) \
+                          fc4/apt/rpmpriorities    fc4/pkgs/01    fc4/pkgs/02    fc4/pkgs/03 \
+                          fc4/yum/yum.conf $(wildcard fc4/yum.repos.d/fedora*.repo) \
+                          $(wildcard fc4/rpmlist.d/*.lst) $(wildcard fc4/rpmlist.d/*.opt) \
+                          suse91/apt/rpmpriorities suse91/pkgs/01 suse91/pkgs/02 \
+                          suse91/rpm/macros
+
+nobase_confdistrib_DATA = rh9/apt/sources.list \
+                          fc1/apt/sources.list \
+                          fc2/apt/sources.list \
+                          fc3/apt/sources.list \
+                          fc4/apt/sources.list \
+                          suse91/apt/sources.list
+
+EXTRA_DIST = $(nobase_distrib_DATA) \
+                          $(nobase_distrib_SCRIPTS) \
+                          $(nobase_confdistrib_DATA) \
+                          $(defaults_DATA)
+
+redhat_style = rh9 fc1 fc2 fc3 fc4
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/m4/install-notify.am $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+               && exit 0; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits  distrib/Makefile'; \
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnits  distrib/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-nobase_distribSCRIPTS: $(nobase_distrib_SCRIPTS)
+       @$(NORMAL_INSTALL)
+       test -z "$(distribdir)" || $(mkdir_p) "$(DESTDIR)$(distribdir)"
+       @$(am__vpath_adj_setup) \
+       list='$(nobase_distrib_SCRIPTS)'; for p in $$list; do \
+         $(am__vpath_adj) p=$$f; \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         if test -f $$d$$p; then \
+           f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+           f=`echo "$$p" | sed 's|[^/]*$$||'`"$$f"; \
+           echo " $(nobase_distribSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(distribdir)/$$f'"; \
+           $(nobase_distribSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(distribdir)/$$f"; \
+         else :; fi; \
+       done
+
+uninstall-nobase_distribSCRIPTS:
+       @$(NORMAL_UNINSTALL)
+       @$(am__vpath_adj_setup) \
+       list='$(nobase_distrib_SCRIPTS)'; for p in $$list; do \
+         $(am__vpath_adj) p=$$f; \
+         f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+         f=`echo "$$p" | sed 's|[^/]*$$||'`"$$f"; \
+         echo " rm -f '$(DESTDIR)$(distribdir)/$$f'"; \
+         rm -f "$(DESTDIR)$(distribdir)/$$f"; \
+       done
+
+installcheck-nobase_distribSCRIPTS: $(nobase_distrib_SCRIPTS)
+       bad=0; pid=$$$$; list="$(nobase_distrib_SCRIPTS)"; for p in $$list; do \
+         case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \
+          *" $$p "* | *" $(srcdir)/$$p "*) continue;; \
+         esac; \
+         f=`echo "$$p" | sed 's,^.*/,,;$(transform)'`; \
+         f=`echo "$$p" | sed 's|[^/]*$$||'`"$$f"; \
+         for opt in --help --version; do \
+           if "$(DESTDIR)$(distribdir)/$$f" $$opt >c$${pid}_.out \
+                2>c$${pid}_.err </dev/null \
+                && test -n "`cat c$${pid}_.out`" \
+                && test -z "`cat c$${pid}_.err`"; then :; \
+           else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \
+         done; \
+       done; rm -f c$${pid}_.???; exit $$bad
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+install-defaultsDATA: $(defaults_DATA)
+       @$(NORMAL_INSTALL)
+       test -z "$(defaultsdir)" || $(mkdir_p) "$(DESTDIR)$(defaultsdir)"
+       @list='$(defaults_DATA)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         f=$(am__strip_dir) \
+         echo " $(defaultsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(defaultsdir)/$$f'"; \
+         $(defaultsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(defaultsdir)/$$f"; \
+       done
+
+uninstall-defaultsDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(defaults_DATA)'; for p in $$list; do \
+         f=$(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(defaultsdir)/$$f'"; \
+         rm -f "$(DESTDIR)$(defaultsdir)/$$f"; \
+       done
+install-nobase_confdistribDATA: $(nobase_confdistrib_DATA)
+       @$(NORMAL_INSTALL)
+       test -z "$(confdistribdir)" || $(mkdir_p) "$(DESTDIR)$(confdistribdir)"
+       @$(am__vpath_adj_setup) \
+       list='$(nobase_confdistrib_DATA)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         $(am__vpath_adj) \
+         echo " $(nobase_confdistribDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(confdistribdir)/$$f'"; \
+         $(nobase_confdistribDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(confdistribdir)/$$f"; \
+       done
+
+uninstall-nobase_confdistribDATA:
+       @$(NORMAL_UNINSTALL)
+       @$(am__vpath_adj_setup) \
+       list='$(nobase_confdistrib_DATA)'; for p in $$list; do \
+         $(am__vpath_adj) \
+         echo " rm -f '$(DESTDIR)$(confdistribdir)/$$f'"; \
+         rm -f "$(DESTDIR)$(confdistribdir)/$$f"; \
+       done
+install-nobase_distribDATA: $(nobase_distrib_DATA)
+       @$(NORMAL_INSTALL)
+       test -z "$(distribdir)" || $(mkdir_p) "$(DESTDIR)$(distribdir)"
+       @$(am__vpath_adj_setup) \
+       list='$(nobase_distrib_DATA)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         $(am__vpath_adj) \
+         echo " $(nobase_distribDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(distribdir)/$$f'"; \
+         $(nobase_distribDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(distribdir)/$$f"; \
+       done
+
+uninstall-nobase_distribDATA:
+       @$(NORMAL_UNINSTALL)
+       @$(am__vpath_adj_setup) \
+       list='$(nobase_distrib_DATA)'; for p in $$list; do \
+         $(am__vpath_adj) \
+         echo " rm -f '$(DESTDIR)$(distribdir)/$$f'"; \
+         rm -f "$(DESTDIR)$(distribdir)/$$f"; \
+       done
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+       $(mkdir_p) $(distdir)/../m4 $(distdir)/defaults $(distdir)/defaults/apt $(distdir)/defaults/rpm $(distdir)/fc1/apt $(distdir)/fc1/pkgs $(distdir)/fc2/apt $(distdir)/fc2/pkgs $(distdir)/fc3/apt $(distdir)/fc3/pkgs $(distdir)/fc3/rpmlist.d $(distdir)/fc3/yum $(distdir)/fc3/yum.repos.d $(distdir)/fc4/apt $(distdir)/fc4/pkgs $(distdir)/fc4/rpmlist.d $(distdir)/fc4/yum $(distdir)/fc4/yum.repos.d $(distdir)/misc $(distdir)/redhat $(distdir)/rh9/apt $(distdir)/rh9/pkgs $(distdir)/suse91/apt $(distdir)/suse91/pkgs $(distdir)/suse91/rpm $(distdir)/template
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkdir_p) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(SCRIPTS) $(DATA)
+installdirs:
+       for dir in "$(DESTDIR)$(distribdir)" "$(DESTDIR)$(defaultsdir)" "$(DESTDIR)$(confdistribdir)" "$(DESTDIR)$(distribdir)"; do \
+         test -z "$$dir" || $(mkdir_p) "$$dir"; \
+       done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+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)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-defaultsDATA install-nobase_confdistribDATA \
+       install-nobase_distribDATA install-nobase_distribSCRIPTS
+       @$(NORMAL_INSTALL)
+       $(MAKE) $(AM_MAKEFLAGS) install-data-hook
+
+install-exec-am:
+       @$(NORMAL_INSTALL)
+       $(MAKE) $(AM_MAKEFLAGS) install-exec-hook
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am: installcheck-nobase_distribSCRIPTS
+
+maintainer-clean: maintainer-clean-am
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-defaultsDATA uninstall-info-am \
+       uninstall-nobase_confdistribDATA uninstall-nobase_distribDATA \
+       uninstall-nobase_distribSCRIPTS
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+       distclean distclean-generic distclean-libtool distdir dvi \
+       dvi-am html html-am info info-am install install-am \
+       install-data install-data-am install-data-hook \
+       install-defaultsDATA install-exec install-exec-am \
+       install-exec-hook install-info install-info-am install-man \
+       install-nobase_confdistribDATA install-nobase_distribDATA \
+       install-nobase_distribSCRIPTS install-strip installcheck \
+       installcheck-am installcheck-nobase_distribSCRIPTS installdirs \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       uninstall uninstall-am uninstall-defaultsDATA \
+       uninstall-info-am uninstall-nobase_confdistribDATA \
+       uninstall-nobase_distribDATA uninstall-nobase_distribSCRIPTS
+
+
+AM_INSTALLCHECK_STD_OPTIONS_EXEMPT \
+                       =  $(nobase_distrib_SCRIPTS)
+
+install-exec-hook:     install-notify-xtra
+install-data-hook:     install-data-xtras
+
+install-data-xtras:
+                       l="$(redhat_style)"; for i in $$l; do \
+                               ln -sf ../redhat/initpost $(DESTDIR)$(distribdir)/$$i/ && \
+                               ln -sf ../redhat/initpre  $(DESTDIR)$(distribdir)/$$i/; \
+                       done
+                       $(mkinstalldirs) $(DESTDIR)$(confdir) \
+                               $(DESTDIR)$(confdistribdir)/.common/pubkeys \
+                               $(DESTDIR)$(confdefaultsdir) \
+                               $(DESTDIR)$(confdefaultsdir)/apps/vunify/hash \
+                               $(DESTDIR)$(confdefaultsdir)/files
+
+install-exec-hook install-data-hook:   install-notify-xtra
+
+install-notify-xtra:
+               @echo
+               @echo
+               @echo '***************************'
+               @echo '*'
+               @echo '* NOTE: a plain "make install" installs only the files under $$(prefix)'
+               @echo '*       which might be insufficient. To complete the installation,'
+               @echo '*       "make install-distribution" should be executed. See README,'
+               @echo '*       "Notes for distributors" for details.'
+               @echo '*'
+               @echo '***************************'
+               @echo
+               @echo
+
+.PHONY:                        install-notify-xtra
+# 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/distrib/defaults/apt.conf b/distrib/defaults/apt.conf
new file mode 100644 (file)
index 0000000..9fadb65
--- /dev/null
@@ -0,0 +1,3 @@
+RPM {
+       Ignore { "gpg-pubkey"; };
+}
diff --git a/distrib/defaults/apt/apt.conf b/distrib/defaults/apt/apt.conf
new file mode 100644 (file)
index 0000000..82255c0
--- /dev/null
@@ -0,0 +1,6 @@
+// Do not remove 'autogenerated' tags and keep them on an own line
+// which can be commented out
+
+Dir {
+       Etc     "@APTETCDIR@";          // @autogenerated@: APTETCDIR
+}
diff --git a/distrib/defaults/devs b/distrib/defaults/devs
new file mode 100644 (file)
index 0000000..641e9de
--- /dev/null
@@ -0,0 +1,7 @@
+null    c 1 3 666
+zero    c 1 5 666
+full    c 1 7 666
+random  c 1 8 644
+urandom c 1 9 644
+tty     c 5 0 666
+ptmx    c 5 2 666
diff --git a/distrib/defaults/rpm/macros b/distrib/defaults/rpm/macros
new file mode 100644 (file)
index 0000000..8bada0d
--- /dev/null
@@ -0,0 +1,4 @@
+# Because of https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=52725
+# you have to use at least one language beside 'C'
+%_install_langs                C:de:en:es:fr
+%_netsharedpath                /dev:/etc/rc.d/init.d/halt:/sbin/new-kernel-pkg:/usr/bin/rhgb-client
diff --git a/distrib/fc1/apt/rpmpriorities b/distrib/fc1/apt/rpmpriorities
new file mode 100644 (file)
index 0000000..f4a90e2
--- /dev/null
@@ -0,0 +1,7 @@
+Essential:
+  basesystem
+  coreutils
+  filesystem
+  glibc
+  setup
+  fedora-release
diff --git a/distrib/fc1/apt/sources.list b/distrib/fc1/apt/sources.list
new file mode 100644 (file)
index 0000000..8521209
--- /dev/null
@@ -0,0 +1,8 @@
+# rpm     http://ftp.ultra.csn.tu-chemnitz.de/pub/mirror/fedora/core/.apt      1/i386  os patches updates
+# rpm-src http://ftp.ultra.csn.tu-chemnitz.de/pub/mirror/fedora/core/.apt      1/i386  os patches updates
+
+# rpm  ftp://ftp.ussg.iu.edu/pub/linux/fedora/fedora/fedora                    1/i386  os updates
+# rpm  ftp://ftp.tu-chemnitz.de/pub/linux/fedora/fedora                        1/i386  os updates
+# rpm  http://mirrors.usc.edu/pub/linux/fedora/fedora                          1/i386  os updates
+# rpm  http://sunsite.informatik.rwth-aachen.de/ftp/pub/Linux/fedora/fedora    1/i386  os updates
+# rpm  http://download.fedora.us/fedora/fedora                                 1/i386  os updates
diff --git a/distrib/fc1/pkgs/01 b/distrib/fc1/pkgs/01
new file mode 100644 (file)
index 0000000..1a5ef72
--- /dev/null
@@ -0,0 +1 @@
+glibc
diff --git a/distrib/fc1/pkgs/02 b/distrib/fc1/pkgs/02
new file mode 100644 (file)
index 0000000..9ec5d2b
--- /dev/null
@@ -0,0 +1,3 @@
+--reinstall
+
+filesystem
diff --git a/distrib/fc2/apt/rpmpriorities b/distrib/fc2/apt/rpmpriorities
new file mode 100644 (file)
index 0000000..f4a90e2
--- /dev/null
@@ -0,0 +1,7 @@
+Essential:
+  basesystem
+  coreutils
+  filesystem
+  glibc
+  setup
+  fedora-release
diff --git a/distrib/fc2/apt/sources.list b/distrib/fc2/apt/sources.list
new file mode 100644 (file)
index 0000000..36753b5
--- /dev/null
@@ -0,0 +1,8 @@
+# rpm     http://ftp.ultra.csn.tu-chemnitz.de/pub/mirror/fedora/core/.apt      2/i386  os patches updates
+# rpm-src http://ftp.ultra.csn.tu-chemnitz.de/pub/mirror/fedora/core/.apt      2/i386  os patches updates
+
+# rpm  ftp://ftp.ussg.iu.edu/pub/linux/fedora/fedora/fedora                    2/i386  os updates
+# rpm  ftp://ftp.tu-chemnitz.de/pub/linux/fedora/fedora                        2/i386  os updates
+# rpm  http://mirrors.usc.edu/pub/linux/fedora/fedora/fedora                   2/i386  os updates
+# rpm  http://sunsite.informatik.rwth-aachen.de/ftp/pub/Linux/fedora/fedora    2/i386  os updates
+# rpm  http://download.fedora.us/fedora/fedora                                 2/i386  os updates
diff --git a/distrib/fc2/pkgs/01 b/distrib/fc2/pkgs/01
new file mode 100644 (file)
index 0000000..1a5ef72
--- /dev/null
@@ -0,0 +1 @@
+glibc
diff --git a/distrib/fc2/pkgs/02 b/distrib/fc2/pkgs/02
new file mode 100644 (file)
index 0000000..9ec5d2b
--- /dev/null
@@ -0,0 +1,3 @@
+--reinstall
+
+filesystem
diff --git a/distrib/fc3/apt/rpmpriorities b/distrib/fc3/apt/rpmpriorities
new file mode 100644 (file)
index 0000000..f4a90e2
--- /dev/null
@@ -0,0 +1,7 @@
+Essential:
+  basesystem
+  coreutils
+  filesystem
+  glibc
+  setup
+  fedora-release
diff --git a/distrib/fc3/apt/sources.list b/distrib/fc3/apt/sources.list
new file mode 100644 (file)
index 0000000..b833d31
--- /dev/null
@@ -0,0 +1,7 @@
+# rpm     http://ftp.ultra.csn.tu-chemnitz.de/pub/mirror/fedora/core/.apt      3/i386  os patches updates
+
+# rpm  ftp://ftp.ussg.iu.edu/pub/linux/fedora/fedora/fedora                    3/i386  os updates
+# rpm  ftp://ftp.tu-chemnitz.de/pub/linux/fedora/fedora                        3/i386  os updates
+# rpm  http://mirrors.usc.edu/pub/linux/fedora/fedora/fedora                   3/i386  os updates
+# rpm  http://sunsite.informatik.rwth-aachen.de/ftp/pub/Linux/fedora/fedora    3/i386  os updates
+# rpm  http://download.fedora.us/fedora/fedora                                 3/i386  os updates
diff --git a/distrib/fc3/pkgs/01 b/distrib/fc3/pkgs/01
new file mode 100644 (file)
index 0000000..1a5ef72
--- /dev/null
@@ -0,0 +1 @@
+glibc
diff --git a/distrib/fc3/pkgs/02 b/distrib/fc3/pkgs/02
new file mode 100644 (file)
index 0000000..9ec5d2b
--- /dev/null
@@ -0,0 +1,3 @@
+--reinstall
+
+filesystem
diff --git a/distrib/fc3/pkgs/03 b/distrib/fc3/pkgs/03
new file mode 100644 (file)
index 0000000..64ab4a7
--- /dev/null
@@ -0,0 +1,2 @@
+coreutils
+setup
diff --git a/distrib/fc3/rpmlist.d/00.lst b/distrib/fc3/rpmlist.d/00.lst
new file mode 100644 (file)
index 0000000..85a9617
--- /dev/null
@@ -0,0 +1,7 @@
+basesystem-*.rpm
+filesystem-*.rpm
+glibc-common-*.rpm
+glibc-[0-9]*.rpm
+libgcc-[0-9]*.rpm
+setup-*.rpm
+tzdata-*.rpm
diff --git a/distrib/fc3/yum.repos.d/fedora-devel.repo b/distrib/fc3/yum.repos.d/fedora-devel.repo
new file mode 100644 (file)
index 0000000..fbd4edf
--- /dev/null
@@ -0,0 +1,5 @@
+[development]
+name=Fedora Core 3 - Development Tree
+#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/development/$basearch/
+mirrorlist=http://fedora.redhat.com/download/mirrors/fedora-core-rawhide
+enabled=0
diff --git a/distrib/fc3/yum.repos.d/fedora-updates-testing.repo b/distrib/fc3/yum.repos.d/fedora-updates-testing.repo
new file mode 100644 (file)
index 0000000..f8e7cc4
--- /dev/null
@@ -0,0 +1,6 @@
+[updates-testing]
+name=Fedora Core 3 - $basearch - Test Updates
+#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/updates/testing/3/$basearch/
+mirrorlist=http://fedora.redhat.com/download/mirrors/updates-testing-fc3
+enabled=0
+gpgcheck=1
diff --git a/distrib/fc3/yum.repos.d/fedora-updates.repo b/distrib/fc3/yum.repos.d/fedora-updates.repo
new file mode 100644 (file)
index 0000000..086a6b0
--- /dev/null
@@ -0,0 +1,6 @@
+[updates-released]
+name=Fedora Core 3 - $basearch - Released Updates
+#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/updates/3/$basearch/
+mirrorlist=http://fedora.redhat.com/download/mirrors/updates-released-fc3
+enabled=1
+gpgcheck=1
diff --git a/distrib/fc3/yum.repos.d/fedora.repo b/distrib/fc3/yum.repos.d/fedora.repo
new file mode 100644 (file)
index 0000000..f4ba735
--- /dev/null
@@ -0,0 +1,6 @@
+[base]
+name=Fedora Core 3 - $basearch - Base
+#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/3/$basearch/os/
+mirrorlist=http://fedora.redhat.com/download/mirrors/fedora-core-3
+enabled=1
+gpgcheck=1
diff --git a/distrib/fc3/yum/yum.conf b/distrib/fc3/yum/yum.conf
new file mode 100644 (file)
index 0000000..814df15
--- /dev/null
@@ -0,0 +1,8 @@
+[main]
+cachedir=@YUMCACHEDIR@
+reposdir=@YUMETCDIR@/yum.repos.d
+debuglevel=1
+logfile=@YUMLOGDIR@/log
+lockfile=@YUMLOCKDIR@/yum.pid
+pkgpolicy=newest
+distroverpkg=fedora-release
diff --git a/distrib/fc4/apt/rpmpriorities b/distrib/fc4/apt/rpmpriorities
new file mode 100644 (file)
index 0000000..f4a90e2
--- /dev/null
@@ -0,0 +1,7 @@
+Essential:
+  basesystem
+  coreutils
+  filesystem
+  glibc
+  setup
+  fedora-release
diff --git a/distrib/fc4/apt/sources.list b/distrib/fc4/apt/sources.list
new file mode 100644 (file)
index 0000000..b833d31
--- /dev/null
@@ -0,0 +1,7 @@
+# rpm     http://ftp.ultra.csn.tu-chemnitz.de/pub/mirror/fedora/core/.apt      3/i386  os patches updates
+
+# rpm  ftp://ftp.ussg.iu.edu/pub/linux/fedora/fedora/fedora                    3/i386  os updates
+# rpm  ftp://ftp.tu-chemnitz.de/pub/linux/fedora/fedora                        3/i386  os updates
+# rpm  http://mirrors.usc.edu/pub/linux/fedora/fedora/fedora                   3/i386  os updates
+# rpm  http://sunsite.informatik.rwth-aachen.de/ftp/pub/Linux/fedora/fedora    3/i386  os updates
+# rpm  http://download.fedora.us/fedora/fedora                                 3/i386  os updates
diff --git a/distrib/fc4/pkgs/01 b/distrib/fc4/pkgs/01
new file mode 100644 (file)
index 0000000..1a5ef72
--- /dev/null
@@ -0,0 +1 @@
+glibc
diff --git a/distrib/fc4/pkgs/02 b/distrib/fc4/pkgs/02
new file mode 100644 (file)
index 0000000..9ec5d2b
--- /dev/null
@@ -0,0 +1,3 @@
+--reinstall
+
+filesystem
diff --git a/distrib/fc4/pkgs/03 b/distrib/fc4/pkgs/03
new file mode 100644 (file)
index 0000000..64ab4a7
--- /dev/null
@@ -0,0 +1,2 @@
+coreutils
+setup
diff --git a/distrib/fc4/rpmlist.d/00.lst b/distrib/fc4/rpmlist.d/00.lst
new file mode 100644 (file)
index 0000000..85a9617
--- /dev/null
@@ -0,0 +1,7 @@
+basesystem-*.rpm
+filesystem-*.rpm
+glibc-common-*.rpm
+glibc-[0-9]*.rpm
+libgcc-[0-9]*.rpm
+setup-*.rpm
+tzdata-*.rpm
diff --git a/distrib/fc4/yum.repos.d/fedora-devel.repo b/distrib/fc4/yum.repos.d/fedora-devel.repo
new file mode 100644 (file)
index 0000000..997ffe8
--- /dev/null
@@ -0,0 +1,5 @@
+[development]
+name=Fedora Core 4 - Development Tree
+#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/development/$basearch/
+mirrorlist=http://fedora.redhat.com/download/mirrors/fedora-core-rawhide
+enabled=0
diff --git a/distrib/fc4/yum.repos.d/fedora-updates-testing.repo b/distrib/fc4/yum.repos.d/fedora-updates-testing.repo
new file mode 100644 (file)
index 0000000..d5edd0f
--- /dev/null
@@ -0,0 +1,6 @@
+[updates-testing]
+name=Fedora Core 4 - $basearch - Test Updates
+#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/updates/testing/4/$basearch/
+mirrorlist=http://fedora.redhat.com/download/mirrors/updates-testing-fc4
+enabled=0
+gpgcheck=1
diff --git a/distrib/fc4/yum.repos.d/fedora-updates.repo b/distrib/fc4/yum.repos.d/fedora-updates.repo
new file mode 100644 (file)
index 0000000..0df7d1a
--- /dev/null
@@ -0,0 +1,6 @@
+[updates-released]
+name=Fedora Core 4 - $basearch - Released Updates
+#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/updates/4/$basearch/
+mirrorlist=http://fedora.redhat.com/download/mirrors/updates-released-fc4
+enabled=1
+gpgcheck=1
diff --git a/distrib/fc4/yum.repos.d/fedora.repo b/distrib/fc4/yum.repos.d/fedora.repo
new file mode 100644 (file)
index 0000000..9176ecd
--- /dev/null
@@ -0,0 +1,6 @@
+[base]
+name=Fedora Core 4 - $basearch - Base
+#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/4/$basearch/os/
+mirrorlist=http://fedora.redhat.com/download/mirrors/fedora-core-4
+enabled=1
+gpgcheck=1
diff --git a/distrib/fc4/yum/yum.conf b/distrib/fc4/yum/yum.conf
new file mode 100644 (file)
index 0000000..814df15
--- /dev/null
@@ -0,0 +1,8 @@
+[main]
+cachedir=@YUMCACHEDIR@
+reposdir=@YUMETCDIR@/yum.repos.d
+debuglevel=1
+logfile=@YUMLOGDIR@/log
+lockfile=@YUMLOCKDIR@/yum.pid
+pkgpolicy=newest
+distroverpkg=fedora-release
diff --git a/distrib/misc/debootstrap.uri b/distrib/misc/debootstrap.uri
new file mode 100644 (file)
index 0000000..0f64170
--- /dev/null
@@ -0,0 +1 @@
+http://ftp.debian.org/debian/pool/main/d/debootstrap/debootstrap_0.3.1.4_all.deb
diff --git a/distrib/misc/fstab b/distrib/misc/fstab
new file mode 100644 (file)
index 0000000..f78c798
--- /dev/null
@@ -0,0 +1,3 @@
+none   /proc           proc    defaults                0 0
+none   /tmp            tmpfs   size=16m,mode=1777      0 0
+none   /dev/pts        devpts  gid=5,mode=620          0 0
diff --git a/distrib/misc/mtab b/distrib/misc/mtab
new file mode 100644 (file)
index 0000000..e073bf6
--- /dev/null
@@ -0,0 +1 @@
+/dev/hdv1 / ufs defaults 0 0
diff --git a/distrib/misc/vprocunhide-files b/distrib/misc/vprocunhide-files
new file mode 100644 (file)
index 0000000..ec35834
--- /dev/null
@@ -0,0 +1,30 @@
+/proc/net/
+-/proc/net/rpc/
+/proc/sys/
+-/proc/sys/debug/
+-/proc/sys/dev/
+/proc/sysvipc/
+/proc/tty/
+/proc/cmdline
+/proc/cpuinfo
+/proc/crypto
+/proc/devices
+/proc/execdomains
+/proc/filesystems
+/proc/interrupts
+/proc/iomem
+/proc/ioports
+/proc/kcore
+/proc/kmsg
+/proc/ksyms
+/proc/loadavg
+/proc/locks
+/proc/meminfo
+/proc/misc
+/proc/modules
+/proc/pci
+/proc/slabinfo
+/proc/stat
+/proc/swaps
+/proc/uptime
+/proc/version
diff --git a/distrib/misc/vunify-exclude b/distrib/misc/vunify-exclude
new file mode 100644 (file)
index 0000000..79426a7
--- /dev/null
@@ -0,0 +1,26 @@
+/.rpmdb
+/dev
+~/etc/shadow
+~/etc/passwd
+~/etc/group
++/etc/termcap
++/etc/gconf
++/etc/gconf/schemas
+/etc/gconf/*
+/etc/*
+/home
+/proc
+/mnt
++/root/.ssh
+~/root/.ssh/id*
+-/root/.ssh/*
++/root/.gnupg
+~/root/.gnupg/secring*
+-/root/.gnupg/*
+-/root/*
+/selinux
+/sys
+~/tmp/*
+/tmp
+~/var/tmp/*
+/var
diff --git a/distrib/redhat/initpost b/distrib/redhat/initpost
new file mode 100755 (executable)
index 0000000..f281656
--- /dev/null
@@ -0,0 +1,80 @@
+#! /bin/bash
+
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+## HACK: this script is full of races...
+
+vdir=$1/vdir
+. "$2"
+
+function relink
+{
+    test ! -e "$2" -o -L "$2" || mv -f "$2"{,.orig}
+    ln -sf "$1" "$2"
+}
+
+## Usage: subst <file> <regexp>
+function subst
+{
+    tmp=$(mktemp /tmp/initpost-subst.XXXXXX)
+
+    case "$1" in
+       (/*|./*)        cat "$1";;
+       (*)             $_CHROOT_SH cat "$1";;
+    esac              | sed -e "$2"          >$tmp
+    cmp -s $tmp "$1" || $_CHROOT_SH truncate "$1" <$tmp
+
+    rm -f $tmp
+}
+
+pushd "$vdir"/etc/init.d &>/dev/null ||
+    pushd "$vdir"/etc/rc.d/init.d &>/dev/null || exit 1
+
+    for i in *; do
+       test -e "$i" || continue
+       case "$i" in
+           functions|halt|killall|single) ;;
+           syslog) ;;
+           *)
+               $_VSERVER ----insecure "$1" chkconfig "$i" off
+               ;;
+       esac
+    done
+
+    relink /bin/true halt
+popd >/dev/null
+
+pushd "$vdir"/sbin &>/dev/null
+    relink /bin/true new-kernel-pkg
+popd >/dev/null
+
+pushd "$vdir"/usr/bin &>/dev/null
+    relink /bin/true rhgb-client
+popd >/dev/null
+
+pushd "$vdir" &>/dev/null
+    echo 'NETWORKING=yes' | $_CHROOT_SH append /etc/sysconfig/network
+popd >/dev/null
+
+pushd "$vdir" &>/dev/null
+    : | $_CHROOT_SH truncate /etc/sysctl.conf
+    echo "none    /       none    defaults" | $_CHROOT_SH truncate /etc/fstab
+    cat "$__DISTRIBDIR"/redhat/rc.sysinit   | $_CHROOT_SH truncate /etc/rc.d/rc.sysinit.vserver
+    # TODO: remove race/symlink-attack
+    chmod +x etc/rc.d/rc.sysinit.vserver
+    subst etc/inittab 's!^\([^#].*:respawn:.* tty\)!#\1!;
+                      s!si::sysinit:/etc/rc.d/rc.sysinit!si::sysinit:/etc/rc.d/rc.sysinit.vserver!'
+popd >/dev/null
diff --git a/distrib/redhat/initpre b/distrib/redhat/initpre
new file mode 100755 (executable)
index 0000000..f1ffc88
--- /dev/null
@@ -0,0 +1,25 @@
+#! /bin/bash
+
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+vdir=$1/vdir
+. "$2"
+
+## Fix/workaround the misclassification of %_netsharedpath's parent directories
+mkdir -p "$vdir"/{etc/rc.d/init.d,/sbin,/usr/bin}
+
+## Workaround broken kernel %post scripts
+ln -s ../bin/true "$vdir"/sbin/new-kernel-pkg
diff --git a/distrib/redhat/rc.sysinit b/distrib/redhat/rc.sysinit
new file mode 100755 (executable)
index 0000000..6215cf6
--- /dev/null
@@ -0,0 +1,4 @@
+#! /bin/sh
+
+rm -f /var/lock/subsys/* /var/run/* /var/run/*/* 2>/dev/null
+true
diff --git a/distrib/rh9/apt/rpmpriorities b/distrib/rh9/apt/rpmpriorities
new file mode 100644 (file)
index 0000000..5ad6519
--- /dev/null
@@ -0,0 +1,7 @@
+Essential:
+  basesystem
+  coreutils
+  filesystem
+  glibc
+  setup
+  redhat-release
diff --git a/distrib/rh9/apt/sources.list b/distrib/rh9/apt/sources.list
new file mode 100644 (file)
index 0000000..e088e63
--- /dev/null
@@ -0,0 +1,7 @@
+# rpm     http://ftp.ultra.csn.tu-chemnitz.de/pub/mirror/RedHat/.apt   redhat/9        os errata
+# rpm-src http://ftp.ultra.csn.tu-chemnitz.de/pub/mirror/RedHat/.apt   redhat/9        os errata
+
+# rpm  ftp://ftp.tu-chemnitz.de/pub/linux/fedora/redhat                        9/i386  os updates
+# rpm  ftp://ftp.ussg.iu.edu/pub/linux/fedora/fedora/redhat                    9/i386  os updates
+# rpm  http://mirrors.usc.edu/pub/linux/fedora/redhat                          9/i386  os updates
+# rpm  http://sunsite.informatik.rwth-aachen.de/ftp/pub/Linux/fedora/redhat    9/i386  os updates
diff --git a/distrib/rh9/pkgs/01 b/distrib/rh9/pkgs/01
new file mode 100644 (file)
index 0000000..1a5ef72
--- /dev/null
@@ -0,0 +1 @@
+glibc
diff --git a/distrib/rh9/pkgs/02 b/distrib/rh9/pkgs/02
new file mode 100644 (file)
index 0000000..9ec5d2b
--- /dev/null
@@ -0,0 +1,3 @@
+--reinstall
+
+filesystem
diff --git a/distrib/suse91/apt/rpmpriorities b/distrib/suse91/apt/rpmpriorities
new file mode 100644 (file)
index 0000000..ed48a73
--- /dev/null
@@ -0,0 +1,2 @@
+Essential:
+       aaa_base
diff --git a/distrib/suse91/apt/sources.list b/distrib/suse91/apt/sources.list
new file mode 100644 (file)
index 0000000..ba6b5cc
--- /dev/null
@@ -0,0 +1 @@
+# rpm  http://ftp.tu-chemnitz.de/pub/linux/suse/apt/SuSE       9.1-i386        base
diff --git a/distrib/suse91/pkgs/01 b/distrib/suse91/pkgs/01
new file mode 100644 (file)
index 0000000..1905974
--- /dev/null
@@ -0,0 +1 @@
+aaa_base
diff --git a/distrib/suse91/pkgs/02 b/distrib/suse91/pkgs/02
new file mode 100644 (file)
index 0000000..be4e901
--- /dev/null
@@ -0,0 +1,3 @@
+--reinstall
+filesystem
+pam
diff --git a/distrib/suse91/rpm/macros b/distrib/suse91/rpm/macros
new file mode 100644 (file)
index 0000000..7531428
--- /dev/null
@@ -0,0 +1,4 @@
+# Because of https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=52725
+# you have to use at least one language beside 'C'
+%_install_langs                C:de:en:es:fr
+%_netsharedpath                /dev
diff --git a/distrib/template/initpost b/distrib/template/initpost
new file mode 100755 (executable)
index 0000000..c6f52fa
--- /dev/null
@@ -0,0 +1,22 @@
+#! /bin/bash
+
+# Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+## Called as: initpost <cfgdir> <path of util-vserver-vars>
+
+. "$2"
+
+true
diff --git a/distrib/template/initpre b/distrib/template/initpre
new file mode 100755 (executable)
index 0000000..cb6d3b7
--- /dev/null
@@ -0,0 +1,22 @@
+#! /bin/bash
+
+# Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+## Called as: initpre <cfgdir> <path of util-vserver-vars>
+
+. "$2"
+
+true
index be2a4b0..aec2757 100644 (file)
@@ -1,4 +1,4 @@
-## $Id: Makefile-files,v 1.1.4.1 2004/03/18 18:29:22 ensc Exp $  -*- makefile -*-
+## $Id: Makefile-files,v 1.12 2005/03/19 01:59:47 ensc Exp $  -*- makefile -*-
 
 ## Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 ##  
 ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 ##  
 
-doc_DAT                        =  doc/intro.txt
+doc_old_doc =                  doc/intro.txt
+
+XSLT_AMFLAGS =                 --stringparam confdir '$(sysconfdir)/vservers'
+XSLTP_AMFLAGS =                        -param confdir '$(sysconfdir)/vservers'
+
+doc_gen_DOCS =                 doc/configuration.html \
+                               doc/compatibility.html
+
+doc_configuration_SRCS =       doc/configuration.xml \
+                               doc/configuration.xsd \
+                               doc/configuration.dtd \
+                               doc/configuration.css \
+                               doc/configuration-xhtml.xsl
+
+doc_compatibility_SRCS =       doc/compatibility.xml \
+                               doc/compatibility.dtd \
+                               doc/compatibility-xhtml.xsl
+
+EXTRA_DIST +=                  $(doc_compatibility_SRCS) \
+                               $(doc_configuration_SRCS) \
+                               $(doc_old_doc) \
+                               $(doc_gen_DOCS)
+
+CLEANFILES +=                  doc/*.raw.html* doc/*.html.tmp
+
+doc/configuration.html:                STYLESHEET=$(srcdir)/doc/configuration-xhtml.xsl
+doc/configuration.html:                $(srcdir)/doc/configuration-xhtml.xsl
+
+doc/compatibility.html:                STYLESHEET=$(srcdir)/doc/compatibility-xhtml.xsl
+doc/compatibility.html:                $(srcdir)/doc/compatibility-xhtml.xsl
+
+doc:                           doc_doc
+doc_doc:                       $(doc_gen_DOCS)
+
+if HAVE_XSLTP
+CLEANFILES +=                  $(doc_gen_DOCS)
+%.html:                                %.xml $(STYLESHEET)
+                               @-rm -f '$@.tmp' '$@'
+                               LANG=C $(XSLTP) $(XSLTP_AMFLAGS) -in '$<' -xsl $(STYLESHEET) -out '$@.tmp'
+                               @mv -f '$@.tmp' '$@'
+else !HAVE_XSLTP
+if HAVE_XSLTPROC
+CLEANFILES +=                  $(doc_gen_DOCS)
+%.html:                                %.xml $(STYLESHEET)
+                               @-rm -f '$@.tmp' '$@'
+                               $(XSLTPROC) $(XSLT_FLAGS) $(XSLT_AMFLAGS) -o '$@.tmp' "$(STYLESHEET)" "$<"
+                               @mv -f '$@.tmp' '$@'
+endif  HAVE_XSLTPROC
+endif !HAVE_XSLTP
diff --git a/doc/compatibility-xhtml.xsl b/doc/compatibility-xhtml.xsl
new file mode 100644 (file)
index 0000000..6578041
--- /dev/null
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns="http://www.w3.org/1999/xhtml"
+                version="1.0">
+
+  <xsl:output method="xml"
+              indent="yes"
+              doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
+              doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
+
+  <xsl:template match="/">
+    <html>
+      <head>
+        <title><xsl:apply-templates select="compatibility/title"/></title>
+        <link rel="stylesheet" type="text/css" href="compatibility.css" />
+      </head>
+      <body>
+       <h1><xsl:apply-templates select="compatibility/title"/></h1>
+        <xsl:apply-templates select="compatibility/program">
+          <xsl:sort select="compatibility/program/location"/>
+          <xsl:sort select="compatibility/program[name]"/>
+        </xsl:apply-templates>
+      </body>
+    </html>
+  </xsl:template>
+
+  <xsl:template name="compat">
+    <xsl:variable name="name" select="name()"/>
+    <xsl:variable name="descr">
+      <xsl:choose>
+       <xsl:when test="$name = 'clicompat'">
+         <xsl:text>Command line interface compatibility</xsl:text>
+       </xsl:when>
+       <xsl:when test="$name = 'funccompat'">
+         <xsl:text>Functional compatibility</xsl:text>
+       </xsl:when>
+       <xsl:otherwise>
+         <xsl:value-of select="$name"/>
+       </xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+    <div class="{$name}">
+      <xsl:value-of select="$descr"/>: <xsl:value-of select="@status"/>
+      <xsl:if test="text">
+       <div class="text">
+         <xsl:apply-templates select="text"/>
+       </div>
+      </xsl:if>      
+    </div>
+  </xsl:template>
+
+  <xsl:template match="clicompat|funccompat">
+    <xsl:call-template name="compat" />
+  </xsl:template>
+
+  <xsl:template match="program">
+    <div class="program">
+      <div class="name">
+        <xsl:value-of select="location"/>/<xsl:value-of select="@name"/>
+        <xsl:if test="@status">
+          <xsl:text> (</xsl:text>
+         <xsl:value-of select="@status"/>
+          <xsl:text>)</xsl:text>
+        </xsl:if>
+      </div>
+      <xsl:apply-templates select="clicompat|funccompat"/>
+    </div>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/doc/compatibility.dtd b/doc/compatibility.dtd
new file mode 100644 (file)
index 0000000..ad0d5a2
--- /dev/null
@@ -0,0 +1,21 @@
+<!ELEMENT compatibility (title,program*)>
+
+<!ELEMENT program (location,clicompat?,funccompat?)>
+<!ATTLIST program
+       name    CDATA #REQUIRED
+       status  (removed|rewritten|renamed|broken|new)  #IMPLIED>
+
+<!ELEMENT location (#PCDATA)>
+
+<!ELEMENT clicompat (text?)>
+<!ATTLIST clicompat
+       status  (yes|no|limited)                #REQUIRED>
+
+<!ELEMENT funccompat (text?)>
+<!ATTLIST funccompat
+       status  (yes|no|limited)                #REQUIRED>
+
+<!ELEMENT text ANY>
+<!ELEMENT pref (#PCDATA)>
+
+<!ELEMENT title (#PCDATA)>
diff --git a/doc/compatibility.html b/doc/compatibility.html
new file mode 100644 (file)
index 0000000..909a5ad
--- /dev/null
@@ -0,0 +1,294 @@
+<?xml version="1.0"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <title>compatibility of util-vserver alpha branch</title>
+    <link rel="stylesheet" type="text/css" href="compatibility.css" />
+  </head>
+  <body>
+    <h1>compatibility of util-vserver alpha branch</h1>
+    <div class="program">
+      <div class="name">LIBDIR/capchroot</div>
+      <div class="clicompat">Command line interface compatibility: yes</div>
+      <div class="funccompat">Functional compatibility: yes</div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/distrib-info (removed)</div>
+      <div class="clicompat">Command line interface compatibility: no<div class="text">replaced by vpkg</div></div>
+      <div class="funccompat">Functional compatibility: no</div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/fakerunlevel</div>
+      <div class="clicompat">Command line interface compatibility: yes</div>
+      <div class="funccompat">Functional compatibility: yes</div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/filetime</div>
+      <div class="clicompat">Command line interface compatibility: yes</div>
+      <div class="funccompat">Functional compatibility: yes</div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/ifspec</div>
+      <div class="clicompat">Command line interface compatibility: yes</div>
+      <div class="funccompat">Functional compatibility: yes</div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/install-* (removed)</div>
+      <div class="clicompat">Command line interface compatibility: no<div class="text">Replaced by more general build-methods which are building vservers from apt-repositories.</div></div>
+      <div class="funccompat">Functional compatibility: no</div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/listdevip</div>
+      <div class="clicompat">Command line interface compatibility: yes</div>
+      <div class="funccompat">Functional compatibility: yes</div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/parserpmdump</div>
+      <div class="clicompat">Command line interface compatibility: yes</div>
+      <div class="funccompat">Functional compatibility: yes</div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/readlink</div>
+      <div class="clicompat">Command line interface compatibility: yes</div>
+      <div class="funccompat">Functional compatibility: yes</div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/rootshell</div>
+      <div class="clicompat">Command line interface compatibility: yes</div>
+      <div class="funccompat">Functional compatibility: yes</div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/sample.sh (removed)</div>
+      <div class="clicompat">Command line interface compatibility: no<div class="text">incompatible with recent configuration style.</div></div>
+      <div class="funccompat">Functional compatibility: no</div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/save_s_context (removed)</div>
+      <div class="clicompat">Command line interface compatibility: no<div class="text">incompatible with recent configuration style; partially replaced by save_ctxinfo.</div></div>
+      <div class="funccompat">Functional compatibility: yes</div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/setattr</div>
+      <div class="clicompat">Command line interface compatibility: no<div class="text">Has been moved into SBINDIR. Lots of new option were added to support new functionality.</div></div>
+      <div class="funccompat">Functional compatibility: no<div class="text">It is possible to recurse directories and it supports
+      all vserver related attributes (admin, hide, watch, barrier,
+      iunlink).</div></div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/showattr</div>
+      <div class="clicompat">Command line interface compatibility: no<div class="text">Has been moved into SBINDIR. Lots of new option were added to support new functionality.</div></div>
+      <div class="funccompat">Functional compatibility: no<div class="text">It is possible to recurse directories and it supports all
+      vserver related attributes (admin, hide, watch, barrier,
+      iunlink). The output has been changed: the flags are now in the
+      first column and they are displayed in a symbolic manner.</div></div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/showperm</div>
+      <div class="clicompat">Command line interface compatibility: yes</div>
+      <div class="funccompat">Functional compatibility: yes</div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/vbuild (broken)</div>
+      <div class="clicompat">Command line interface compatibility: yes</div>
+      <div class="funccompat">Functional compatibility: no<div class="text">will be removed/rewritten soon.</div></div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/vcheck (broken)</div>
+      <div class="clicompat">Command line interface compatibility: yes</div>
+      <div class="funccompat">Functional compatibility: no<div class="text">will be removed/rewritten soon.</div></div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/vprofile (removed)</div>
+      <div class="clicompat">Command line interface compatibility: no<div class="text">incompatible with recent configuration style.</div></div>
+      <div class="funccompat">Functional compatibility: no</div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/vreboot</div>
+      <div class="clicompat">Command line interface compatibility: yes</div>
+      <div class="funccompat">Functional compatibility: yes</div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/vserverkillall (removed)</div>
+      <div class="clicompat">Command line interface compatibility: no<div class="text">vkill contains the needed functionality
+      already.</div></div>
+      <div class="funccompat">Functional compatibility: no</div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/vservers.grabinfo.sh</div>
+      <div class="clicompat">Command line interface compatibility: yes</div>
+      <div class="funccompat">Functional compatibility: yes</div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/vunify (rewritten)</div>
+      <div class="clicompat">Command line interface compatibility: no<div class="text">CLI has been changed to reflect new functionality. Now, it
+      accepts either a single vserver, or (directory,excludelist)
+      pairs as arguments. The old "refserver vserver1 vserver2 ..." 
+      syntax is gone.</div></div>
+      <div class="funccompat">Functional compatibility: limited<div class="text">vunify allows to unify generic paths, or vservers with
+      preconfigured reference vservers. The filelist is not taken from
+      packagemanagement anymore, but every file which has a counterpart
+      in the reference-path(s)/vserver(s) and is not in an excludelist
+      will be unified. A part of the excludelist will be generated
+      dynamically with information from the packagemanagement about
+      configfiles.</div></div>
+    </div>
+    <div class="program">
+      <div class="name">SBINDIR/chbind</div>
+      <div class="clicompat">Command line interface compatibility: yes</div>
+      <div class="funccompat">Functional compatibility: yes</div>
+    </div>
+    <div class="program">
+      <div class="name">SBINDIR/chcontext</div>
+      <div class="clicompat">Command line interface compatibility: yes</div>
+      <div class="funccompat">Functional compatibility: yes<div class="text">Return code in '--disconnect' case is now more correctly.</div></div>
+    </div>
+    <div class="program">
+      <div class="name">SBINDIR/rebootmgr</div>
+      <div class="clicompat">Command line interface compatibility: yes</div>
+      <div class="funccompat">Functional compatibility: yes</div>
+    </div>
+    <div class="program">
+      <div class="name">SBINDIR/reducecap</div>
+      <div class="clicompat">Command line interface compatibility: yes</div>
+      <div class="funccompat">Functional compatibility: yes</div>
+    </div>
+    <div class="program">
+      <div class="name">SBINDIR/vdu</div>
+      <div class="clicompat">Command line interface compatibility: yes</div>
+      <div class="funccompat">Functional compatibility: yes</div>
+    </div>
+    <div class="program">
+      <div class="name">SBINDIR/vfiles (broken)</div>
+      <div class="clicompat">Command line interface compatibility: yes</div>
+      <div class="funccompat">Functional compatibility: no<div class="text">will be removed/rewritten soon.</div></div>
+    </div>
+    <div class="program">
+      <div class="name">SBINDIR/vkill (rewritten)</div>
+      <div class="clicompat">Command line interface compatibility: yes</div>
+      <div class="funccompat">Functional compatibility: limited<div class="text">It uses native kernel interface now and is secure (in
+      opposite to the old perl implementation).</div></div>
+    </div>
+    <div class="program">
+      <div class="name">SBINDIR/vps (rewritten)</div>
+      <div class="clicompat">Command line interface compatibility: yes</div>
+      <div class="funccompat">Functional compatibility: limited<div class="text">It has been rewritten into C and output might have been changed slightly.</div></div>
+    </div>
+    <div class="program">
+      <div class="name">SBINDIR/vpstree</div>
+      <div class="clicompat">Command line interface compatibility: yes</div>
+      <div class="funccompat">Functional compatibility: yes</div>
+    </div>
+    <div class="program">
+      <div class="name">SBINDIR/vrpm (rewritten)</div>
+      <div class="clicompat">Command line interface compatibility: yes</div>
+      <div class="funccompat">Functional compatibility: limited<div class="text">It has been rewritten into a secure, native C
+      implementation. Unpacking of files happens in host-ctx, but
+      scriptlets are executed in vserver context. The rpm database
+      will/can be hold outside of the vserver and there will never be
+      access on it from the inside (neither direct, nor by
+      scriptlets). This is implemented through an LD_PRELOAD wrapper
+      which provides own, secure NSS functions too.</div></div>
+    </div>
+    <div class="program">
+      <div class="name">SBINDIR/vserver (rewritten)</div>
+      <div class="clicompat">Command line interface compatibility: limited<div class="text">It accepts all the old arguments, but adds lots of new
+      ones. This program is intended as the basic vserver management
+      tool; e.g. to unify a vserver you can execute "vserver XX unify",
+      to install a package "vserver XX install PKG" and so on.</div></div>
+      <div class="funccompat">Functional compatibility: limited<div class="text">This tool is rewritten to completely and is now resistant
+      against symlink attacks. It uses the new configuration scheme
+      and the iproute2 tools instead of ifconfig for network
+      setup. Old-style vserver can be still started through this tool,
+      but modifications/building of them is not possible
+      anymore.</div></div>
+    </div>
+    <div class="program">
+      <div class="name">SBINDIR/vserver-copy (broken)</div>
+      <div class="clicompat">Command line interface compatibility: yes</div>
+      <div class="funccompat">Functional compatibility: no<div class="text">will be removed/rewritten soon.</div></div>
+    </div>
+    <div class="program">
+      <div class="name">SBINDIR/vserver-stat (rewritten)</div>
+      <div class="clicompat">Command line interface compatibility: yes</div>
+      <div class="funccompat">Functional compatibility: yes<div class="text">It has been rewritten to use the new libvserver API. The
+      output has been changed slightly.</div></div>
+    </div>
+    <div class="program">
+      <div class="name">SBINDIR/vtop</div>
+      <div class="clicompat">Command line interface compatibility: yes</div>
+      <div class="funccompat">Functional compatibility: yes</div>
+    </div>
+    <div class="program">
+      <div class="name">SBINDIR/exec-cd (new)</div>
+      <div class="funccompat">Functional compatibility: yes<div class="text">changes into a directory in a secure manner and executes a
+      program there.</div></div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/rpm-fake-resolver (new)</div>
+      <div class="funccompat">Functional compatibility: yes<div class="text">NSS resolver; used by vrpm and executed in
+      vserver-ctx.</div></div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/rpm-fake.so (new)</div>
+      <div class="funccompat">Functional compatibility: yes<div class="text">LD_PRELOAD wrapper; used by vrpm.</div></div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/vapt-get-worker (new)</div>
+      <div class="funccompat">Functional compatibility: yes<div class="text">Helper script for vapt-get.</div></div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/vpkg (new)</div>
+      <div class="funccompat">Functional compatibility: yes<div class="text">Generic interface for package management; it allows
+      to install, remove or query packages in a distribution
+      independent manner. It can be seen as the successor of
+      distrib-info.</div></div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/vrpm-preload (new)</div>
+      <div class="funccompat">Functional compatibility: yes<div class="text">Helper script for vrpm.</div></div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/vrpm-worker (new)</div>
+      <div class="funccompat">Functional compatibility: yes<div class="text">Helper script for vrpm.</div></div>
+    </div>
+    <div class="program">
+      <div class="name">LIBDIR/vserver-build (new)</div>
+      <div class="funccompat">Functional compatibility: yes<div class="text">Builds a vserver from scratch and allows to select the
+      used method. It will be called by the "vserver XY build"
+      command.</div></div>
+    </div>
+    <div class="program">
+      <div class="name">SBINDIR/vapt-get (new)</div>
+      <div class="funccompat">Functional compatibility: yes<div class="text">Wrapper for apt-get; currently only the apt-rpm port
+      is supported. Metadata will/can be stored outside of the
+      vserver. This program call vrpm.</div></div>
+    </div>
+    <div class="program">
+      <div class="name">SBINDIR/chxid (new)</div>
+      <div class="funccompat">Functional compatibility: yes<div class="text">This program assigns the associated context of an inode. It
+      replaces parts of the vserver-quota tools.</div></div>
+    </div>
+    <div class="program">
+      <div class="name">SBINDIR/lsxid (new)</div>
+      <div class="funccompat">Functional compatibility: yes<div class="text">This program shows the associated context of an inode. It
+      replaces parts of the vserver-quota tools.</div></div>
+    </div>
+    <div class="program">
+      <div class="name">SBINDIR/new-namespace (new)</div>
+      <div class="funccompat">Functional compatibility: yes<div class="text">This program starts a program within a new namespace which is
+      created with CLONE_NEWNS. It is used e.g. by vrpm to
+      map the rpm-database into the vserver in a secure manner.</div></div>
+    </div>
+    <div class="program">
+      <div class="name">SBINDIR/vlimit (new)</div>
+      <div class="funccompat">Functional compatibility: yes<div class="text">This is an interface to the rlimit syscalls which allow to
+      limit resource-usage of contexts.</div></div>
+    </div>
+    <div class="program">
+      <div class="name">SBINDIR/vrsetup (new)</div>
+      <div class="funccompat">Functional compatibility: yes<div class="text">This program allows to setup vroot devices. It replaces
+      vrsetup from the vr-tools</div></div>
+    </div>
+  </body>
+</html>
diff --git a/doc/compatibility.xml b/doc/compatibility.xml
new file mode 100644 (file)
index 0000000..5b9fde5
--- /dev/null
@@ -0,0 +1,413 @@
+<?xml version="1.0"?>
+<!DOCTYPE compatibility SYSTEM "compatibility.dtd" []>
+
+<compatibility>
+  <title>compatibility of util-vserver alpha branch</title>
+  
+  <program name="capchroot">
+    <location>LIBDIR</location>
+    <clicompat status="yes"/>
+    <funccompat status="yes"/>
+  </program>
+
+  <program name="distrib-info" status="removed">
+    <location>LIBDIR</location>
+    <clicompat status="no">
+      <text>replaced by <pref>vpkg</pref></text>
+    </clicompat>
+    <funccompat status="no"/>
+  </program>
+
+  <program name="fakerunlevel">
+    <location>LIBDIR</location>
+    <clicompat status="yes"/>
+    <funccompat status="yes"/>
+  </program>
+
+  <program name="filetime">
+    <location>LIBDIR</location>
+    <clicompat status="yes"/>
+    <funccompat status="yes"/>
+  </program>
+
+  <program name="ifspec">
+    <location>LIBDIR</location>
+    <clicompat status="yes"/>
+    <funccompat status="yes"/>
+  </program>
+  
+  <program name="install-*" status="removed">
+    <location>LIBDIR</location>
+    <clicompat status="no">
+      <text>Replaced by more general build-methods which are building vservers from apt-repositories.</text>
+    </clicompat>
+    <funccompat status="no"/>
+  </program>
+  
+  <program name="listdevip">
+    <location>LIBDIR</location>
+    <clicompat status="yes"/>
+    <funccompat status="yes"/>
+  </program>
+
+  <program name="parserpmdump">
+    <location>LIBDIR</location>
+    <clicompat status="yes"/>
+    <funccompat status="yes"/>
+  </program>
+
+  <program name="readlink">
+    <location>LIBDIR</location>
+    <clicompat status="yes"/>
+    <funccompat status="yes"/>
+  </program>
+
+  <program name="rootshell">
+    <location>LIBDIR</location>
+    <clicompat status="yes"/>
+    <funccompat status="yes"/>
+  </program>
+
+  <program name="sample.sh" status="removed">
+    <location>LIBDIR</location>
+    <clicompat status="no">
+      <text>incompatible with recent configuration style.</text>
+    </clicompat>
+    <funccompat status="no"/>
+  </program>
+  
+  <program name="save_s_context" status="removed">
+    <location>LIBDIR</location>
+    <clicompat status="no">
+      <text>incompatible with recent configuration style; partially replaced by <pref>save_ctxinfo</pref>.</text>
+    </clicompat>
+    <funccompat status="yes"/>
+  </program>
+
+  <program name="setattr">
+    <location>LIBDIR</location>
+    <clicompat status="no">
+      <text>Has been moved into SBINDIR. Lots of new option were added to support new functionality.</text>
+    </clicompat>
+    <funccompat status="no">
+      <text>It is possible to recurse directories and it supports
+      all vserver related attributes (admin, hide, watch, barrier,
+      iunlink).</text>
+    </funccompat>
+  </program>
+  
+  <program name="showattr">
+    <location>LIBDIR</location>
+    <clicompat status="no">
+      <text>Has been moved into SBINDIR. Lots of new option were added to support new functionality.</text>
+    </clicompat>
+    <funccompat status="no">
+      <text>It is possible to recurse directories and it supports all
+      vserver related attributes (admin, hide, watch, barrier,
+      iunlink). The output has been changed: the flags are now in the
+      first column and they are displayed in a symbolic manner.</text>
+    </funccompat>
+  </program>
+  
+  <program name="showperm">
+    <location>LIBDIR</location>
+    <clicompat status="yes"/>
+    <funccompat status="yes"/>
+  </program>
+
+  <program name="vbuild" status="broken">
+    <location>LIBDIR</location>
+    <clicompat status="yes"/>
+    <funccompat status="no">
+      <text>will be removed/rewritten soon.</text>
+    </funccompat>
+  </program>
+  
+  <program name="vcheck" status="broken">
+    <location>LIBDIR</location>
+    <clicompat status="yes"/>
+    <funccompat status="no">
+      <text>will be removed/rewritten soon.</text>
+    </funccompat>
+  </program>
+
+  <program name="vprofile" status="removed">
+    <location>LIBDIR</location>
+    <clicompat status="no">
+      <text>incompatible with recent configuration style.</text>
+    </clicompat>
+    <funccompat status="no"/>
+  </program>
+
+  <program name="vreboot">
+    <location>LIBDIR</location>
+    <clicompat status="yes"/>
+    <funccompat status="yes"/>
+  </program>
+
+  <program name="vserverkillall" status="removed">
+    <location>LIBDIR</location>
+    <clicompat status="no">
+      <text><pref>vkill</pref> contains the needed functionality
+      already.</text>
+    </clicompat>
+    <funccompat status="no"/>
+  </program>
+  
+  <program name="vservers.grabinfo.sh">
+    <location>LIBDIR</location>
+    <clicompat status="yes"/>
+    <funccompat status="yes"/>
+  </program>
+
+  <program name="vunify" status="rewritten">
+    <location>LIBDIR</location>
+    <clicompat status="no">
+      <text>CLI has been changed to reflect new functionality. Now, it
+      accepts either a single vserver, or (directory,excludelist)
+      pairs as arguments. The old "refserver vserver1 vserver2 ..." 
+      syntax is gone.</text>
+    </clicompat>
+    <funccompat status="limited">
+      <text>vunify allows to unify generic paths, or vservers with
+      preconfigured reference vservers. The filelist is not taken from
+      packagemanagement anymore, but every file which has a counterpart
+      in the reference-path(s)/vserver(s) and is not in an excludelist
+      will be unified. A part of the excludelist will be generated
+      dynamically with information from the packagemanagement about
+      configfiles.</text>
+    </funccompat>
+  </program>
+
+  <program name="chbind">
+    <location>SBINDIR</location>
+    <clicompat status="yes"/>
+    <funccompat status="yes"/>
+  </program>
+
+  <program name="chcontext">
+    <location>SBINDIR</location>
+    <clicompat status="yes"/>
+    <funccompat status="yes">
+      <text>Return code in '--disconnect' case is now more correctly.</text>
+    </funccompat>
+  </program>
+
+  <program name="rebootmgr">
+    <location>SBINDIR</location>
+    <clicompat status="yes"/>
+    <funccompat status="yes"/>
+  </program>
+
+  <program name="reducecap">
+    <location>SBINDIR</location>
+    <clicompat status="yes"/>
+    <funccompat status="yes"/>
+  </program>
+  
+  <program name="vdu">
+    <location>SBINDIR</location>
+    <clicompat status="yes"/>
+    <funccompat status="yes"/>
+  </program>
+
+  <program name="vfiles" status="broken">
+    <location>SBINDIR</location>
+    <clicompat status="yes"/>
+    <funccompat status="no">
+      <text>will be removed/rewritten soon.</text>
+    </funccompat>
+  </program>
+  
+  <program name="vkill" status="rewritten">
+    <location>SBINDIR</location>
+    <clicompat status="yes"/>
+    <funccompat status="limited">
+      <text>It uses native kernel interface now and is secure (in
+      opposite to the old perl implementation).</text>
+    </funccompat>
+  </program>
+
+  <program name="vps" status="rewritten">
+    <location>SBINDIR</location>
+    <clicompat status="yes"/>
+    <funccompat status="limited">
+      <text>It has been rewritten into C and output might have been changed slightly.</text>
+    </funccompat>
+  </program>
+
+  <program name="vpstree">
+    <location>SBINDIR</location>
+    <clicompat status="yes"/>
+    <funccompat status="yes"/>
+  </program>
+
+  <program name="vrpm" status="rewritten">
+    <location>SBINDIR</location>
+    <clicompat status="yes"/>
+    <funccompat status="limited">
+      <text>It has been rewritten into a secure, native C
+      implementation. Unpacking of files happens in host-ctx, but
+      scriptlets are executed in vserver context. The rpm database
+      will/can be hold outside of the vserver and there will never be
+      access on it from the inside (neither direct, nor by
+      scriptlets). This is implemented through an LD_PRELOAD wrapper
+      which provides own, secure NSS functions too.</text>
+    </funccompat>
+  </program>
+
+  <program name="vserver" status="rewritten">
+    <location>SBINDIR</location>
+    <clicompat status="limited">
+      <text>It accepts all the old arguments, but adds lots of new
+      ones. This program is intended as the basic vserver management
+      tool; e.g. to unify a vserver you can execute "vserver XX unify",
+      to install a package "vserver XX install PKG" and so on.</text>
+    </clicompat>
+    <funccompat status="limited">
+      <text>This tool is rewritten to completely and is now resistant
+      against symlink attacks. It uses the new configuration scheme
+      and the iproute2 tools instead of ifconfig for network
+      setup. Old-style vserver can be still started through this tool,
+      but modifications/building of them is not possible
+      anymore.</text>
+    </funccompat>
+  </program>
+
+  <program name="vserver-copy" status="broken">
+    <location>SBINDIR</location>
+    <clicompat status="yes"/>
+    <funccompat status="no">
+      <text>will be removed/rewritten soon.</text>
+    </funccompat>
+  </program>
+
+  <program name="vserver-stat" status="rewritten">
+    <location>SBINDIR</location>
+    <clicompat status="yes"/>
+    <funccompat status="yes">
+      <text>It has been rewritten to use the new libvserver API. The
+      output has been changed slightly.</text>
+    </funccompat>
+  </program>
+
+  <program name="vtop">
+    <location>SBINDIR</location>
+    <clicompat status="yes"/>
+    <funccompat status="yes"/>
+  </program>
+
+  <program name="exec-cd" status="new">
+    <location>SBINDIR</location>
+    <funccompat status="yes">
+      <text>changes into a directory in a secure manner and executes a
+      program there.</text>
+    </funccompat>
+  </program>
+
+  <program name="rpm-fake-resolver" status="new">
+    <location>LIBDIR</location>
+    <funccompat status="yes">
+      <text>NSS resolver; used by <pref>vrpm</pref> and executed in
+      vserver-ctx.</text>
+    </funccompat>
+  </program>
+
+  <program name="rpm-fake.so" status="new">
+    <location>LIBDIR</location>
+    <funccompat status="yes">
+      <text>LD_PRELOAD wrapper; used by <pref>vrpm</pref>.</text>
+    </funccompat>
+  </program>
+
+  <program name="vapt-get-worker" status="new">
+    <location>LIBDIR</location>
+    <funccompat status="yes">
+      <text>Helper script for <pref>vapt-get</pref>.</text>
+    </funccompat>
+  </program>
+
+  <program name="vpkg" status="new">
+    <location>LIBDIR</location>
+    <funccompat status="yes">
+      <text>Generic interface for package management; it allows
+      to install, remove or query packages in a distribution
+      independent manner. It can be seen as the successor of
+      <pref>distrib-info</pref>.</text>
+    </funccompat>
+  </program>
+
+  <program name="vrpm-preload" status="new">
+    <location>LIBDIR</location>
+    <funccompat status="yes">
+      <text>Helper script for <pref>vrpm</pref>.</text>
+    </funccompat>
+  </program>
+  
+  <program name="vrpm-worker" status="new">
+    <location>LIBDIR</location>
+    <funccompat status="yes">
+      <text>Helper script for <pref>vrpm</pref>.</text>
+    </funccompat>
+  </program>
+
+  <program name="vserver-build" status="new">
+    <location>LIBDIR</location>
+    <funccompat status="yes">
+      <text>Builds a vserver from scratch and allows to select the
+      used method. It will be called by the "vserver XY build"
+      command.</text>
+    </funccompat>
+  </program>
+  
+  <program name="vapt-get" status="new">
+    <location>SBINDIR</location>
+    <funccompat status="yes">
+      <text>Wrapper for apt-get; currently only the apt-rpm port
+      is supported. Metadata will/can be stored outside of the
+      vserver. This program call <pref>vrpm</pref>.</text>
+    </funccompat>
+  </program>
+
+
+  <program name="chxid" status="new">
+    <location>SBINDIR</location>
+    <funccompat status="yes">
+      <text>This program assigns the associated context of an inode. It
+      replaces parts of the vserver-quota tools.</text>
+    </funccompat>
+  </program>
+
+  <program name="lsxid" status="new">
+    <location>SBINDIR</location>
+    <funccompat status="yes">
+      <text>This program shows the associated context of an inode. It
+      replaces parts of the vserver-quota tools.</text>
+    </funccompat>
+  </program>
+
+  <program name="new-namespace" status="new">
+    <location>SBINDIR</location>
+    <funccompat status="yes">
+      <text>This program starts a program within a new namespace which is
+      created with CLONE_NEWNS. It is used e.g. by <pref>vrpm</pref> to
+      map the rpm-database into the vserver in a secure manner.</text>
+    </funccompat>
+  </program>
+
+  <program name="vlimit" status="new">
+    <location>SBINDIR</location>
+    <funccompat status="yes">
+      <text>This is an interface to the rlimit syscalls which allow to
+      limit resource-usage of contexts.</text>
+    </funccompat>
+  </program>
+
+  <program name="vrsetup" status="new">
+    <location>SBINDIR</location>
+    <funccompat status="yes">
+      <text>This program allows to setup vroot devices. It replaces
+      vrsetup from the vr-tools</text>
+    </funccompat>
+  </program>
+</compatibility>
diff --git a/doc/configuration-xhtml.xsl b/doc/configuration-xhtml.xsl
new file mode 100644 (file)
index 0000000..7965f19
--- /dev/null
@@ -0,0 +1,259 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns="http://www.w3.org/1999/xhtml"
+                version="1.0">
+
+  <xsl:output method="xml"
+              indent="yes"
+              doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
+              doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
+
+  <xsl:param name="confdir"/>
+  
+  <xsl:template match="/">
+    <html>
+      <xsl:apply-templates/>
+    </html>
+  </xsl:template>
+
+  <xsl:template match="database">
+    <head>
+      <title>The <xsl:value-of select="$confdir"/> directory</title>
+      <link rel="stylesheet"           title="gras"     type="text/css" href="css/configuration-lsd.css" />
+      <link rel="alternate stylesheet" title="gras1"    type="text/css" href="css/configuration-lsd1.css" />
+      <link rel="alternate stylesheet" title="flower"   type="text/css" href="css/configuration-flower.css" />
+      <link rel="alternate stylesheet" title="boring"   type="text/css" href="configuration.css" />
+      <link rel="alternate stylesheet" title="weedpage" type="text/css" href="css/WeedPageStyle.css" />
+    </head>
+    <body>
+      <h1>The content of the <xsl:value-of select="$confdir"/> directory</h1>
+
+      <xsl:call-template name="collection">
+        <xsl:with-param name="thisdir"><xsl:value-of select="$confdir"/></xsl:with-param>
+      </xsl:call-template>
+    </body>
+  </xsl:template>
+
+  <xsl:template name="collection">
+    <xsl:param name="thisdir"/>
+    <xsl:if test="count(scalar) + count(link) + count(program) + count(data) + count(hash) + count(list) + count(boolean) + count(collection)>0">
+      <ul>
+        <xsl:if test="@id"><xsl:attribute name="id"><xsl:value-of select="@id" /></xsl:attribute></xsl:if>
+        <xsl:call-template name="dir-iterate">
+          <xsl:with-param name="thisdir"><xsl:value-of select="$thisdir"/></xsl:with-param>
+        </xsl:call-template>
+      </ul>
+    </xsl:if>
+  </xsl:template>
+
+  <xsl:template name="dir-iterate">
+    <xsl:param name="thisdir"/>
+    <xsl:apply-templates select="scalar|link|program|data|hash|list|boolean">
+      <xsl:with-param name="thisdir"><xsl:value-of select="$thisdir"/></xsl:with-param>
+      <xsl:sort select="@name"/>
+    </xsl:apply-templates>
+
+    <xsl:apply-templates select="collection">
+      <xsl:with-param name="thisdir"><xsl:value-of select="$thisdir"/></xsl:with-param>
+      <xsl:sort select="@name"/>
+    </xsl:apply-templates>
+  </xsl:template>
+
+  <xsl:template match="program">
+    <xsl:param name="thisdir"/>
+    <li>
+      <xsl:call-template name="printname">
+        <xsl:with-param name="thisdir"><xsl:value-of select="$thisdir"/></xsl:with-param>
+        <xsl:with-param name="style">script</xsl:with-param>
+      </xsl:call-template>
+      <xsl:call-template name="printcontent"/>
+    </li>
+  </xsl:template>
+
+  <xsl:template match="hash">
+    <xsl:param name="thisdir"/>
+    <li>
+      <xsl:call-template name="printname">
+        <xsl:with-param name="thisdir"><xsl:value-of select="$thisdir"/></xsl:with-param>
+        <xsl:with-param name="style">hash</xsl:with-param>
+      </xsl:call-template>
+      <xsl:call-template name="printcontent"/>
+    </li>
+  </xsl:template>
+  
+  <xsl:template match="scalar">
+    <xsl:param name="thisdir"/>
+    <li>
+      <xsl:call-template name="printname">
+        <xsl:with-param name="thisdir"><xsl:value-of select="$thisdir"/></xsl:with-param>
+        <xsl:with-param name="style">file</xsl:with-param>
+      </xsl:call-template>
+      <xsl:call-template name="printcontent"/>
+    </li>
+  </xsl:template>
+
+  <xsl:template match="data">
+    <xsl:param name="thisdir"/>
+    <li>
+      <xsl:call-template name="printname">
+        <xsl:with-param name="thisdir"><xsl:value-of select="$thisdir"/></xsl:with-param>
+        <xsl:with-param name="style">data</xsl:with-param>
+      </xsl:call-template>
+      <xsl:call-template name="printcontent"/>
+    </li>
+  </xsl:template>
+
+  <xsl:template match="list">
+    <xsl:param name="thisdir"/>
+    <li>
+      <xsl:call-template name="printname">
+        <xsl:with-param name="thisdir"><xsl:value-of select="$thisdir"/></xsl:with-param>
+        <xsl:with-param name="style">list</xsl:with-param>
+      </xsl:call-template>
+      <xsl:call-template name="printcontent"/>
+    </li>
+  </xsl:template>
+  
+  <xsl:template match="link">
+    <xsl:param name="thisdir"/>
+    <li>
+      <xsl:call-template name="printname">
+        <xsl:with-param name="thisdir"><xsl:value-of select="$thisdir"/></xsl:with-param>
+        <xsl:with-param name="style">symlink</xsl:with-param>
+      </xsl:call-template>
+      <xsl:call-template name="printcontent"/>
+    </li>
+  </xsl:template>
+
+  <xsl:template match="boolean">
+    <xsl:param name="thisdir"/>
+    <li>
+      <xsl:call-template name="printname">
+        <xsl:with-param name="thisdir"><xsl:value-of select="$thisdir"/></xsl:with-param>
+        <xsl:with-param name="style">boolean</xsl:with-param>
+      </xsl:call-template>
+      <xsl:call-template name="printcontent"/>
+    </li>
+  </xsl:template>
+  
+  <xsl:template match="collection">
+    <xsl:param name="thisdir"/>
+    <li>
+      <xsl:call-template name="printfullname">
+        <xsl:with-param name="thisdir"><xsl:value-of select="$thisdir"/></xsl:with-param>
+        <xsl:with-param name="style">directory</xsl:with-param>
+      </xsl:call-template>
+      <xsl:call-template name="printcontent"/>
+
+      <xsl:call-template name="collection">
+        <xsl:with-param name="thisdir"><xsl:value-of select="$thisdir"/>/<xsl:call-template name="printdirname"/></xsl:with-param>
+      </xsl:call-template>
+    </li>
+  </xsl:template>
+
+  <xsl:template match="collection" mode="printrpath">
+    <xsl:text>/</xsl:text>
+      <span class="{@type}">
+      <xsl:value-of select="@name"/>
+    </span>
+  </xsl:template>
+
+  <xsl:template match="elements">
+    <div class="elements">
+      <dl>
+        <xsl:apply-templates select="element">
+          <xsl:sort select="@name"/>
+        </xsl:apply-templates>
+      </dl>
+    </div>
+  </xsl:template>
+
+  <xsl:template match="elements/element">
+    <dt class="elements">
+      <xsl:if test="@id"><xsl:attribute name="id"><xsl:value-of select="@id" /></xsl:attribute></xsl:if>
+      <xsl:value-of select="@name"/>
+    </dt>
+    <dd class="elements"><xsl:apply-templates select="description"/></dd>
+  </xsl:template>
+  
+  <xsl:template name="printfullname">
+    <xsl:param name="thisdir"/>
+    <xsl:param name="style"/>
+    <xsl:if test="@id"><xsl:attribute name="id"><xsl:value-of select="@id" /></xsl:attribute></xsl:if>
+    <span class="{$style}">
+      <xsl:value-of select="$confdir"/>
+      <xsl:apply-templates select="ancestor-or-self::collection" mode="printrpath"/>
+    </span>
+  </xsl:template>
+
+  <xsl:template name="printname">
+    <xsl:param name="thisdir"/>
+    <xsl:param name="style"/>
+    <xsl:if test="@id"><xsl:attribute name="id"><xsl:value-of select="@id" /></xsl:attribute></xsl:if>
+    <span class="{$style}">
+      <xsl:attribute name="title">
+        <xsl:value-of select="$thisdir"/>/<xsl:call-template name="printdirname"/>
+      </xsl:attribute>
+      <xsl:value-of select="@name"/>
+    </span>
+  </xsl:template>
+
+  <xsl:template name="printcontent">
+    <br/>
+    <xsl:apply-templates select="description"/>
+    <xsl:apply-templates select="elements"/>
+  </xsl:template>
+
+  <xsl:template name="printdirname">
+    <xsl:if test="@type='symbolic'">$</xsl:if>
+    <xsl:value-of select="@name"/>
+  </xsl:template>
+
+  <xsl:template match="description">
+    <div class="description">
+      <xsl:apply-templates/>
+    </div>
+  </xsl:template>
+
+  <xsl:template match="ulink">
+    <a href="{@url}"><xsl:apply-templates/></a>
+  </xsl:template>
+
+  <xsl:template match="br">
+    <br />
+  </xsl:template>
+
+  <xsl:template match="p">
+    <div><xsl:apply-templates/></div>
+  </xsl:template>
+
+  <xsl:template match="tool">
+    <code class="tool"><xsl:apply-templates/></code>
+  </xsl:template>
+
+  <xsl:template match="command">
+    <code class="command"><xsl:apply-templates/></code>
+  </xsl:template>
+
+  <xsl:template match="directory">
+    <span class="directoryname"><xsl:apply-templates/></span>
+  </xsl:template>
+
+  <xsl:template match="filename">
+    <a class="filename">
+      <xsl:attribute name="href">file://<xsl:value-of select="text()"/></xsl:attribute>
+      <xsl:apply-templates/>
+    </a>
+  </xsl:template>
+  
+  <xsl:template match="optionref">
+    <a class="optionref">
+      <xsl:attribute name="href">
+        <xsl:choose>
+          <xsl:when test="@ref">#<xsl:value-of select="@ref"/></xsl:when>
+          <xsl:otherwise>#<xsl:value-of select="text()"/></xsl:otherwise>
+        </xsl:choose>
+      </xsl:attribute><xsl:apply-templates/>
+    </a>
+  </xsl:template>
+</xsl:stylesheet>
diff --git a/doc/configuration.css b/doc/configuration.css
new file mode 100644 (file)
index 0000000..5881cee
--- /dev/null
@@ -0,0 +1,54 @@
+body {
+  font-size: 12pt;
+  background-color: white;
+  margin: 10px;
+}
+
+span.directory {
+  //text-decoration: underline;
+}
+
+
+span.symlink:after { 
+  content: " [symlink]"; 
+  font-size: 8pt;
+  font-style: normal;
+}
+
+span.symlink {
+  text-decoration: none;
+  font-style: italic;
+}
+
+span.script:after { 
+  content: " [script]"; 
+  font-size: 8pt;
+  font-style: normal;
+}
+
+span.script {
+  color: gray;
+}
+
+span.symbolic:before { content: "<"; }
+span.symbolic:after  { content: ">"; }
+
+span.symbolic {
+  font-style: italic;
+  text-decoration: none;
+}
+
+div.description {
+  background-color: #ffffdd;
+}
+
+
+div.elements {
+  padding-left: 1em;
+}
+
+dd.elements {
+}
+
+dt.elements {
+}
diff --git a/doc/configuration.dtd b/doc/configuration.dtd
new file mode 100644 (file)
index 0000000..148b50f
--- /dev/null
@@ -0,0 +1,106 @@
+<!ELEMENT database (collection*)>
+
+<!ELEMENT collection (collection?,data?,link?,scalar?,program?,boolean?,list?,description?,hash?)*>
+<!ATTLIST collection
+        id      CDATA #IMPLIED
+       name    CDATA #REQUIRED
+        type    CDATA #IMPLIED
+        use     CDATA #IMPLIED
+        since   CDATA #IMPLIED>
+
+<!ELEMENT data (description?)>
+<!ATTLIST data
+        id      CDATA #IMPLIED
+        name    CDATA #REQUIRED>
+
+
+<!ELEMENT link (default?,description?)>
+<!ATTLIST link
+        id      CDATA #IMPLIED
+        name    CDATA #REQUIRED
+        type    CDATA #IMPLIED
+        since   CDATA #IMPLIED>
+<!ELEMENT default (#PCDATA)>
+
+
+<!ELEMENT scalar (default?,description?,restriction?)>
+<!ATTLIST scalar
+        id      CDATA #IMPLIED
+        name    CDATA #REQUIRED
+        type    CDATA #IMPLIED
+        since   CDATA #IMPLIED>
+
+
+<!ELEMENT description ANY>
+
+<!ELEMENT program (description?,parameterList?)>
+<!ATTLIST program
+        id      CDATA #IMPLIED
+        name    CDATA #REQUIRED
+        type    CDATA #IMPLIED
+        since   CDATA #IMPLIED>
+
+<!ELEMENT boolean (description?)>
+<!ATTLIST boolean
+        id      CDATA #IMPLIED
+        name    CDATA    #REQUIRED
+        default (on|off) #IMPLIED
+        since   CDATA    #IMPLIED>
+
+<!ELEMENT list (description?,elements?)>
+<!ATTLIST list
+        id      CDATA #IMPLIED
+        name    CDATA #REQUIRED
+        since   CDATA #IMPLIED>
+
+
+<!ELEMENT parameterList (parameter*)>
+<!ELEMENT parameter (description?)>
+<!ATTLIST parameter
+        id      CDATA #IMPLIED
+        name    CDATA #REQUIRED
+        since   CDATA #IMPLIED>
+
+
+<!ELEMENT ulink (#PCDATA)>
+<!ATTLIST ulink
+        url     CDATA #REQUIRED
+        since   CDATA #IMPLIED>
+
+<!ELEMENT hash (description?,keys*)>
+<!ATTLIST hash
+        id      CDATA #IMPLIED
+        name    CDATA #REQUIRED
+        since   CDATA #IMPLIED>
+
+<!ELEMENT keys (key*)>
+<!ELEMENT key  (description?)>
+<!ATTLIST key
+        id      CDATA #IMPLIED
+        name    CDATA #REQUIRED
+        since   CDATA #IMPLIED>
+
+
+<!ELEMENT elements (element*)>
+<!ELEMENT element (description?)>
+<!ATTLIST element
+        name    CDATA #REQUIRED
+        since   CDATA #IMPLIED>
+
+<!ELEMENT restriction (enumeration*)>
+<!ELEMENT enumeration EMPTY>
+<!ATTLIST enumeration
+        value   CDATA #REQUIRED
+        since   CDATA #IMPLIED>
+
+<!ELEMENT directory (#PCDATA)>
+<!ELEMENT filename (#PCDATA)>
+
+<!ELEMENT optionref (#PCDATA)>
+<!ATTLIST optionref
+        ref     CDATA #IMPLIED>
+
+<!ELEMENT br EMPTY>
+<!ELEMENT p       ANY>
+<!ELEMENT tool    (#PCDATA)>
+<!ELEMENT command (#PCDATA)>
diff --git a/doc/configuration.html b/doc/configuration.html
new file mode 100644 (file)
index 0000000..e82d9e8
--- /dev/null
@@ -0,0 +1,1211 @@
+<?xml version="1.0"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <title>The /etc/vservers directory</title>
+    <link rel="stylesheet" title="gras" type="text/css" href="css/configuration-lsd.css" />
+    <link rel="alternate stylesheet" title="gras1" type="text/css" href="css/configuration-lsd1.css" />
+    <link rel="alternate stylesheet" title="flower" type="text/css" href="css/configuration-flower.css" />
+    <link rel="alternate stylesheet" title="boring" type="text/css" href="configuration.css" />
+    <link rel="alternate stylesheet" title="weedpage" type="text/css" href="css/WeedPageStyle.css" />
+  </head>
+  <body>
+    <h1>The content of the /etc/vservers directory</h1>
+    <ul>
+      <li>
+        <span class="directory">/etc/vservers/<span class="">.defaults</span></span>
+        <br />
+        <ul>
+          <li id="global-nonamespace">
+            <span class="boolean" title="/etc/vservers/.defaults/nonamespace">nonamespace</span>
+            <br />
+            <div class="description">
+Disable namespace usage globally. It can be overridden for a single vserver
+by setting the <a class="optionref" href="#global-namespace">namespace</a> flag
+there.
+
+In this mode the <span class="directoryname">/vservers</span> directory must have
+the 'barrier' attribute. Else, common chroot(2) exploits are possible.
+      </div>
+          </li>
+          <li>
+            <span class="symlink" title="/etc/vservers/.defaults/run.rev">run.rev</span>
+            <br />
+            <div class="description">
+Path of the vserver run reverse directory. This directory contains
+symlinks named with XID numbers which point back to the configuration
+directory of vservers. Under kernel 2.4 this is required for the XID
+to VSERVER mapping; Under kernel 2.6 it is unused.
+
+NOTE: this link exists in 0.30.202+ only; in previous versions it was
+a vserver specific setting.
+      </div>
+          </li>
+          <li>
+            <span class="symlink" title="/etc/vservers/.defaults/vdirbase">vdirbase</span>
+            <br />
+            <div class="description">A link to the default vserver rootdirectory.</div>
+          </li>
+          <li>
+            <span class="directory">/etc/vservers/<span class="">.defaults</span>/<span class="">apps</span></span>
+            <br />
+            <ul>
+              <li>
+                <span class="directory">/etc/vservers/<span class="">.defaults</span>/<span class="">apps</span>/<span class="">debootstrap</span></span>
+                <br />
+                <ul>
+                  <li>
+                    <span class="file" title="/etc/vservers/.defaults/apps/debootstrap/mirror">mirror</span>
+                    <br />
+                    <div class="description">
+The Debian mirror to use with the <code class="tool">debootstrap</code> program
+          </div>
+                  </li>
+                  <li>
+                    <span class="file" title="/etc/vservers/.defaults/apps/debootstrap/uri">uri</span>
+                    <br />
+                    <div class="description">
+When the <code class="tool">debootstrap</code> package is not installed; fetch it
+from this uri and install it at a temporary place.
+          </div>
+                  </li>
+                </ul>
+              </li>
+              <li>
+                <span class="directory">/etc/vservers/<span class="">.defaults</span>/<span class="">apps</span>/<span class="">init</span></span>
+                <br />
+                <ul>
+                  <li>
+                    <span class="symlink" title="/etc/vservers/.defaults/apps/init/tty">tty</span>
+                    <br />
+                    <div class="description">
+A symlink to the TTY device where input/output will be redirected from/to
+at startup via initscript.
+          </div>
+                  </li>
+                </ul>
+              </li>
+              <li>
+                <span class="directory">/etc/vservers/<span class="">.defaults</span>/<span class="">apps</span>/<span class="">pkgmgmt</span></span>
+                <br />
+                <ul>
+                  <li>
+                    <span class="data" title="/etc/vservers/.defaults/apps/pkgmgmt/apt.conf">apt.conf</span>
+                    <br />
+                    <div class="description">The default apt.conf which is going to be used. It is overridden by
+distribution specific configuration file.
+          </div>
+                  </li>
+                  <li>
+                    <span class="symlink" title="/etc/vservers/.defaults/apps/pkgmgmt/base">base</span>
+                    <br />
+                  </li>
+                </ul>
+              </li>
+              <li>
+                <span class="directory">/etc/vservers/<span class="">.defaults</span>/<span class="">apps</span>/<span class="">vprocunhide</span></span>
+                <br />
+                <ul>
+                  <li>
+                    <span class="list" title="/etc/vservers/.defaults/apps/vprocunhide/files">files</span>
+                    <br />
+                    <div class="description">
+A list of files which will be made visibly by vprocunhide. Wildcards are
+allowed and anything ending in '/' will be processed recursively. When this file exists,
+it overrides the defaults in SYSDEFAULTDIR/vprocunhide-files. The entries there must be
+absolute filenames inclusive the leading '/proc'.
+          </div>
+                  </li>
+                </ul>
+              </li>
+              <li>
+                <span class="directory">/etc/vservers/<span class="">.defaults</span>/<span class="">apps</span>/<span class="">vshelper</span></span>
+                <br />
+                <ul>
+                  <li>
+                    <span class="boolean" title="/etc/vservers/.defaults/apps/vshelper/debug">debug</span>
+                    <br />
+                    <div class="description">
+When existing, the vshelper execution will be traced.
+          </div>
+                  </li>
+                  <li>
+                    <span class="boolean" title="/etc/vservers/.defaults/apps/vshelper/disabled">disabled</span>
+                    <br />
+                    <div class="description">
+When existing, the vshelper functionality will be disabled for all
+vservers.
+          </div>
+                  </li>
+                  <li>
+                    <span class="symlink" title="/etc/vservers/.defaults/apps/vshelper/logfile">logfile</span>
+                    <br />
+                    <div class="description">
+The file where output will be logged to when <code class="tool">vshelper</code>
+is invoked from the kernel. This should point somewhere e.g. into
+<span class="directoryname">/var/log</span>.
+          </div>
+                  </li>
+                  <li>
+                    <span class="boolean" title="/etc/vservers/.defaults/apps/vshelper/warning-disabled">warning-disabled</span>
+                    <br />
+                    <div class="description">
+When existing, sanity checks for the vshelper functionality will be
+skipped.
+          </div>
+                  </li>
+                  <li>
+                    <span class="directory">/etc/vservers/<span class="">.defaults</span>/<span class="">apps</span>/<span class="">vshelper</span>/<span class="">vshelper-methods</span></span>
+                    <br />
+                    <ul>
+                      <li>
+                        <span class="script" title="/etc/vservers/.defaults/apps/vshelper/vshelper-methods/$handler">handler</span>
+                        <br />
+                        <div class="description">
+See vshelper/action.
+            </div>
+                      </li>
+                    </ul>
+                  </li>
+                </ul>
+              </li>
+              <li>
+                <span class="directory">/etc/vservers/<span class="">.defaults</span>/<span class="">apps</span>/<span class="">vunify</span></span>
+                <br />
+                <ul>
+                  <li>
+                    <span class="list" title="/etc/vservers/.defaults/apps/vunify/exclude">exclude</span>
+                    <br />
+                    <div class="description">Static list of excluded files.</div>
+                  </li>
+                  <li>
+                    <span class="boolean" title="/etc/vservers/.defaults/apps/vunify/pgkmgmt-force">pgkmgmt-force</span>
+                    <br />
+                    <div class="description">
+When existing, information from packagemanagement will be used to
+create dynamic exclude-lists. This option requires that (a known)
+packagemanagement is configured for the vserver; else the requested
+operation will fail. Most tools assume 'on' as the default value.
+          </div>
+                  </li>
+                  <li>
+                    <span class="boolean" title="/etc/vservers/.defaults/apps/vunify/pkgmgmt-ignore">pkgmgmt-ignore</span>
+                    <br />
+                    <div class="description">
+When existing, information from packagemanagement will not be used to
+create dynamic exclude-lists.
+          </div>
+                  </li>
+                  <li>
+                    <span class="directory">/etc/vservers/<span class="">.defaults</span>/<span class="">apps</span>/<span class="">vunify</span>/<span class="">hash</span></span>
+                    <br />
+                    <div class="description">
+A directory which will be used as the storage place for the
+<code class="tool">vhashify</code> command.
+          </div>
+                    <ul>
+                      <li>
+                        <span class="symlink" title="/etc/vservers/.defaults/apps/vunify/hash/$id">id</span>
+                        <br />
+                        <div class="description">
+Points to a directory within the filesystems which are used for the
+vservers. There must be not more than one of such a directory per
+filesystem.
+            </div>
+                      </li>
+                      <li>
+                        <span class="file" title="/etc/vservers/.defaults/apps/vunify/hash/method">method</span>
+                        <br />
+                        <div class="description">The used hash method.</div>
+                      </li>
+                    </ul>
+                  </li>
+                </ul>
+              </li>
+            </ul>
+          </li>
+          <li>
+            <span class="directory">/etc/vservers/<span class="">.defaults</span>/<span class="fixed">init</span></span>
+            <br />
+            <ul>
+              <li>
+                <span class="data" title="/etc/vservers/.defaults/init/mtab">mtab</span>
+                <br />
+                <div class="description">Default mtab file</div>
+              </li>
+            </ul>
+          </li>
+        </ul>
+      </li>
+      <li>
+        <span class="directory">/etc/vservers/<span class="">.distributions</span></span>
+        <br />
+        <ul>
+          <li>
+            <span class="directory">/etc/vservers/<span class="">.distributions</span>/<span class="symbolic">dist</span></span>
+            <br />
+            <ul>
+              <li>
+                <span class="data" title="/etc/vservers/.distributions/$dist/apt.conf">apt.conf</span>
+                <br />
+                <div class="description">
+The default apt.conf which is going to be used. It overrides the
+apt.conf from CONFDIR/.defaults/apps/pkgmgmt.
+        </div>
+              </li>
+              <li>
+                <span class="file" title="/etc/vservers/.distributions/$dist/dev">dev</span>
+                <br />
+                <div class="description"></div>
+              </li>
+              <li>
+                <span class="symlink" title="/etc/vservers/.distributions/$dist/execdir">execdir</span>
+                <br />
+                <div class="description">
+Directory with all executables and libraries which are required for
+this distribution.
+        </div>
+              </li>
+              <li>
+                <span class="script" title="/etc/vservers/.distributions/$dist/initpost">initpost</span>
+                <br />
+                <div class="description">
+Script which will be executed after packages are installed.
+          </div>
+              </li>
+              <li>
+                <span class="script" title="/etc/vservers/.distributions/$dist/initpre">initpre</span>
+                <br />
+                <div class="description">
+Script which will be executed before packages will be installed.
+          </div>
+              </li>
+              <li>
+                <span class="symlink" title="/etc/vservers/.distributions/$dist/rpmlib">rpmlib</span>
+                <br />
+                <div class="description">
+Directory which overrides <span class="directoryname">/usr/lib/rpm</span>.
+        </div>
+              </li>
+              <li>
+                <span class="directory">/etc/vservers/<span class="">.distributions</span>/<span class="symbolic">dist</span>/<span class="">apt</span></span>
+                <br />
+                <div class="description">
+Default content of the <span class="directoryname">/etc/apt/</span> directory.
+        </div>
+              </li>
+              <li>
+                <span class="directory">/etc/vservers/<span class="">.distributions</span>/<span class="symbolic">dist</span>/<span class="">pkgs</span></span>
+                <br />
+                <div class="description">
+Contains files with packagenames.
+        </div>
+                <ul>
+                  <li>
+                    <span class="list" title="/etc/vservers/.distributions/$dist/pkgs/list">list</span>
+                    <br />
+                    <div class="description">
+File which contains the name of packages. On top of file the special
+keywords '--reinstall' and '--can-fail' are possible.
+          </div>
+                  </li>
+                </ul>
+              </li>
+              <li>
+                <span class="directory">/etc/vservers/<span class="">.distributions</span>/<span class="symbolic">dist</span>/<span class="">pubkeys</span></span>
+                <br />
+                <div class="description">
+Directory with GPG pubkeys which are used to sign the packages of this
+distribution.
+        </div>
+              </li>
+              <li>
+                <span class="directory">/etc/vservers/<span class="">.distributions</span>/<span class="symbolic">dist</span>/<span class="">rpm</span></span>
+                <br />
+                <div class="description">
+Default content of the <span class="directoryname">/etc/rpm</span> directory.
+        </div>
+              </li>
+              <li>
+                <span class="directory">/etc/vservers/<span class="">.distributions</span>/<span class="symbolic">dist</span>/<span class="">yum</span></span>
+                <br />
+                <div class="description">
+The default, yum-related content of the <span class="directoryname">/etc</span>
+directory.
+        </div>
+                <ul>
+                  <li>
+                    <span class="file" title="/etc/vservers/.distributions/$dist/yum/yum.conf">yum.conf</span>
+                    <br />
+                    <div class="description">
+The master yum configuration file. It supports the @YUMETCDIR@,
+@YUMCACHEDIR@ and @YUMLOGDIR@ placeholder which will be replaced at
+<code class="command">vserver ... build</code> time.
+          </div>
+                  </li>
+                </ul>
+              </li>
+              <li>
+                <span class="directory">/etc/vservers/<span class="">.distributions</span>/<span class="symbolic">dist</span>/<span class="">yum.repos.d</span></span>
+                <br />
+                <div class="description">A directory with yum repositories.</div>
+              </li>
+            </ul>
+          </li>
+        </ul>
+      </li>
+      <li>
+        <span class="directory">/etc/vservers/<span class="symbolic">vserver-name</span></span>
+        <br />
+        <div class="description">
+The configuration directory for the vserver vserver-name.
+    </div>
+        <ul>
+          <li id="bcapabilities">
+            <span class="list" title="/etc/vservers/$vserver-name/bcapabilities">bcapabilities</span>
+            <br />
+            <div class="description">
+[experimental; name is subject of possible change] Contains the system capabilities. See
+<a href="http://savannah.nongnu.org/cgi-bin/viewcvs/util-vserver/util-vserver/lib/bcaps-v13.c?rev=HEAD">lib/bcaps-v13.c</a>
+for possible values.
+      </div>
+          </li>
+          <li>
+            <span class="list" title="/etc/vservers/$vserver-name/capabilities">capabilities</span>
+            <br />
+            <div class="description">
+Contains per line a capability. This file is used for the 2.4 kernel
+only; for 2.6 use <a class="optionref" href="#bcapabilities">bcapabilities</a>.
+      </div>
+          </li>
+          <li>
+            <span class="list" title="/etc/vservers/$vserver-name/ccapabilities">ccapabilities</span>
+            <br />
+            <div class="description">
+[experimental; name is subject of possible change] Contains the
+context capabilities. See <a href="http://savannah.nongnu.org/cgi-bin/viewcvs/util-vserver/util-vserver/lib/ccaps-v13.c?rev=HEAD">lib/ccaps-v13.c</a>
+for possible values.
+      </div>
+          </li>
+          <li>
+            <span class="file" title="/etc/vservers/$vserver-name/context">context</span>
+            <br />
+            <div class="description">
+Contains the context which shall be used for the vserver.
+        </div>
+          </li>
+          <li>
+            <span class="list" title="/etc/vservers/$vserver-name/flags">flags</span>
+            <br />
+            <div class="description">
+Contains per line a flag. See <a href="http://savannah.nongnu.org/cgi-bin/viewcvs/util-vserver/util-vserver/lib/cflags-v13.c?rev=HEAD">lib/cflags-v13.c</a>
+for possible values.
+      </div>
+            <div class="elements">
+              <dl>
+                <dt class="elements">fakeinit</dt>
+                <dd class="elements">
+                  <div class="description">
+The new process will believe it is process number 1. Useful to run a
+real /sbin/init in a vserver. Warning: this flag should not be used
+unless you know what you are doing. Often, it is better to use the
+'plain' initstyle.
+          </div>
+                </dd>
+                <dt class="elements">lock</dt>
+                <dd class="elements">
+                  <div class="description">
+The new process is trapped and can't use chcontext anymore.
+          </div>
+                </dd>
+                <dt class="elements">nproc</dt>
+                <dd class="elements">
+                  <div class="description">
+Limit the number of process in the vserver according to
+ulimit setting. Normally, ulimit is a per user thing.
+With this flag, it becomes a per vserver thing.  
+          </div>
+                </dd>
+                <dt class="elements">private</dt>
+                <dd class="elements">
+                  <div class="description">
+No one can join this security context once created.
+          </div>
+                </dd>
+                <dt class="elements">sched</dt>
+                <dd class="elements">
+                  <div class="description">
+The new process and its children will share a common
+          </div>
+                </dd>
+                <dt class="elements">ulimit</dt>
+                <dd class="elements">
+                  <div class="description">
+Apply the current ulimit to the whole context
+          </div>
+                </dd>
+              </dl>
+            </div>
+          </li>
+          <li id="fstab">
+            <span class="data" title="/etc/vservers/$vserver-name/fstab">fstab</span>
+            <br />
+            <div class="description">
+The fstab file for the vserver. Entries in this file will be mounted
+within the network context of the host. Use the
+<a class="optionref" href="#fstab.remote">fstab.remote</a> file when you want that the
+mounting happens in the network context of the vserver. In most cases
+the 'fstab' file should be used.
+      </div>
+          </li>
+          <li id="fstab.remote">
+            <span class="data" title="/etc/vservers/$vserver-name/fstab.remote">fstab.remote</span>
+            <br />
+            <div class="description">
+The fstab file for the vserver. Entries in this file will be mounted
+within the network context of the host; this means that mount will be
+called as <code class="command">chbind &lt;options&gt; mount ...</code>. See
+<a class="optionref" href="#fstab">fstab</a> also.
+      </div>
+          </li>
+          <li>
+            <span class="file" title="/etc/vservers/$vserver-name/name">name</span>
+            <br />
+            <div class="description">
+Contains the name of the vserver. When not given, the basename of the directory
+will be assumed as this name.
+      </div>
+          </li>
+          <li id="global-namespace">
+            <span class="boolean" title="/etc/vservers/$vserver-name/namespace">namespace</span>
+            <br />
+            <div class="description">
+Overrides the global <a class="optionref" href="#global-nonamespace">nonamespace</a> flag and enables
+namespace usage for the current vserver.
+      </div>
+          </li>
+          <li>
+            <span class="file" title="/etc/vservers/$vserver-name/nice">nice</span>
+            <br />
+            <div class="description">
+The nice-level on which the vserver will be started.
+      </div>
+          </li>
+          <li>
+            <span class="boolean" title="/etc/vservers/$vserver-name/nonamespace">nonamespace</span>
+            <br />
+            <div class="description">
+Disables namespace usage for the current vserver.
+
+In this mode the <span class="directoryname">/vservers</span> directory must have
+the 'barrier' attribute. Else, common chroot(2) exploits are possible.
+      </div>
+          </li>
+          <li>
+            <span class="list" title="/etc/vservers/$vserver-name/personality">personality</span>
+            <br />
+            <div class="description">
+Used to set the personality of the vserver. First line in the file
+is the personality-type followed by flags (one item per line). See
+<a class="filename" href="file:///usr/include/linux/personality.h">/usr/include/linux/personality.h</a> for possible
+values.
+      </div>
+          </li>
+          <li>
+            <span class="symlink" title="/etc/vservers/$vserver-name/run">run</span>
+            <br />
+            <div class="description">
+Points to a file which will contain the XID of the running vserver. When
+the vserver is stopped, this can be a dangling symlink.
+      </div>
+          </li>
+          <li>
+            <span class="hash" title="/etc/vservers/$vserver-name/schedule">schedule</span>
+            <br />
+            <div class="description">
+[experimental; name is subject of possible change] Contains the
+scheduler parameters, one per line.
+
+The Hard CPU limit uses a mechanism called a Token Bucket.  the
+concept is simple: you have a bucket of a certain size which is
+filled with a specified amount R of tokens each interval T until the
+maximum is reached (excess tokens are spilled). At each timer tick,
+a running process consumes one token from the bucket, unless the
+bucket is empty. If the bucket is empty the process is put in the
+hold queue. When the bucket has been refilled to at least M tokens,
+all on hold processes are rescheduled.
+      </div>
+          </li>
+          <li>
+            <span class="file" title="/etc/vservers/$vserver-name/shell">shell</span>
+            <br />
+            <div class="description">
+Contains the pathname of the shell which will be used by the "vserver
+... enter" command.
+      </div>
+          </li>
+          <li>
+            <span class="symlink" title="/etc/vservers/$vserver-name/vdir">vdir</span>
+            <br />
+            <div class="description">
+Path of the vserver root directory
+      </div>
+          </li>
+          <li>
+            <span class="directory">/etc/vservers/<span class="symbolic">vserver-name</span>/<span class="">apps</span></span>
+            <br />
+            <ul>
+              <li>
+                <span class="directory">/etc/vservers/<span class="symbolic">vserver-name</span>/<span class="">apps</span>/<span class="">init</span></span>
+                <br />
+                <ul>
+                  <li>
+                    <span class="list" title="/etc/vservers/$vserver-name/apps/init/cmd.prepare">cmd.prepare</span>
+                    <br />
+                    <div class="description">
+The command which is used to setup the init-system (e.g. to set the
+runlevel in the utmp-file). Each option must be on a separate line.
+         </div>
+                  </li>
+                  <li>
+                    <span class="list" title="/etc/vservers/$vserver-name/apps/init/cmd.start">cmd.start</span>
+                    <br />
+                    <div class="description">
+The command which is used to start the vserver. Each option must be on
+a separate line.
+          </div>
+                  </li>
+                  <li>
+                    <span class="list" title="/etc/vservers/$vserver-name/apps/init/cmd.start-sync">cmd.start-sync</span>
+                    <br />
+                    <div class="description">
+The command which is used to wait on the vserver after it has been
+started. Each option must be on a separate line. This file will be
+ignored when the <a class="optionref" href="#sync">sync</a> flag does not exist and the
+'--sync' option was not used.
+         </div>
+                  </li>
+                  <li>
+                    <span class="list" title="/etc/vservers/$vserver-name/apps/init/cmd.stop">cmd.stop</span>
+                    <br />
+                    <div class="description">
+The command which is used to stop the vserver. Each option must be on
+a separate line.
+          </div>
+                  </li>
+                  <li>
+                    <span class="list" title="/etc/vservers/$vserver-name/apps/init/cmd.stop-sync">cmd.stop-sync</span>
+                    <br />
+                    <div class="description">
+The command which is used to wait on the vserver after it has been
+stopped. Each option must be on a separate line. This file will be
+ignored when the <a class="optionref" href="#sync">sync</a> flag does not exist and the
+'--sync' option was not used.
+          </div>
+                  </li>
+                  <li>
+                    <span class="list" title="/etc/vservers/$vserver-name/apps/init/depends">depends</span>
+                    <br />
+                    <div class="description">
+This file is used to configure vservers which must be running before
+the current vserver can be started. At shutdown, the current vserver
+will be stopped before its dependencies. Content of this file are
+vserver ids (one name per line).
+          </div>
+                  </li>
+                  <li>
+                    <span class="file" title="/etc/vservers/$vserver-name/apps/init/killseq">killseq</span>
+                    <br />
+                    <div class="description">
+Contains the 'signal [wait signal]*' sequence which is used to stop
+the vserver.
+          </div>
+                  </li>
+                  <li>
+                    <span class="file" title="/etc/vservers/$vserver-name/apps/init/mark">mark</span>
+                    <br />
+                    <div class="description">
+This file is used to mark group of vservers which shall be started/stopped
+together by the initscript. Content is a simple string like 'default'.
+         </div>
+                  </li>
+                  <li>
+                    <span class="data" title="/etc/vservers/$vserver-name/apps/init/mtab">mtab</span>
+                    <br />
+                    <div class="description">
+The initial-mtab which will be used for the vserver.
+          </div>
+                  </li>
+                  <li>
+                    <span class="file" title="/etc/vservers/$vserver-name/apps/init/runlevel">runlevel</span>
+                    <br />
+                    <div class="description">The start runlevel.</div>
+                  </li>
+                  <li>
+                    <span class="file" title="/etc/vservers/$vserver-name/apps/init/runlevel.start">runlevel.start</span>
+                    <br />
+                    <div class="description">The start runlevel.</div>
+                  </li>
+                  <li>
+                    <span class="file" title="/etc/vservers/$vserver-name/apps/init/runlevel.stop">runlevel.stop</span>
+                    <br />
+                    <div class="description">The stop runlevel.</div>
+                  </li>
+                  <li>
+                    <span class="file" title="/etc/vservers/$vserver-name/apps/init/style">style</span>
+                    <br />
+                    <div class="description">
+Contains the init-style.
+          </div>
+                  </li>
+                  <li id="sync">
+                    <span class="boolean" title="/etc/vservers/$vserver-name/apps/init/sync">sync</span>
+                    <br />
+                    <div class="description">
+If this file is not present, all 'cmd.*-sync files will be ignored.
+           </div>
+                  </li>
+                  <li>
+                    <span class="symlink" title="/etc/vservers/$vserver-name/apps/init/tty">tty</span>
+                    <br />
+                    <div class="description">
+A symlink to the TTY device where input/output will be redirected
+from/to at startup via initscript.
+         </div>
+                  </li>
+                </ul>
+              </li>
+              <li>
+                <span class="directory">/etc/vservers/<span class="symbolic">vserver-name</span>/<span class="">apps</span>/<span class="">vshelper</span></span>
+                <br />
+                <ul>
+                  <li>
+                    <span class="file" title="/etc/vservers/$vserver-name/apps/vshelper/action">action</span>
+                    <br />
+                    <div class="description">
+The action which is going to be executed when a vshelper event
+occurs. The default value is 'restart', but there can be defined own
+methods by placing scripts into the
+<a class="optionref" href="#vshelper-methods">vshelper-methods</a> directories. These scripts are
+fed with the same arguments as the <code class="tool">vshelper</code> script.
+          </div>
+                  </li>
+                  <li>
+                    <span class="boolean" title="/etc/vservers/$vserver-name/apps/vshelper/debug">debug</span>
+                    <br />
+                    <div class="description">
+When existing, the vshelper execution will be traced for this vserver.
+          </div>
+                  </li>
+                  <li>
+                    <span class="boolean" title="/etc/vservers/$vserver-name/apps/vshelper/disabled">disabled</span>
+                    <br />
+                    <div class="description">
+When existing, the vshelper functionality will be disabled for this
+vserver.
+          </div>
+                  </li>
+                  <li>
+                    <span class="script" title="/etc/vservers/$vserver-name/apps/vshelper/$event">event</span>
+                    <br />
+                    <div class="description">
+When existing, these scripts will be executed *instead* of the default
+handler defined in 'action'. Their name must match the event which caused
+the execution of <code class="tool">vshelper</code>; e.g. 'restart' or 'poweroff'. See
+the vs_reboot() function in the kernel for more details.
+          </div>
+                  </li>
+                  <li>
+                    <span class="file" title="/etc/vservers/$vserver-name/apps/vshelper/sync-timeout">sync-timeout</span>
+                    <br />
+                    <div class="description">
+The timeout in seconds which is used when synchronising vserver
+startup/shutdown with the vshelper. When no set, 30 seconds will be
+assumed.
+         </div>
+                  </li>
+                  <li>
+                    <span class="boolean" title="/etc/vservers/$vserver-name/apps/vshelper/warning-disabled">warning-disabled</span>
+                    <br />
+                    <div class="description">
+When existing, sanity checks for the vshelper functionality will be
+skipped.
+          </div>
+                  </li>
+                </ul>
+              </li>
+              <li id="vshelper-methods">
+                <span class="directory">/etc/vservers/<span class="symbolic">vserver-name</span>/<span class="">apps</span>/<span class="">vshelper-methods</span></span>
+                <br />
+                <ul id="vshelper-methods">
+                  <li>
+                    <span class="script" title="/etc/vservers/$vserver-name/apps/vshelper-methods/$handler">handler</span>
+                    <br />
+                    <div class="description">
+See vshelper/action.
+          </div>
+                  </li>
+                </ul>
+              </li>
+              <li>
+                <span class="directory">/etc/vservers/<span class="symbolic">vserver-name</span>/<span class="">apps</span>/<span class="">vunify</span></span>
+                <br />
+                <div class="description">
+This directory contains configuration data required for vserver
+unification.
+        </div>
+                <ul>
+                  <li>
+                    <span class="list" title="/etc/vservers/$vserver-name/apps/vunify/exclude">exclude</span>
+                    <br />
+                    <div class="description">
+<div>Static list of files which are excluded for unification. This list
+supports an rsync-like syntax: when a file is prefixed by '+', it is a
+candidate for unification; when there is no prefix or a '-' or a '~' it
+will be excluded. Shell-wildcards are allowed for the filenames.</div>
+<div>When used with <code class="tool">vcopy</code>, the '~' prefix prevents copying
+of the file entirely (e.g. for keyfiles). With this tool, the file will
+be copied instead of hardlinked when the '-' prefix is used.</div>
+          </div>
+                  </li>
+                  <li>
+                    <span class="boolean" title="/etc/vservers/$vserver-name/apps/vunify/pgkmgmt-force">pgkmgmt-force</span>
+                    <br />
+                    <div class="description">
+When existing, information from packagemanagement will be used to
+create dynamic exclude-lists. This option requires that (a known)
+packagemanagement is configured for the vserver; else the requested
+operation will fail. Most tools assume 'on' as the default value.
+          </div>
+                  </li>
+                  <li>
+                    <span class="boolean" title="/etc/vservers/$vserver-name/apps/vunify/pkgmgmt-ignore">pkgmgmt-ignore</span>
+                    <br />
+                    <div class="description">
+When existing, information from packagemanagement will not be used to
+create dynamic exclude-lists.
+          </div>
+                  </li>
+                  <li>
+                    <span class="symlink" title="/etc/vservers/$vserver-name/apps/vunify/$refserver.X">refserver.X</span>
+                    <br />
+                    <div class="description">
+These are symlinks to the configuration directory
+(e.g. CONFDIR/vservers/&lt;id&gt;) of a refserver. There may be
+multiple such symlinks but they must be prefixed by 'refserver.' and
+will be processed in alphanumerical order.
+          </div>
+                  </li>
+                  <li>
+                    <span class="directory">/etc/vservers/<span class="symbolic">vserver-name</span>/<span class="">apps</span>/<span class="">vunify</span>/<span class="">hash</span></span>
+                    <br />
+                    <div class="description">
+A directory which will be used as the storage place for the
+<code class="tool">vhashify</code> command.
+          </div>
+                    <ul>
+                      <li>
+                        <span class="symlink" title="/etc/vservers/$vserver-name/apps/vunify/hash/$id">id</span>
+                        <br />
+                        <div class="description">
+Points to a directory within the filesystems which are used for the
+vservers. There must be not more than one of such a directory per
+filesystem.
+            </div>
+                      </li>
+                      <li>
+                        <span class="file" title="/etc/vservers/$vserver-name/apps/vunify/hash/method">method</span>
+                        <br />
+                        <div class="description">The used hash method.</div>
+                      </li>
+                    </ul>
+                  </li>
+                </ul>
+              </li>
+            </ul>
+          </li>
+          <li>
+            <span class="directory">/etc/vservers/<span class="symbolic">vserver-name</span>/<span class="">interfaces</span></span>
+            <br />
+            <ul>
+              <li>
+                <span class="file" title="/etc/vservers/$vserver-name/interfaces/bcast">bcast</span>
+                <br />
+                <div class="description">The default broadcast address.</div>
+              </li>
+              <li>
+                <span class="file" title="/etc/vservers/$vserver-name/interfaces/dev">dev</span>
+                <br />
+                <div class="description">The default network device.</div>
+              </li>
+              <li>
+                <span class="file" title="/etc/vservers/$vserver-name/interfaces/mask">mask</span>
+                <br />
+                <div class="description">The default network mask.</div>
+              </li>
+              <li>
+                <span class="file" title="/etc/vservers/$vserver-name/interfaces/prefix">prefix</span>
+                <br />
+                <div class="description">The default network prefix-length.</div>
+              </li>
+              <li>
+                <span class="file" title="/etc/vservers/$vserver-name/interfaces/scope">scope</span>
+                <br />
+                <div class="description">The default scope of the network interfaces.</div>
+              </li>
+              <li>
+                <span class="directory">/etc/vservers/<span class="symbolic">vserver-name</span>/<span class="">interfaces</span>/<span class="symbolic">iface</span></span>
+                <br />
+                <div class="description">
+'iface' is an arbitrary name for the interface; the value itself is
+not important but may be interesting regarding interface-creation and
+usage with <code class="tool">chbind</code>. Both happens in alphabetical order and
+numbers like '00' are good names for these directories.
+        </div>
+                <ul>
+                  <li>
+                    <span class="file" title="/etc/vservers/$vserver-name/interfaces/$iface/bcast">bcast</span>
+                    <br />
+                    <div class="description">The broadcast address.</div>
+                  </li>
+                  <li>
+                    <span class="file" title="/etc/vservers/$vserver-name/interfaces/$iface/dev">dev</span>
+                    <br />
+                    <div class="description">The network device.</div>
+                  </li>
+                  <li>
+                    <span class="boolean" title="/etc/vservers/$vserver-name/interfaces/$iface/disabled">disabled</span>
+                    <br />
+                    <div class="description">When this file exists, this interface will be ignored.</div>
+                  </li>
+                  <li>
+                    <span class="file" title="/etc/vservers/$vserver-name/interfaces/$iface/ip">ip</span>
+                    <br />
+                    <div class="description">The ip which will be assigned to this interface.</div>
+                  </li>
+                  <li>
+                    <span class="file" title="/etc/vservers/$vserver-name/interfaces/$iface/mask">mask</span>
+                    <br />
+                    <div class="description">The network mask.</div>
+                  </li>
+                  <li>
+                    <span class="file" title="/etc/vservers/$vserver-name/interfaces/$iface/name">name</span>
+                    <br />
+                    <div class="description">
+When this file exists, the interface will be named with the text in
+this file. Without such an entry, the IP will not be shown by
+<code class="tool">ifconfig</code> but by <code class="command">ip addr ls</code> only.  Such
+a labeled interface is known as an "alias" also (e.g. 'eth0:foo').
+          </div>
+                  </li>
+                  <li>
+                    <span class="boolean" title="/etc/vservers/$vserver-name/interfaces/$iface/nodev">nodev</span>
+                    <br />
+                    <div class="description">
+When this file exists, the interface will be assumed to exist
+already. This can be used to assign primary interfaces which are
+created by the host or another vserver.
+         </div>
+                  </li>
+                  <li>
+                    <span class="file" title="/etc/vservers/$vserver-name/interfaces/$iface/prefix">prefix</span>
+                    <br />
+                    <div class="description">The network prefix-length.</div>
+                  </li>
+                  <li>
+                    <span class="file" title="/etc/vservers/$vserver-name/interfaces/$iface/scope">scope</span>
+                    <br />
+                    <div class="description">The scope of the network interface.</div>
+                  </li>
+                </ul>
+              </li>
+            </ul>
+          </li>
+          <li>
+            <span class="directory">/etc/vservers/<span class="symbolic">vserver-name</span>/<span class="">rlimits</span></span>
+            <br />
+            <div class="description">
+A directory with resource limits. Possible resources are cpu, fsize,
+data, stack, core, rss, nproc, nofile, memlock, as and locks. This
+configuration will be honored for kernel 2.6 only.
+      </div>
+            <ul>
+              <li>
+                <span class="file" title="/etc/vservers/$vserver-name/rlimits/$resource">resource</span>
+                <br />
+                <div class="description">
+A file which contains the hard- and soft-limit of the given resource
+in the first line. The special keyword 'inf' is recognized.
+       </div>
+              </li>
+              <li>
+                <span class="file" title="/etc/vservers/$vserver-name/rlimits/$resource.hard">resource.hard</span>
+                <br />
+                <div class="description">
+A file which contains the hard- of the given resource in the first
+line. The special keyword 'inf' is recognized.
+       </div>
+              </li>
+              <li>
+                <span class="file" title="/etc/vservers/$vserver-name/rlimits/$resource.min">resource.min</span>
+                <br />
+                <div class="description">
+A file which contains the guaranted minimum of the given resource in
+the first line. The special keyword 'inf' is recognized.
+        </div>
+              </li>
+              <li>
+                <span class="file" title="/etc/vservers/$vserver-name/rlimits/$resource.soft">resource.soft</span>
+                <br />
+                <div class="description">
+A file which contains the soft- of the given resource in the first
+line. The special keyword 'inf' is recognized.
+       </div>
+              </li>
+            </ul>
+          </li>
+          <li>
+            <span class="directory">/etc/vservers/<span class="symbolic">vserver-name</span>/<span class="">scripts</span></span>
+            <br />
+            <div class="description">
+A directory for scripts. By default, when one of these scripts will be
+executed, the execution of defaultscripts (within .../.defaults/scripts)
+will be skipped. To execute them nevertheless, the $DONT_SKIP_DEFAULTS
+environment variable must be set by one of the in-shellcontext scripts
+(the non-executable ones).
+      </div>
+            <ul>
+              <li>
+                <span class="script" title="/etc/vservers/$vserver-name/scripts/post-start">post-start</span>
+                <br />
+                <div class="description">
+The scriptlet which will be executed after the vserver has been
+started. Before executing the script, the vserver root directory
+will be made the working directory.
+        </div>
+              </li>
+              <li>
+                <span class="script" title="/etc/vservers/$vserver-name/scripts/post-stop">post-stop</span>
+                <br />
+                <div class="description">
+The scriptlet which will be executed after the vserver has been
+stopped, but before the directories will be umounted and the the
+interfaces disabled. Before executing the script, the vserver root
+directory will be made the working directory.
+        </div>
+              </li>
+              <li>
+                <span class="script" title="/etc/vservers/$vserver-name/scripts/postpost-stop">postpost-stop</span>
+                <br />
+                <div class="description">
+The scriptlet which will be executed after the vserver has been stopped
+completely. Before executing the script, the vserver root directory
+will be made the working directory.
+        </div>
+              </li>
+              <li>
+                <span class="script" title="/etc/vservers/$vserver-name/scripts/pre-start">pre-start</span>
+                <br />
+                <div class="description">
+The scriptlet which will be executed after network-interfaces were
+enabled and the directories mounted, but before the vserver itself has
+been started.  Before executing the script, the vserver root directory
+will be made the working directory.
+        </div>
+              </li>
+              <li>
+                <span class="script" title="/etc/vservers/$vserver-name/scripts/pre-stop">pre-stop</span>
+                <br />
+                <div class="description">
+The scriptlet which will be executed before the vserver will be
+stopped. Before executing the script, the vserver root directory
+will be made the working directory.
+        </div>
+              </li>
+              <li>
+                <span class="script" title="/etc/vservers/$vserver-name/scripts/prepre-start">prepre-start</span>
+                <br />
+                <div class="description">
+The scriptlet which will be executed before the network-interfaces are
+enabled and the directories are mounted. Before executing the script,
+the configuration directory will be made the working directory.
+        </div>
+              </li>
+              <li>
+                <span class="directory">/etc/vservers/<span class="symbolic">vserver-name</span>/<span class="">scripts</span>/<span class="">post-start.d</span></span>
+                <br />
+                <div class="description">
+Repository of post-start like scripts. Before executing these scripts,
+the vserver root directory will be made the working directory.
+        </div>
+                <ul>
+                  <li>
+                    <span class="script" title="/etc/vservers/$vserver-name/scripts/post-start.d/$script">script</span>
+                    <br />
+                    <div class="description">See post-start.</div>
+                  </li>
+                </ul>
+              </li>
+              <li>
+                <span class="directory">/etc/vservers/<span class="symbolic">vserver-name</span>/<span class="">scripts</span>/<span class="">post-stop.d</span></span>
+                <br />
+                <div class="description">
+Repository of post-stop like scripts. Before executing the script, the
+vserver root directory will be made the working directory.
+        </div>
+                <ul>
+                  <li>
+                    <span class="script" title="/etc/vservers/$vserver-name/scripts/post-stop.d/$script">script</span>
+                    <br />
+                    <div class="description">See post-stop.</div>
+                  </li>
+                </ul>
+              </li>
+              <li>
+                <span class="directory">/etc/vservers/<span class="symbolic">vserver-name</span>/<span class="">scripts</span>/<span class="">postpost-stop.d</span></span>
+                <br />
+                <div class="description">
+Repository of postpost-stop like scripts. Before executing the script,
+the vserver root directory will be made the working directory.
+        </div>
+                <ul>
+                  <li>
+                    <span class="script" title="/etc/vservers/$vserver-name/scripts/postpost-stop.d/$script">script</span>
+                    <br />
+                    <div class="description">See postpost-stop.</div>
+                  </li>
+                </ul>
+              </li>
+              <li>
+                <span class="directory">/etc/vservers/<span class="symbolic">vserver-name</span>/<span class="">scripts</span>/<span class="">pre-start.d</span></span>
+                <br />
+                <div class="description">
+Repository of pre-start like scripts. Before executing these scripts,
+the vserver root directory will be made the working directory.
+        </div>
+                <ul>
+                  <li>
+                    <span class="script" title="/etc/vservers/$vserver-name/scripts/pre-start.d/$script">script</span>
+                    <br />
+                    <div class="description">See pre-start.</div>
+                  </li>
+                </ul>
+              </li>
+              <li>
+                <span class="directory">/etc/vservers/<span class="symbolic">vserver-name</span>/<span class="">scripts</span>/<span class="">pre-stop.d</span></span>
+                <br />
+                <div class="description">
+Repository of pre-stop like scripts. Before executing the script, the
+vserver root directory will be made the working directory.
+        </div>
+                <ul>
+                  <li>
+                    <span class="script" title="/etc/vservers/$vserver-name/scripts/pre-stop.d/$script">script</span>
+                    <br />
+                    <div class="description">See pre-stop.</div>
+                  </li>
+                </ul>
+              </li>
+              <li>
+                <span class="directory">/etc/vservers/<span class="symbolic">vserver-name</span>/<span class="">scripts</span>/<span class="">prepre-start.d</span></span>
+                <br />
+                <div class="description">
+Repository of prepre-start like scripts.  Before executing the script,
+the configuration directory will be made the working directory.
+        </div>
+                <ul>
+                  <li>
+                    <span class="script" title="/etc/vservers/$vserver-name/scripts/prepre-start.d/$script">script</span>
+                    <br />
+                    <div class="description">See prepre-start.</div>
+                  </li>
+                </ul>
+              </li>
+            </ul>
+          </li>
+          <li>
+            <span class="directory">/etc/vservers/<span class="symbolic">vserver-name</span>/<span class="">ulimits</span></span>
+            <br />
+            <div class="description">
+A directory with ulimits. Possible resources are cpu, data, fsize,
+locks, memlock, nofile, nproc, rss and/or stack. This configuration
+will be honored for kernel 2.4 only.
+      </div>
+            <ul>
+              <li>
+                <span class="file" title="/etc/vservers/$vserver-name/ulimits/$resource">resource</span>
+                <br />
+                <div class="description">
+A file which contains the hard- and soft-limit of the given resource
+in the first line. The special keyword 'inf' is recognized.
+       </div>
+              </li>
+              <li>
+                <span class="file" title="/etc/vservers/$vserver-name/ulimits/$resource.hard">resource.hard</span>
+                <br />
+                <div class="description">
+A file which contains the hard- of the given resource in the first
+line. The special keyword 'inf' is recognized.
+       </div>
+              </li>
+              <li>
+                <span class="file" title="/etc/vservers/$vserver-name/ulimits/$resource.soft">resource.soft</span>
+                <br />
+                <div class="description">
+A file which contains the soft- of the given resource in the first
+line. The special keyword 'inf' is recognized.
+       </div>
+              </li>
+            </ul>
+          </li>
+          <li>
+            <span class="directory">/etc/vservers/<span class="symbolic">vserver-name</span>/<span class="">uts</span></span>
+            <br />
+            <ul>
+              <li>
+                <span class="file" title="/etc/vservers/$vserver-name/uts/context">context</span>
+                <br />
+                <div class="description">
+The context-name of the vserver. This file is listed for completeness
+only; the 'context' name is used and set internally by the util-vserver
+tools and can *not* be modified.
+       </div>
+              </li>
+              <li>
+                <span class="file" title="/etc/vservers/$vserver-name/uts/domainname">domainname</span>
+                <br />
+                <div class="description">The NIS domainname of the vserver</div>
+              </li>
+              <li>
+                <span class="file" title="/etc/vservers/$vserver-name/uts/machine">machine</span>
+                <br />
+                <div class="description">The machine-type of the vserver</div>
+              </li>
+              <li>
+                <span class="file" title="/etc/vservers/$vserver-name/uts/nodename">nodename</span>
+                <br />
+                <div class="description">The node-/hostname of the vserver</div>
+              </li>
+              <li>
+                <span class="file" title="/etc/vservers/$vserver-name/uts/release">release</span>
+                <br />
+                <div class="description">The OS-release of the vserver</div>
+              </li>
+              <li>
+                <span class="file" title="/etc/vservers/$vserver-name/uts/sysname">sysname</span>
+                <br />
+                <div class="description">The sysname of the vserver</div>
+              </li>
+              <li>
+                <span class="file" title="/etc/vservers/$vserver-name/uts/version">version</span>
+                <br />
+                <div class="description">The OS-version of the vserver</div>
+              </li>
+            </ul>
+          </li>
+        </ul>
+      </li>
+    </ul>
+  </body>
+</html>
diff --git a/doc/configuration.xml b/doc/configuration.xml
new file mode 100644 (file)
index 0000000..04b5ecf
--- /dev/null
@@ -0,0 +1,1160 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE database SYSTEM "configuration.dtd" []>
+<!-- $Id: configuration.xml,v 1.36 2005/07/03 14:03:42 ensc Exp $ -->
+
+<database xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          xsi:noNamespaceSchemaLocation="file:configuration.xsd">
+
+  <!-- Global configuration -->
+  <collection name=".defaults" use="optional">
+    <collection name="init" type="fixed">
+      <data name="mtab">
+       <description>Default mtab file</description>
+      </data>
+    </collection>
+
+    <link name="vdirbase">
+      <default>/vservers</default>
+      <description>A link to the default vserver rootdirectory.</description>
+    </link>
+
+
+    <boolean id="global-nonamespace" name="nonamespace">
+      <description>
+Disable namespace usage globally. It can be overridden for a single vserver
+by setting the <optionref ref="global-namespace">namespace</optionref> flag
+there.
+
+In this mode the <directory>/vservers</directory> directory must have
+the 'barrier' attribute. Else, common chroot(2) exploits are possible.
+      </description>
+    </boolean>
+
+    <link name="run.rev">
+      <description>
+Path of the vserver run reverse directory. This directory contains
+symlinks named with XID numbers which point back to the configuration
+directory of vservers. Under kernel 2.4 this is required for the XID
+to VSERVER mapping; Under kernel 2.6 it is unused.
+
+NOTE: this link exists in 0.30.202+ only; in previous versions it was
+a vserver specific setting.
+      </description>
+    </link>
+    
+    <collection name="apps">
+      <collection name="pkgmgmt">
+       <link name="base">
+         <default>/vservers/.pkg</default>
+       </link> 
+       <data name="apt.conf">
+         <description>The default apt.conf which is going to be used. It is overridden by
+distribution specific configuration file.
+          </description>
+       </data>
+      </collection>
+      
+      <collection name="debootstrap">
+       <scalar name="mirror">
+         <description>
+The Debian mirror to use with the <tool>debootstrap</tool> program
+          </description>
+       </scalar>
+       <scalar name="uri">
+         <description>
+When the <tool>debootstrap</tool> package is not installed; fetch it
+from this uri and install it at a temporary place.
+          </description>
+       </scalar>
+      </collection>
+
+      <collection name="vshelper">
+       <link name="logfile">
+         <description>
+The file where output will be logged to when <tool>vshelper</tool>
+is invoked from the kernel. This should point somewhere e.g. into
+<directory>/var/log</directory>.
+          </description>
+       </link>
+
+       <collection name="vshelper-methods">
+         <program name="handler" type="symbolic">
+           <description>
+See vshelper/action.
+            </description>
+         </program>
+       </collection>
+
+       <boolean name="disabled">
+         <description>
+When existing, the vshelper functionality will be disabled for all
+vservers.
+          </description>
+       </boolean>
+
+       <boolean name="debug">
+         <description>
+When existing, the vshelper execution will be traced.
+          </description>
+       </boolean>
+       
+       <boolean name="warning-disabled">
+         <description>
+When existing, sanity checks for the vshelper functionality will be
+skipped.
+          </description>
+       </boolean>
+
+      </collection>
+      
+      <collection name="vprocunhide">
+       <list name="files">
+         <description>
+A list of files which will be made visibly by vprocunhide. Wildcards are
+allowed and anything ending in '/' will be processed recursively. When this file exists,
+it overrides the defaults in SYSDEFAULTDIR/vprocunhide-files. The entries there must be
+absolute filenames inclusive the leading '/proc'.
+          </description>
+       </list>
+      </collection>
+      
+      <collection name="init">
+       <link name="tty">
+         <description>
+A symlink to the TTY device where input/output will be redirected from/to
+at startup via initscript.
+          </description>
+       </link>
+      </collection>
+      
+      <collection name="vunify">
+       <list name="exclude">
+         <description>Static list of excluded files.</description>
+       </list>
+
+       <collection name="hash" since="0.30.205">
+         <description>
+A directory which will be used as the storage place for the
+<tool>vhashify</tool> command.
+          </description>
+         <link name="id" type="symbolic">
+           <description>
+Points to a directory within the filesystems which are used for the
+vservers. There must be not more than one of such a directory per
+filesystem.
+            </description>
+         </link>
+
+         <scalar name="method" since="0.30.299">
+           <default>SHA1</default>
+           <description>The used hash method.</description>
+         </scalar>
+       </collection>
+
+       <boolean name="pkgmgmt-ignore" default="off" since="0.30.205">
+         <description>
+When existing, information from packagemanagement will not be used to
+create dynamic exclude-lists.
+          </description>
+       </boolean>
+
+       <boolean name="pgkmgmt-force" default="off" since="0.30.205">
+         <description>
+When existing, information from packagemanagement will be used to
+create dynamic exclude-lists. This option requires that (a known)
+packagemanagement is configured for the vserver; else the requested
+operation will fail. Most tools assume 'on' as the default value.
+          </description>
+       </boolean>
+
+      </collection>
+    </collection>
+  </collection>
+    
+  <collection name=".distributions" use="optional">
+    <collection name="dist" type="symbolic">
+      <scalar name="dev">
+       <description></description>
+      </scalar>
+      <collection name="yum">
+       <description>
+The default, yum-related content of the <directory>/etc</directory>
+directory.
+        </description>
+       <scalar name="yum.conf">
+         <description>
+The master yum configuration file. It supports the @YUMETCDIR@,
+@YUMCACHEDIR@ and @YUMLOGDIR@ placeholder which will be replaced at
+<command>vserver ... build</command> time.
+          </description>
+       </scalar>
+      </collection>
+      <collection name="yum.repos.d">
+       <description>A directory with yum repositories.</description>
+      </collection>
+      <data name="apt.conf">
+       <description>
+The default apt.conf which is going to be used. It overrides the
+apt.conf from CONFDIR/.defaults/apps/pkgmgmt.
+        </description>
+      </data>
+      <program name="initpre">
+       <description>
+Script which will be executed before packages will be installed.
+          </description>
+       <parameterList>
+         <parameter name="confdir">
+           <description>
+The configuration directory of the vserver which is going to be set up.
+            </description>
+         </parameter>
+         <parameter name="vserver">
+           <description>
+The pathname of the vserver binary.
+            </description>
+         </parameter>
+       </parameterList>
+      </program>
+      <program name="initpost">
+       <description>
+Script which will be executed after packages are installed.
+          </description>
+       <parameterList>
+         <parameter name="confdir">
+           <description>
+The configuration directory of the vserver which is going to be set up.
+            </description>
+         </parameter>
+         <parameter name="vserver">
+           <description>
+The pathname of the vserver binary.
+            </description>
+         </parameter>
+       </parameterList>
+      </program>
+      
+      <collection name="pkgs">
+       <description>
+Contains files with packagenames.
+        </description>
+       <list name="list">
+         <description>
+File which contains the name of packages. On top of file the special
+keywords '--reinstall' and '--can-fail' are possible.
+          </description>
+       </list>
+      </collection>
+      
+      <collection name="pubkeys">
+       <description>
+Directory with GPG pubkeys which are used to sign the packages of this
+distribution.
+        </description>
+      </collection>
+      
+      <collection name="apt">
+       <description>
+Default content of the <directory>/etc/apt/</directory> directory.
+        </description>
+      </collection>
+      
+      <collection name="rpm">
+       <description>
+Default content of the <directory>/etc/rpm</directory> directory.
+        </description>
+      </collection>
+      
+      <link name="rpmlib">
+       <description>
+Directory which overrides <directory>/usr/lib/rpm</directory>.
+        </description>
+      </link>
+      <link name="execdir">
+       <description>
+Directory with all executables and libraries which are required for
+this distribution.
+        </description>
+      </link>
+    </collection>
+  </collection>
+  
+  <!-- Vserver configuration -->
+  <collection name="vserver-name" type="symbolic">
+    <description>
+The configuration directory for the vserver vserver-name.
+    </description>
+    
+    <link name="vdir">
+      <description>
+Path of the vserver root directory
+      </description>
+    </link>
+
+    <link name="run">
+      <description>
+Points to a file which will contain the XID of the running vserver. When
+the vserver is stopped, this can be a dangling symlink.
+      </description>
+    </link>
+
+    <list id="bcapabilities" name="bcapabilities">
+      <description>
+[experimental; name is subject of possible change] Contains the system capabilities. See
+<ulink url="http://savannah.nongnu.org/cgi-bin/viewcvs/util-vserver/util-vserver/lib/bcaps-v13.c?rev=HEAD">lib/bcaps-v13.c</ulink>
+for possible values.
+      </description>
+    </list>
+    <list name="ccapabilities">
+      <description>
+[experimental; name is subject of possible change] Contains the
+context capabilities. See <ulink
+url="http://savannah.nongnu.org/cgi-bin/viewcvs/util-vserver/util-vserver/lib/ccaps-v13.c?rev=HEAD">lib/ccaps-v13.c</ulink>
+for possible values.
+      </description>
+    </list>
+
+    <boolean id="global-namespace" name="namespace">
+      <description>
+Overrides the global <optionref ref="global-nonamespace">nonamespace</optionref> flag and enables
+namespace usage for the current vserver.
+      </description>
+    </boolean>
+
+    <boolean name="nonamespace">
+      <description>
+Disables namespace usage for the current vserver.
+
+In this mode the <directory>/vservers</directory> directory must have
+the 'barrier' attribute. Else, common chroot(2) exploits are possible.
+      </description>
+    </boolean>
+
+    <hash name="schedule">
+      <description>
+[experimental; name is subject of possible change] Contains the
+scheduler parameters, one per line.
+
+The Hard CPU limit uses a mechanism called a Token Bucket.  the
+concept is simple: you have a bucket of a certain size which is
+filled with a specified amount R of tokens each interval T until the
+maximum is reached (excess tokens are spilled). At each timer tick,
+a running process consumes one token from the bucket, unless the
+bucket is empty. If the bucket is empty the process is put in the
+hold queue. When the bucket has been refilled to at least M tokens,
+all on hold processes are rescheduled.
+      </description>
+      <keys>
+       <key id="fill_rate" name="fill-rate">
+         <description>
+Amount of tokens append to the bucket each interval.
+            </description>
+       </key>
+       <key name="interval">
+         <description>
+The intervall between refills of amount <optionref>fill_rate</optionref>. This
+value is express in ticks.
+          </description>
+       </key>
+       <key name="tokens">
+         <description>
+Initial bucket contents.
+          </description>
+       </key>
+       <key name="tokens-min">
+         <description>
+The minimum amount of tokens required to unhold processes
+          </description>
+       </key>
+       <key name="tokens-max">
+         <description>
+The bucket size.
+          </description>
+       </key>
+       <key name="priority-bias">
+         <description>
+???
+          </description>
+       </key>
+      </keys>
+    </hash>
+    <scalar name="name">
+      <description>
+Contains the name of the vserver. When not given, the basename of the directory
+will be assumed as this name.
+      </description>
+    </scalar>
+    <scalar name="nice">
+      <description>
+The nice-level on which the vserver will be started.
+      </description>
+    </scalar>
+    <list name="capabilities">
+      <description>
+Contains per line a capability. This file is used for the 2.4 kernel
+only; for 2.6 use <optionref>bcapabilities</optionref>.
+      </description>
+    </list>
+    <scalar name="shell">
+      <description>
+Contains the pathname of the shell which will be used by the "vserver
+... enter" command.
+      </description>
+    </scalar>
+    <list name="personality">
+      <description>
+Used to set the personality of the vserver. First line in the file
+is the personality-type followed by flags (one item per line). See
+<filename>/usr/include/linux/personality.h</filename> for possible
+values.
+      </description>
+    </list>
+    <list name="flags">
+      <description>
+Contains per line a flag. See <ulink
+url="http://savannah.nongnu.org/cgi-bin/viewcvs/util-vserver/util-vserver/lib/cflags-v13.c?rev=HEAD">lib/cflags-v13.c</ulink>
+for possible values.
+      </description>
+      <elements>
+       <element name="fakeinit">
+         <description>
+The new process will believe it is process number 1. Useful to run a
+real /sbin/init in a vserver. Warning: this flag should not be used
+unless you know what you are doing. Often, it is better to use the
+'plain' initstyle.
+          </description>
+       </element>
+       <element name="lock">
+         <description>
+The new process is trapped and can't use chcontext anymore.
+          </description>
+       </element>
+       <element name="sched">
+         <description>
+The new process and its children will share a common
+          </description>
+       </element>
+       <element name="nproc">
+         <description>
+Limit the number of process in the vserver according to
+ulimit setting. Normally, ulimit is a per user thing.
+With this flag, it becomes a per vserver thing.  
+          </description>
+       </element>
+       <element name="private">
+         <description>
+No one can join this security context once created.
+          </description>
+       </element>
+       <element name="ulimit">
+         <description>
+Apply the current ulimit to the whole context
+          </description>
+       </element>
+      </elements>
+    </list>
+    <scalar name="context">
+      <description>
+Contains the context which shall be used for the vserver.
+        </description>
+    </scalar>
+    <data id="fstab" name="fstab">
+      <description>
+The fstab file for the vserver. Entries in this file will be mounted
+within the network context of the host. Use the
+<optionref>fstab.remote</optionref> file when you want that the
+mounting happens in the network context of the vserver. In most cases
+the 'fstab' file should be used.
+      </description>
+    </data>
+    <data id="fstab.remote" name="fstab.remote">
+      <description>
+The fstab file for the vserver. Entries in this file will be mounted
+within the network context of the host; this means that mount will be
+called as <command>chbind &lt;options&gt; mount ...</command>. See
+<optionref>fstab</optionref> also.
+      </description>
+    </data>
+    
+    <collection name="apps">
+      <collection name="init">
+       <data name="mtab">
+         <description>
+The initial-mtab which will be used for the vserver.
+          </description>
+       </data>
+       
+       <scalar name="style">
+         <description>
+Contains the init-style.
+          </description>
+         <restriction>
+           <enumeration value="sysv"/>
+           <enumeration value="plain"/>
+           <enumeration value="minit"/>
+           <enumeration value="gento"/>
+         </restriction>
+       </scalar>
+       
+       <scalar name="runlevel">
+         <description>The start runlevel.</description>
+       </scalar>
+       
+       <scalar name="runlevel.start">
+         <description>The start runlevel.</description>
+       </scalar>
+       
+       <scalar name="runlevel.stop">
+         <description>The stop runlevel.</description>
+       </scalar>
+       
+       <scalar name="killseq">
+         <description>
+Contains the 'signal [wait signal]*' sequence which is used to stop
+the vserver.
+          </description>
+       </scalar>
+       
+       <list name="cmd.start">
+         <description>
+The command which is used to start the vserver. Each option must be on
+a separate line.
+          </description>
+       </list>
+       
+       <list name="cmd.start-sync">
+         <description>
+The command which is used to wait on the vserver after it has been
+started. Each option must be on a separate line. This file will be
+ignored when the <optionref>sync</optionref> flag does not exist and the
+'--sync' option was not used.
+         </description>
+       </list>
+       
+       <list name="cmd.stop">
+         <description>
+The command which is used to stop the vserver. Each option must be on
+a separate line.
+          </description>
+       </list>
+       
+       <list name="cmd.stop-sync">
+         <description>
+The command which is used to wait on the vserver after it has been
+stopped. Each option must be on a separate line. This file will be
+ignored when the <optionref>sync</optionref> flag does not exist and the
+'--sync' option was not used.
+          </description>
+       </list>
+       
+       <list name="cmd.prepare">
+         <description>
+The command which is used to setup the init-system (e.g. to set the
+runlevel in the utmp-file). Each option must be on a separate line.
+         </description>
+       </list>
+       
+       <boolean id="sync" name="sync">
+         <description>
+If this file is not present, all 'cmd.*-sync files will be ignored.
+           </description>
+       </boolean>
+       
+       <link name="tty">
+         <description>
+A symlink to the TTY device where input/output will be redirected
+from/to at startup via initscript.
+         </description>
+       </link>
+       
+       <scalar name="mark">
+         <description>
+This file is used to mark group of vservers which shall be started/stopped
+together by the initscript. Content is a simple string like 'default'.
+         </description>
+       </scalar>
+       
+       <list name="depends">
+         <description>
+This file is used to configure vservers which must be running before
+the current vserver can be started. At shutdown, the current vserver
+will be stopped before its dependencies. Content of this file are
+vserver ids (one name per line).
+          </description>
+       </list>
+      </collection>
+      
+      <collection name="vshelper">
+       <scalar name="sync-timeout">
+         <default>30</default>
+         <description>
+The timeout in seconds which is used when synchronising vserver
+startup/shutdown with the vshelper. When no set, 30 seconds will be
+assumed.
+         </description>
+       </scalar>
+       
+       <scalar name="action">
+         <default>restart</default>
+         <description>
+The action which is going to be executed when a vshelper event
+occurs. The default value is 'restart', but there can be defined own
+methods by placing scripts into the
+<optionref>vshelper-methods</optionref> directories. These scripts are
+fed with the same arguments as the <tool>vshelper</tool> script.
+          </description>
+       </scalar>
+       
+       <program name="event" type="symbolic">
+         <description>
+When existing, these scripts will be executed *instead* of the default
+handler defined in 'action'. Their name must match the event which caused
+the execution of <tool>vshelper</tool>; e.g. 'restart' or 'poweroff'. See
+the vs_reboot() function in the kernel for more details.
+          </description>
+         <parameterList>
+           <parameter name="xid">
+             <description>
+The xid of the context calling the vshelper
+              </description>
+           </parameter>
+           <parameter name="event">
+             <description>
+The reboot-event.
+              </description>
+           </parameter>
+         </parameterList>
+       </program>
+       
+       <boolean name="disabled">
+         <description>
+When existing, the vshelper functionality will be disabled for this
+vserver.
+          </description>
+       </boolean>
+
+       <boolean name="debug">
+         <description>
+When existing, the vshelper execution will be traced for this vserver.
+          </description>
+       </boolean>
+       
+       <boolean name="warning-disabled">
+         <description>
+When existing, sanity checks for the vshelper functionality will be
+skipped.
+          </description>
+       </boolean>
+       
+      </collection>
+      
+      <collection id="vshelper-methods" name="vshelper-methods">
+       <program name="handler" type="symbolic">
+         <description>
+See vshelper/action.
+          </description>
+       </program>
+      </collection>
+      
+      <collection name="vunify">
+       <description>
+This directory contains configuration data required for vserver
+unification.
+        </description>
+       
+       <list name="exclude">
+         <description>
+<p>Static list of files which are excluded for unification. This list
+supports an rsync-like syntax: when a file is prefixed by '+', it is a
+candidate for unification; when there is no prefix or a '-' or a '~' it
+will be excluded. Shell-wildcards are allowed for the filenames.</p>
+<p>When used with <tool>vcopy</tool>, the '~' prefix prevents copying
+of the file entirely (e.g. for keyfiles). With this tool, the file will
+be copied instead of hardlinked when the '-' prefix is used.</p>
+          </description>
+       </list>
+       
+       <link name="refserver.X" type="symbolic">
+         <description>
+These are symlinks to the configuration directory
+(e.g. CONFDIR/vservers/&lt;id&gt;) of a refserver. There may be
+multiple such symlinks but they must be prefixed by 'refserver.' and
+will be processed in alphanumerical order.
+          </description>
+       </link>
+
+       <collection name="hash" since="0.30.205">
+         <description>
+A directory which will be used as the storage place for the
+<tool>vhashify</tool> command.
+          </description>
+         <link name="id" type="symbolic">
+           <description>
+Points to a directory within the filesystems which are used for the
+vservers. There must be not more than one of such a directory per
+filesystem.
+            </description>
+         </link>
+
+         <scalar name="method"  since="0.30.299">
+           <default>SHA1</default>
+           <description>The used hash method.</description>
+         </scalar>
+       </collection>
+
+       <boolean name="pkgmgmt-ignore" default="off" since="0.30.205">
+         <description>
+When existing, information from packagemanagement will not be used to
+create dynamic exclude-lists.
+          </description>
+       </boolean>
+
+       <boolean name="pgkmgmt-force" default="off" since="0.30.205">
+         <description>
+When existing, information from packagemanagement will be used to
+create dynamic exclude-lists. This option requires that (a known)
+packagemanagement is configured for the vserver; else the requested
+operation will fail. Most tools assume 'on' as the default value.
+          </description>
+       </boolean>
+       
+      </collection>
+    </collection>
+    
+    <collection name="scripts">
+      <description>
+A directory for scripts. By default, when one of these scripts will be
+executed, the execution of defaultscripts (within .../.defaults/scripts)
+will be skipped. To execute them nevertheless, the $DONT_SKIP_DEFAULTS
+environment variable must be set by one of the in-shellcontext scripts
+(the non-executable ones).
+      </description>
+      
+      <program name="prepre-start">
+       <description>
+The scriptlet which will be executed before the network-interfaces are
+enabled and the directories are mounted. Before executing the script,
+the configuration directory will be made the working directory.
+        </description>
+       <parameterList>
+         <parameter name="vserver-dir">
+           <description>
+The configuration directory of the current vserver.
+            </description>
+         </parameter>
+         <parameter name="vserver-name">
+           <description>
+The name of the current vserver.
+            </description>
+         </parameter>
+         <parameter name="action">
+           <description>
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
+            </description>
+         </parameter>
+       </parameterList>
+      </program>
+      <collection name="prepre-start.d">
+       <description>
+Repository of prepre-start like scripts.  Before executing the script,
+the configuration directory will be made the working directory.
+        </description>                                                                                                                 
+       <program name="script" type="symbolic">
+         <description>See prepre-start.</description>
+         <parameterList>
+           <parameter name="vserver-dir">
+             <description>
+The configuration directory of the current vserver.
+              </description>
+           </parameter>
+           <parameter name="vserver-name">
+             <description>
+The name of the current vserver.
+              </description>
+           </parameter>
+           <parameter name="action">
+             <description>
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
+              </description>
+           </parameter>
+         </parameterList>
+       </program>
+      </collection>
+      
+      <program name="pre-start">
+       <description>
+The scriptlet which will be executed after network-interfaces were
+enabled and the directories mounted, but before the vserver itself has
+been started.  Before executing the script, the vserver root directory
+will be made the working directory.
+        </description>
+       <parameterList>
+         <parameter name="vserver-dir">
+           <description>
+The configuration directory of the current vserver.
+            </description>
+         </parameter>
+         <parameter name="vserver-name">
+           <description>
+The name of the current vserver.
+            </description>
+         </parameter>
+         <parameter name="action">
+           <description>
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
+            </description>
+         </parameter>
+       </parameterList>
+      </program>
+      <collection name="pre-start.d">
+       <description>
+Repository of pre-start like scripts. Before executing these scripts,
+the vserver root directory will be made the working directory.
+        </description>                                                                                                                 
+       <program name="script" type="symbolic">
+         <description>See pre-start.</description>
+         <parameterList>
+           <parameter name="vserver-dir">
+             <description>
+The configuration directory of the current vserver.
+              </description>
+           </parameter>
+           <parameter name="vserver-name">
+             <description>The name of the current vserver.</description>
+           </parameter>
+           <parameter name="action">
+             <description>
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
+              </description>
+           </parameter>
+         </parameterList>
+       </program>
+      </collection>
+      
+
+      <program name="post-start">
+       <description>
+The scriptlet which will be executed after the vserver has been
+started. Before executing the script, the vserver root directory
+will be made the working directory.
+        </description>
+       <parameterList>
+         <parameter name="vserver-dir">
+           <description>The configuration directory of the current vserver.</description>
+         </parameter>
+         <parameter name="vserver-name">
+           <description>The name of the current vserver.</description>
+         </parameter>
+         <parameter name="action">
+           <description>
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
+            </description>
+         </parameter>
+       </parameterList>
+      </program>
+      <collection name="post-start.d">
+       <description>
+Repository of post-start like scripts. Before executing these scripts,
+the vserver root directory will be made the working directory.
+        </description>
+       <program name="script" type="symbolic">
+         <description>See post-start.</description>
+         <parameterList>
+           <parameter name="vserver-dir">
+             <description>The configuration directory of the current vserver.</description>
+           </parameter>
+           <parameter name="vserver-name">
+             <description>The name of the current vserver.</description>
+           </parameter>
+           <parameter name="action">
+             <description>
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
+              </description>
+           </parameter>
+         </parameterList>
+       </program>
+      </collection>
+
+
+      <program name="pre-stop">
+       <description>
+The scriptlet which will be executed before the vserver will be
+stopped. Before executing the script, the vserver root directory
+will be made the working directory.
+        </description>
+       <parameterList>
+         <parameter name="vserver-dir">
+           <description>The configuration directory of the current vserver.</description>
+         </parameter>
+         <parameter name="vserver-name">
+           <description>The name of the current vserver.</description>
+         </parameter>
+         <parameter name="action">
+           <description>
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
+            </description>
+         </parameter>
+       </parameterList>
+      </program>
+      <collection name="pre-stop.d">
+       <description>
+Repository of pre-stop like scripts. Before executing the script, the
+vserver root directory will be made the working directory.
+        </description>                                                                                                                 
+       <program name="script" type="symbolic">
+         <description>See pre-stop.</description>
+         <parameterList>
+           <parameter name="vserver-dir">
+             <description>The configuration directory of the current vserver.</description>
+           </parameter>
+           <parameter name="vserver-name">
+             <description>The name of the current vserver.</description>
+           </parameter>
+           <parameter name="action">
+             <description>
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
+              </description>
+           </parameter>
+         </parameterList>
+       </program>
+      </collection>
+
+      <program name="post-stop">
+       <description>
+The scriptlet which will be executed after the vserver has been
+stopped, but before the directories will be umounted and the the
+interfaces disabled. Before executing the script, the vserver root
+directory will be made the working directory.
+        </description>
+       <parameterList>
+         <parameter name="vserver-dir">
+           <description>The configuration directory of the current vserver.</description>
+         </parameter>
+         <parameter name="vserver-name">
+           <description>The name of the current vserver.</description>
+         </parameter>
+         <parameter name="action">
+           <description>
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
+            </description>
+         </parameter>
+       </parameterList>
+      </program>
+      <collection name="post-stop.d">
+       <description>
+Repository of post-stop like scripts. Before executing the script, the
+vserver root directory will be made the working directory.
+        </description>
+       <program name="script" type="symbolic">
+         <description>See post-stop.</description>
+         <parameterList>
+           <parameter name="vserver-dir">
+             <description>The configuration directory of the current vserver.</description>
+           </parameter>
+           <parameter name="vserver-name">
+             <description>The name of the current vserver.</description>
+           </parameter>
+           <parameter name="action">
+             <description>
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
+              </description>
+           </parameter>
+         </parameterList>
+       </program>
+      </collection>
+      
+      <program name="postpost-stop">
+       <description>
+The scriptlet which will be executed after the vserver has been stopped
+completely. Before executing the script, the vserver root directory
+will be made the working directory.
+        </description>
+       <parameterList>
+         <parameter name="vserver-dir">
+           <description>The configuration directory of the current vserver.</description>
+         </parameter>
+         <parameter name="vserver-name">
+           <description>The name of the current vserver.</description>
+         </parameter>
+         <parameter name="action">
+           <description>
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
+            </description>
+         </parameter>
+       </parameterList>
+      </program>
+      <collection name="postpost-stop.d">
+       <description>
+Repository of postpost-stop like scripts. Before executing the script,
+the vserver root directory will be made the working directory.
+        </description>
+       <program name="script" type="symbolic">
+         <description>See postpost-stop.</description>
+         <parameterList>
+           <parameter name="vserver-dir">
+             <description>The configuration directory of the current vserver.</description>
+           </parameter>
+           <parameter name="vserver-name">
+             <description>The name of the current vserver.</description>
+           </parameter>
+           <parameter name="action">
+             <description>
+The fixed value of the current action (e.g. 'prepre-start', 'post-stop'...).
+              </description>
+           </parameter>
+         </parameterList>
+       </program>
+      </collection>
+    </collection>
+    
+    <collection name="interfaces">
+      <scalar name="bcast">
+       <description>The default broadcast address.</description>
+      </scalar>
+      <scalar name="dev">
+       <description>The default network device.</description>
+      </scalar>
+      <scalar name="prefix">
+       <description>The default network prefix-length.</description>
+      </scalar>
+      <scalar name="mask">
+       <description>The default network mask.</description>
+      </scalar>
+      <scalar name="scope">
+       <description>The default scope of the network interfaces.</description>
+      </scalar>
+      
+      <collection name="iface" type="symbolic">
+       <description>
+'iface' is an arbitrary name for the interface; the value itself is
+not important but may be interesting regarding interface-creation and
+usage with <tool>chbind</tool>. Both happens in alphabetical order and
+numbers like '00' are good names for these directories.
+        </description>
+       
+       <boolean name="disabled">
+         <description>When this file exists, this interface will be ignored.</description>
+       </boolean>
+       
+       <scalar name="ip">
+         <description>The ip which will be assigned to this interface.</description>
+       </scalar>
+       <scalar name="bcast">
+         <description>The broadcast address.</description>
+       </scalar>
+       <scalar name="dev">
+         <description>The network device.</description>
+       </scalar>
+       <scalar name="prefix">
+         <description>The network prefix-length.</description>
+       </scalar>
+       <scalar name="mask">
+         <description>The network mask.</description>
+       </scalar>
+       <scalar name="scope">
+         <description>The scope of the network interface.</description>
+       </scalar>
+       <scalar name="name">
+         <description>
+When this file exists, the interface will be named with the text in
+this file. Without such an entry, the IP will not be shown by
+<tool>ifconfig</tool> but by <command>ip addr ls</command> only.  Such
+a labeled interface is known as an "alias" also (e.g. 'eth0:foo').
+          </description>
+       </scalar>
+       <boolean name="nodev">
+         <description>
+When this file exists, the interface will be assumed to exist
+already. This can be used to assign primary interfaces which are
+created by the host or another vserver.
+         </description>
+       </boolean>
+      </collection>
+    </collection>
+    
+    <collection name="ulimits">
+      <description>
+A directory with ulimits. Possible resources are cpu, data, fsize,
+locks, memlock, nofile, nproc, rss and/or stack. This configuration
+will be honored for kernel 2.4 only.
+      </description>                                                                                                                 
+      <scalar name="resource" type="symbolic">
+       <description>
+A file which contains the hard- and soft-limit of the given resource
+in the first line. The special keyword 'inf' is recognized.
+       </description>
+      </scalar>                                                                            
+      <scalar name="resource.hard" type="symbolic">
+       <description>
+A file which contains the hard- of the given resource in the first
+line. The special keyword 'inf' is recognized.
+       </description>
+      </scalar>                                                                                             
+      <scalar name="resource.soft" type="symbolic">
+       <description>
+A file which contains the soft- of the given resource in the first
+line. The special keyword 'inf' is recognized.
+       </description>
+      </scalar>
+    </collection>
+    
+    <collection name="rlimits">
+      <description>
+A directory with resource limits. Possible resources are cpu, fsize,
+data, stack, core, rss, nproc, nofile, memlock, as and locks. This
+configuration will be honored for kernel 2.6 only.
+      </description>                                                                                                                 
+      <scalar name="resource" type="symbolic">
+       <description>
+A file which contains the hard- and soft-limit of the given resource
+in the first line. The special keyword 'inf' is recognized.
+       </description>
+      </scalar>                                                                            
+      <scalar name="resource.hard" type="symbolic">
+       <description>
+A file which contains the hard- of the given resource in the first
+line. The special keyword 'inf' is recognized.
+       </description>
+      </scalar>                                                                                             
+      <scalar name="resource.soft" type="symbolic">
+       <description>
+A file which contains the soft- of the given resource in the first
+line. The special keyword 'inf' is recognized.
+       </description>
+      </scalar>
+      <scalar name="resource.min" type="symbolic">
+       <description>
+A file which contains the guaranted minimum of the given resource in
+the first line. The special keyword 'inf' is recognized.
+        </description>
+      </scalar>
+    </collection>
+    
+    <collection name="uts">
+      <scalar name="context">
+       <description>
+The context-name of the vserver. This file is listed for completeness
+only; the 'context' name is used and set internally by the util-vserver
+tools and can *not* be modified.
+       </description>
+      </scalar>
+      <scalar name="sysname">
+       <description>The sysname of the vserver</description>
+      </scalar>
+      <scalar name="nodename">
+       <description>The node-/hostname of the vserver</description>
+      </scalar>
+      <scalar name="release">
+       <description>The OS-release of the vserver</description>
+      </scalar>
+      <scalar name="version">
+       <description>The OS-version of the vserver</description>
+      </scalar>
+      <scalar name="machine">
+       <description>The machine-type of the vserver</description>
+      </scalar>
+      <scalar name="domainname">
+       <description>The NIS domainname of the vserver</description>
+      </scalar>
+    </collection>
+  </collection>
+  </database>
diff --git a/doc/configuration.xsd b/doc/configuration.xsd
new file mode 100644 (file)
index 0000000..e665a1e
--- /dev/null
@@ -0,0 +1,231 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+<xsd:annotation>
+ <xsd:documentation xml:lang="en">
+  Filesystem Database schema writen by Olivier Poitrey on 4/20/2004
+  Version $Id: configuration.xsd,v 1.1 2004/04/22 19:24:05 ensc Exp $
+ </xsd:documentation>
+</xsd:annotation>
+
+<xsd:group name="commonElements">
+ <xsd:sequence>
+  <xsd:element name="description" type="xsd:normalizedString" minOccurs="0"/>
+ </xsd:sequence>
+</xsd:group>
+
+<xsd:attributeGroup name="commonAttributes">
+ <xsd:attribute name="name" type="xsd:token" use="required"/>
+ <xsd:attribute name="type" default="fixed">
+  <xsd:simpleType>
+   <xsd:restriction base="xsd:string">
+    <xsd:enumeration value="fixed"/>
+    <xsd:enumeration value="symbolic"/>
+   </xsd:restriction>
+  </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="use" default="required">
+  <xsd:simpleType>
+   <xsd:restriction base="xsd:string">
+    <xsd:enumeration value="optional"/>
+    <xsd:enumeration value="required"/>
+    <xsd:enumeration value="prohibited"/>
+   </xsd:restriction>
+  </xsd:simpleType>
+ </xsd:attribute>
+</xsd:attributeGroup>
+
+<xsd:simpleType name="quantityType">
+ <xsd:union memberTypes="xsd:unsignedInt">
+  <xsd:simpleType>
+   <xsd:restriction base="xsd:string">
+    <xsd:enumeration value="unbounded"/>
+   </xsd:restriction>
+  </xsd:simpleType>
+ </xsd:union>
+</xsd:simpleType>
+
+<xsd:complexType name="baseItem" abstract="true">
+ <xsd:sequence>
+  <xsd:group ref="commonElements"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="commonAttributes"/>
+</xsd:complexType>
+
+<xsd:complexType name="baseNode" abstract="true">
+ <xsd:sequence>
+  <xsd:group ref="commonElements"/>
+  <xsd:choice minOccurs="0" maxOccurs="unbounded">
+   <xsd:element name="collection" type="collectionType">
+    <xsd:unique name="collection">
+     <xsd:annotation>
+      <xsd:documentation xml:lang="en">
+       Avoid duplicate element with same name attribute on the same level tree
+      </xsd:documentation>
+     </xsd:annotation>
+     <xsd:selector xpath="*"/>
+     <xsd:field xpath="@name"/>
+    </xsd:unique>
+   </xsd:element>
+   <xsd:element name="scalar" type="scalarType"/>
+   <xsd:element name="list" type="listType"/>
+   <xsd:element name="hash" type="hashType"/>
+   <xsd:element name="boolean" type="booleanType"/>
+   <xsd:element name="data" type="dataType"/>
+   <xsd:element name="link" type="linkType"/>
+   <xsd:element name="program" type="programType"/>
+  </xsd:choice>
+ </xsd:sequence>
+</xsd:complexType>
+
+<xsd:complexType name="collectionType">
+ <xsd:complexContent>
+  <xsd:extension base="baseNode">
+   <xsd:attributeGroup ref="commonAttributes"/>
+  </xsd:extension>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:complexType name="scalarType">
+ <xsd:complexContent>
+  <xsd:extension base="baseItem">
+   <xsd:sequence>
+    <xsd:element name="default" type="xsd:normalizedString" minOccurs="0"/>
+    <xsd:element name="restriction" minOccurs="0">
+     <xsd:complexType>
+      <xsd:choice>
+       <xsd:element name="enumeration" minOccurs="0" maxOccurs="unbounded">
+        <xsd:complexType>
+         <xsd:attribute name="value" type="xsd:normalizedString"/>
+        </xsd:complexType>
+       </xsd:element>
+      </xsd:choice>
+     </xsd:complexType>
+    </xsd:element>
+   </xsd:sequence>
+  </xsd:extension>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:complexType name="listType">
+ <xsd:complexContent>
+  <xsd:extension base="baseItem">
+   <xsd:sequence>
+    <xsd:element name="minElements" type="quantityType" minOccurs="0" default="0"/>
+    <xsd:element name="maxElements" type="quantityType" minOccurs="0" default="unbounded"/>
+    <xsd:element name="elements" minOccurs="0">
+     <xsd:complexType>
+      <xsd:sequence>
+       <xsd:element name="element" minOccurs="0" maxOccurs="unbounded">
+        <xsd:complexType>
+         <xsd:sequence>
+          <xsd:group ref="commonElements"/>
+          <xsd:element name="default" type="xsd:boolean" minOccurs="0" default="0"/>
+         </xsd:sequence>
+         <xsd:attribute name="name" type="xsd:normalizedString" use="required"/>
+        </xsd:complexType>
+       </xsd:element>
+      </xsd:sequence>
+     </xsd:complexType>
+    </xsd:element>
+   </xsd:sequence>
+  </xsd:extension>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:complexType name="hashType">
+ <xsd:complexContent>
+  <xsd:extension base="baseItem">
+   <xsd:sequence>
+    <xsd:element name="keys" minOccurs="0">
+     <xsd:complexType>
+      <xsd:sequence>
+       <xsd:element name="key" minOccurs="0" maxOccurs="unbounded">
+        <xsd:complexType>
+         <xsd:sequence>
+          <xsd:group ref="commonElements"/>
+          <xsd:element name="default" type="xsd:normalizedString" minOccurs="0"/>
+         </xsd:sequence>
+         <xsd:attribute name="name" type="xsd:normalizedString" use="required"/>
+        </xsd:complexType>
+       </xsd:element>
+      </xsd:sequence>
+     </xsd:complexType>
+    </xsd:element>
+   </xsd:sequence>
+  </xsd:extension>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:complexType name="booleanType">
+ <xsd:complexContent>
+  <xsd:extension base="baseItem">
+   <xsd:sequence>
+    <xsd:element name="default" type="xsd:boolean" minOccurs="0"/>
+   </xsd:sequence>
+  </xsd:extension>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:complexType name="dataType">
+ <xsd:complexContent>
+  <xsd:extension base="baseItem">
+   <xsd:sequence>
+    <xsd:element name="default" type="xsd:string" minOccurs="0"/>
+   </xsd:sequence>
+  </xsd:extension>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:complexType name="linkType">
+ <xsd:complexContent>
+  <xsd:extension base="baseItem">
+   <xsd:sequence>
+    <xsd:element name="default" type="xsd:token" minOccurs="0"/>
+   </xsd:sequence>
+  </xsd:extension>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<xsd:complexType name="programType">
+ <xsd:complexContent>
+  <xsd:extension base="baseItem">
+   <xsd:sequence>
+    <xsd:element name="parameterList" minOccurs="0">
+     <xsd:complexType>
+      <xsd:sequence>
+       <xsd:element name="parameter" minOccurs="0" maxOccurs="unbounded">
+        <xsd:complexType>
+         <xsd:sequence>
+          <xsd:group ref="commonElements"/>
+         </xsd:sequence>
+         <xsd:attribute name="name" type="xsd:normalizedString" use="required"/>
+        </xsd:complexType>
+       </xsd:element>
+      </xsd:sequence>
+     </xsd:complexType>
+    </xsd:element>
+   </xsd:sequence>
+  </xsd:extension>
+ </xsd:complexContent>
+</xsd:complexType>
+
+<!-- root element -->
+<xsd:element name="database">
+ <xsd:complexType>
+  <xsd:complexContent>
+   <xsd:extension base="baseNode"/>
+  </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:unique name="database">
+  <xsd:annotation>
+   <xsd:documentation xml:lang="en">
+    Avoid duplicate element with same name attribute on the same level tree
+   </xsd:documentation>
+  </xsd:annotation>
+  <xsd:selector xpath="*"/>
+  <xsd:field xpath="@name"/>
+ </xsd:unique>
+</xsd:element>
+
+</xsd:schema>
diff --git a/ensc_fmt/Makefile-files b/ensc_fmt/Makefile-files
new file mode 100644 (file)
index 0000000..7dbdff7
--- /dev/null
@@ -0,0 +1,27 @@
+## $Id: Makefile-files,v 1.1 2004/06/16 10:06:03 ensc Exp $    --*- makefile -*--
+
+## Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+##  
+## 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; version 2 of the License.
+##  
+## 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.
+
+ensc_fmt_SRCS  = \
+                       ensc_fmt/fmt-32.c \
+                        ensc_fmt/fmt-64.c \
+                        ensc_fmt/fmtx-32.c \
+                        ensc_fmt/fmtx-64.c \
+                       ensc_fmt/fmt-tai64n.c \
+                       ensc_fmt/fmt.h \
+                       ensc_fmt/fmt.hc \
+                       ensc_fmt/fmtx.hc \
+                       ensc_fmt/fmt-internal.h
diff --git a/ensc_fmt/fmt-32.c b/ensc_fmt/fmt-32.c
new file mode 100644 (file)
index 0000000..4a347b7
--- /dev/null
@@ -0,0 +1,32 @@
+// $Id: fmt-32.c,v 1.1 2004/06/16 10:06:03 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#define FMT_BITSIZE    32
+#include "fmt.hc"
+
+#if __WORDSIZE==FMT_BITSIZE
+size_t FMT_P(ulong_base)(char *ptr, unsigned long val, char base) ALIASFUNC(uint32_base);
+size_t FMT_P( long_base)(char *ptr,          long val, char base) ALIASFUNC( int32_base);
+#endif
+
+size_t FMT_P(uint_base)(char *ptr, unsigned int val, char base)   ALIASFUNC(uint32_base);
+size_t FMT_P( int_base)(char *ptr,          int val, char base)   ALIASFUNC( int32_base);
diff --git a/ensc_fmt/fmt-64.c b/ensc_fmt/fmt-64.c
new file mode 100644 (file)
index 0000000..553b78e
--- /dev/null
@@ -0,0 +1,29 @@
+// $Id: fmt-64.c,v 1.1 2004/06/16 10:06:03 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#define FMT_BITSIZE    64
+#include "fmt.hc"
+
+#if __WORDSIZE==64
+size_t FMT_P(ulong_base)(char *ptr, unsigned long val, char base) ALIASFUNC(uint64_base);
+size_t FMT_P( long_base)(char *ptr,          long val, char base) ALIASFUNC( int64_base);
+#endif
diff --git a/ensc_fmt/fmt-internal.h b/ensc_fmt/fmt-internal.h
new file mode 100644 (file)
index 0000000..acfcdf8
--- /dev/null
@@ -0,0 +1,60 @@
+// $Id: fmt-internal.h,v 1.2 2004/08/19 13:53:54 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_LIB_FMT_COMMON_H
+#define H_UTIL_VSERVER_LIB_FMT_COMMON_H
+
+#define DIGITS                 "0123456789abcdefghijklmnopqrstuvwxyz"
+
+#define FMT_P__(X,Y)           X ## Y
+#define FMT_P_(X,Y)            FMT_P__(X,Y)
+#define FMT_P(X)               FMT_P_(FMT_PREFIX, X)
+
+#define CONCAT__(x,y,z)                x ## y ## z
+#define CONCAT_(x,y,z)         CONCAT__(x,y,z)
+#define CONCAT(x,z)            CONCAT_(x, FMT_BITSIZE, z)
+
+#define FMT_FN(BASE,SZ)                                        \
+  do {                                                 \
+    register __typeof__(val)   v = val;                \
+    register size_t            l = 0;                  \
+                                                       \
+    if (ptr==0) {                                      \
+      do {                                             \
+        ++l;                                           \
+        v /= BASE;                                     \
+      } while (v!=0);                                  \
+    }                                                  \
+    else {                                             \
+      char                     buf[sizeof(val)*SZ];    \
+                                                       \
+      do {                                             \
+       register unsigned int   d = v%BASE;             \
+       v /= BASE;                                      \
+        ++l;                                           \
+        buf[sizeof(buf)-l] = DIGITS[d];                        \
+      } while (v!=0);                                  \
+                                                       \
+      memcpy(ptr, buf+sizeof(buf)-l, l);               \
+    }                                                  \
+                                                       \
+    return l;                                          \
+  } while (0)
+
+
+#endif //  H_UTIL_VSERVER_LIB_FMT_COMMON_H
diff --git a/ensc_fmt/fmt-tai64n.c b/ensc_fmt/fmt-tai64n.c
new file mode 100644 (file)
index 0000000..6aad24a
--- /dev/null
@@ -0,0 +1,51 @@
+// $Id: fmt-tai64n.c,v 1.1 2004/06/16 10:06:03 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "fmt.h"
+#include "fmt-internal.h"
+
+#include <sys/time.h>
+#include <string.h>
+#include <assert.h>
+
+size_t
+FMT_P(tai64n)(char *buf, struct timeval const *now)
+{
+  uint64_t             tai_secs = 1ll << 62;
+  char *               ptr = buf;
+  size_t               l;
+  
+  tai_secs += now->tv_sec;
+  *ptr++ = '@';
+
+  l = FMT_P(xuint64)(ptr, tai_secs);   // always 16 bytes
+  assert(l==16);
+  ptr +=  16;
+
+  memset(ptr, '0', 8);
+  l = FMT_P(xuint32)(0,   now->tv_usec*1000);
+  FMT_P(xuint32)(ptr+8-l, now->tv_usec*1000);
+
+  ptr +=  8;
+
+  return ptr-buf;
+}
diff --git a/ensc_fmt/fmt.h b/ensc_fmt/fmt.h
new file mode 100644 (file)
index 0000000..026b6d7
--- /dev/null
@@ -0,0 +1,124 @@
+// $Id: fmt.h,v 1.3 2005/03/17 14:46:19 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+/** \file   fmt.h
+ *  \brief  Declarations for some fmt_* functions
+ */
+
+#ifndef H_ENSC_FMT_FMT_H
+#define H_ENSC_FMT_FMT_H
+
+#include <stdlib.h>
+#include <stdint.h>
+
+#ifndef FMT_PREFIX
+#  define FMT_PREFIX   fmt_
+#endif
+
+#define FMT_P__(X,Y)   X ## Y
+#define FMT_P_(X,Y)    FMT_P__(X,Y)
+#define FMT_P(X)       FMT_P_(FMT_PREFIX, X)
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+size_t FMT_P(xuint64)(char *ptr, uint_least64_t val);
+size_t FMT_P( xint64)(char *ptr,  int_least64_t val);
+
+size_t FMT_P(xuint32)(char *ptr, uint_least32_t val);
+size_t FMT_P( xint32)(char *ptr,  int_least32_t val);
+  
+size_t FMT_P(uint64_base)(char *ptr, uint_least64_t val, char base);
+size_t FMT_P( int64_base)(char *ptr,  int_least64_t val, char base);
+
+size_t FMT_P(uint32_base)(char *ptr, uint_least32_t val, char base);
+size_t FMT_P( int32_base)(char *ptr,  int_least32_t val, char base);
+
+size_t FMT_P(ulong_base)(char *ptr, unsigned long val, char base);
+size_t FMT_P( long_base)(char *ptr,          long val, char base);
+size_t FMT_P(xulong)    (char *ptr, unsigned long val);
+size_t FMT_P( xlong)    (char *ptr,          long val);
+
+size_t  FMT_P(uint_base)(char *ptr, unsigned int val, char base);
+size_t  FMT_P( int_base)(char *ptr,          int val, char base);
+size_t  FMT_P(xuint)    (char *ptr, unsigned int val);
+size_t  FMT_P( xint)    (char *ptr,          int val);
+
+struct timeval;
+size_t FMT_P(tai64n)(char *ptr, struct timeval const *now);
+
+inline static size_t
+FMT_P(uint64)(char *ptr, uint_least64_t val)
+{
+  return FMT_P(uint64_base)(ptr, val, 10);
+}
+
+inline static size_t
+FMT_P(int64)(char *ptr, uint_least64_t val)
+{
+  return FMT_P(int64_base)(ptr, val, 10);
+}
+
+inline static size_t
+FMT_P(uint32)(char *ptr, uint_least32_t val)
+{
+  return FMT_P(uint32_base)(ptr, val, 10);
+}
+
+inline static size_t
+FMT_P(int32)(char *ptr, uint_least32_t val)
+{
+  return FMT_P(int32_base)(ptr, val, 10);
+}
+
+inline static size_t
+FMT_P(ulong)(char *ptr, unsigned long val)
+{
+  return FMT_P(ulong_base)(ptr, val, 10);
+}
+
+inline static size_t
+FMT_P(long)(char *ptr, long val)
+{
+  return FMT_P(long_base)(ptr, val, 10);
+}
+
+
+inline static size_t
+FMT_P(uint)(char *ptr, unsigned int val)
+{
+  return FMT_P(uint_base)(ptr, val, 10);
+}
+
+inline static size_t
+FMT_P(int)(char *ptr, int val)
+{
+  return FMT_P(int_base)(ptr, val, 10);
+}
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#undef FMT_P
+#undef FMT_P_
+#undef FMT_P__
+
+#endif //  H_ENSC_FMT_FMT_H
diff --git a/ensc_fmt/fmt.hc b/ensc_fmt/fmt.hc
new file mode 100644 (file)
index 0000000..43c8ced
--- /dev/null
@@ -0,0 +1,52 @@
+// $Id: fmt.hc,v 1.1 2004/06/16 10:06:03 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "fmt.h"
+#include "fmt-internal.h"
+#include <string.h>
+
+#define STRINGIFY_(X)  #X
+#define STRINGIFY(X)   STRINGIFY_(X)
+#define ALIASFUNC(X)   __attribute__((__alias__(STRINGIFY(FMT_P(X)))))
+
+size_t
+CONCAT(FMT_P(uint),_base)(char *ptr, CONCAT(uint_least,_t) val, char base)
+{
+  if (base==16) return CONCAT(FMT_P(xuint),)(ptr,val);
+  FMT_FN(base,8);
+}
+
+size_t
+CONCAT(FMT_P(int),_base)(char *ptr,
+                        CONCAT(int_least,_t) val, char base)
+{
+  size_t       offset=0;
+  if (val<0) {
+    val      = -val;
+    offset   = 1;
+
+    if (ptr!=0)
+      *ptr++ = '-';
+  }
+
+  return CONCAT(FMT_P(uint),_base)(ptr, val, base) + offset;
+}
diff --git a/ensc_fmt/fmtx-32.c b/ensc_fmt/fmtx-32.c
new file mode 100644 (file)
index 0000000..d5b113d
--- /dev/null
@@ -0,0 +1,32 @@
+// $Id: fmtx-32.c,v 1.2 2005/03/17 14:46:19 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#define FMT_BITSIZE    32
+#include "fmtx.hc"
+
+#if __WORDSIZE==FMT_BITSIZE
+size_t FMT_P(xulong)(char *ptr, unsigned long val) ALIASFUNC(xuint32);
+size_t FMT_P( xlong)(char *ptr,          long val) ALIASFUNC( xint32);
+#endif
+
+size_t FMT_P(xuint) (char *ptr, unsigned int val)  ALIASFUNC(xuint32);
+size_t FMT_P( xint) (char *ptr,          int val)  ALIASFUNC( xint32);
diff --git a/ensc_fmt/fmtx-64.c b/ensc_fmt/fmtx-64.c
new file mode 100644 (file)
index 0000000..13703d0
--- /dev/null
@@ -0,0 +1,29 @@
+// $Id: fmtx-64.c,v 1.1 2004/06/16 10:06:03 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#define FMT_BITSIZE    64
+#include "fmtx.hc"
+
+#if __WORDSIZE==FMT_BITSIZE
+size_t FMT_P(xulong)(char *ptr, unsigned long val) ALIASFUNC(xuint64);
+size_t FMT_P( xlong)(char *ptr,          long val) ALIASFUNC( xint64);
+#endif
diff --git a/ensc_fmt/fmtx.hc b/ensc_fmt/fmtx.hc
new file mode 100644 (file)
index 0000000..f1afd96
--- /dev/null
@@ -0,0 +1,52 @@
+// $Id: fmtx.hc,v 1.1 2004/06/16 10:06:03 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "fmt.h"
+#include "fmt-internal.h"
+#include <string.h>
+
+#define STRINGIFY_(X)  #X
+#define STRINGIFY(X)   STRINGIFY_(X)
+#define ALIASFUNC(X)   __attribute__((__alias__(STRINGIFY(FMT_P(X)))))
+
+
+size_t
+CONCAT(FMT_P(xuint),)(char *ptr, CONCAT(uint_least,_t) val)
+{
+  FMT_FN(16,8);
+}
+
+size_t
+CONCAT(FMT_P(xint),)(char *ptr,
+                    CONCAT(int_least,_t) val)
+{
+  size_t       offset=0;
+  if (val<0) {
+    val      = -val;
+    offset   = 1;
+
+    if (ptr!=0)
+      *ptr++ = '-';
+  }
+
+  return CONCAT(FMT_P(xuint),)(ptr, val) + offset;
+}
diff --git a/ensc_vector/Makefile-files b/ensc_vector/Makefile-files
new file mode 100644 (file)
index 0000000..450f49e
--- /dev/null
@@ -0,0 +1,84 @@
+## $Id: Makefile-files,v 1.9 2005/07/03 09:12:31 ensc Exp $            --*- makefile -*--
+
+## Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+##  
+## 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; version 2 of the License.
+##  
+## 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.
+
+ENSC_VECTOR_SRCS =             ensc_vector/vector-clear.c \
+                               ensc_vector/vector-foreach.c \
+                               ensc_vector/vector-free.c \
+                               ensc_vector/vector-init.c \
+                               ensc_vector/vector-insert.c \
+                               ensc_vector/vector-internal.h \
+                               ensc_vector/vector-popback.c \
+                               ensc_vector/vector-pushback.c \
+                               ensc_vector/vector-resize.c \
+                               ensc_vector/vector-resizeinternal.hc \
+                               ensc_vector/vector-search.c \
+                               ensc_vector/vector-searchselforg.c \
+                               ensc_vector/vector-sort.c \
+                               ensc_vector/vector-unique.c \
+                               ensc_vector/vector-zeroend.c \
+                               ensc_vector/list-at.c \
+                               ensc_vector/list-add.c \
+                               ensc_vector/list-free.c \
+                               ensc_vector/list-init.c \
+                               ensc_vector/list-insertinternal.c \
+                               ensc_vector/list-internal.h \
+                               ensc_vector/list-search.c \
+                               ensc_vector/list-searchselforg.c
+
+ENSC_VECTOR_HDRS =             ensc_vector/vector.h \
+                               ensc_vector/vector.hc \
+                               ensc_vector/list.h \
+                               ensc_vector/list.hc
+
+
+libensc_vector_glibc_a_SOURCES =       $(ENSC_VECTOR_SRCS)
+libensc_vector_glibc_a_CPPFLAGS =      $(AM_CPPFLAGS)
+
+libensc_vector_diet_a_SOURCES =                $(ENSC_VECTOR_SRCS)
+libensc_vector_diet_a_CPPFLAGS =       $(AM_CPPFLAGS)
+
+ENSC_VECTOR_LIBS =
+
+if ENSC_USE_GLIBC
+LIBENSCVECTOR_GLIBC =          libensc_vector-glibc.a
+ENSC_VECTOR_LIBS +=            $(LIBENSCVECTOR_GLIBC)
+else
+LIBENSCVECTOR_GLIBC =          lib-glibc-not-enabled-error.a
+endif
+
+if ENSC_USE_DIETLIBC
+LIBENSCVECTOR_DIET =           libensc_vector-diet.a
+ENSC_VECTOR_LIBS +=            $(LIBENSCVECTOR_DIET)
+else
+LIBENSCVECTOR_DIET =           lib-dietlibc-not-enabled-error.a
+endif
+
+
+if     ENSC_USE_DIETLIBC
+LIBENSCVECTOR =                        $(LIBENSCVECTOR_DIET)
+else   !ENSC_USE_DIETLIBC
+if     ENSC_USE_GLIBC
+LIBENSCVECTOR =                        $(LIBENSCVECTOR_GLIBC)
+else   !ENSC_USE_GLIBC
+LIBENSCVECTOR =                        lib-nolib-enabled-error.a
+endif  !ENSC_USE_GLIBC
+endif  !ENSC_USE_DIETLIBC
+
+CLEANFILES +=                  libensc_vector-diet.a \
+                               libensc_vector-glibc.a
+
+include $(srcdir)/ensc_vector/testsuite/Makefile-files
diff --git a/ensc_vector/list-add.c b/ensc_vector/list-add.c
new file mode 100644 (file)
index 0000000..0a13835
--- /dev/null
@@ -0,0 +1,31 @@
+// $Id: list-add.c,v 1.1 2005/03/17 14:47:21 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+//  
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "list.h"
+#include "list-internal.h"
+
+
+void *
+List_add(struct List *list, void const *data)
+{
+  return List_insertInternal(list, data, &list->root, 0)->data;
+}
diff --git a/ensc_vector/list-at.c b/ensc_vector/list-at.c
new file mode 100644 (file)
index 0000000..e379a81
--- /dev/null
@@ -0,0 +1,36 @@
+// $Id: list-at.c,v 1.1 2005/03/17 14:47:21 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+//  
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "list.h"
+#include "list-internal.h"
+
+void const *
+List_at_const(struct List const *l, size_t idx)
+{
+  struct ListItem const        *itm  = l->root;
+  
+  for (; itm!=0 && idx>0; --idx)
+    itm = itm->next;
+
+  if (itm!=0) return itm->data;
+  else        return 0;
+}
diff --git a/ensc_vector/list-free.c b/ensc_vector/list-free.c
new file mode 100644 (file)
index 0000000..1855c2d
--- /dev/null
@@ -0,0 +1,43 @@
+// $Id: list-free.c,v 1.2 2005/03/19 02:03:30 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+//  
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "list.h"
+#include "list-internal.h"
+
+void
+List_free(struct List *list)
+{
+  struct ListItem      *itm;
+
+  for (itm = list->root; itm!=0; /* noop */)
+  {
+    struct ListItem    *next = itm->next;
+
+    free(itm->data);
+#ifndef NDEBUG
+    itm->data = (void *)(0xdeadbeaf);
+#endif
+    free(itm);
+
+    itm = next;
+  }
+}
diff --git a/ensc_vector/list-init.c b/ensc_vector/list-init.c
new file mode 100644 (file)
index 0000000..7fc14c4
--- /dev/null
@@ -0,0 +1,31 @@
+// $Id: list-init.c,v 1.1 2005/03/17 14:47:21 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+//  
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "list.h"
+
+void
+List_init(struct List *list, size_t elem_size)
+{
+  list->root      = 0;
+  list->count     = 0;
+  list->elem_size = elem_size;
+}
diff --git a/ensc_vector/list-insertinternal.c b/ensc_vector/list-insertinternal.c
new file mode 100644 (file)
index 0000000..f3ae833
--- /dev/null
@@ -0,0 +1,57 @@
+// $Id: list-insertinternal.c,v 1.1 2005/03/17 14:47:21 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+//  
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "list.h"
+#include "list-internal.h"
+
+#include <assert.h>
+#include <string.h>
+
+#define ENSC_WRAPPERS_STDLIB 1
+#include <wrappers.h>
+
+struct ListItem *
+List_insertInternal(struct List *list, void const *data,
+                   struct ListItem **before_pos,
+                   struct ListItem *after_pos)
+{
+  struct ListItem      *item = Emalloc(sizeof(struct ListItem));
+
+  assert((before_pos!=0 || after_pos!=0) &&
+        (before_pos==0 || after_pos==0));
+  
+  item->data = Emalloc(list->elem_size);
+  memcpy(item->data, data, list->elem_size);
+
+  if (before_pos!=0) {
+    item->next  = *before_pos;
+    *before_pos = item;
+  }
+  else {
+    item->next      = after_pos->next;
+    after_pos->next = item;
+  }
+
+  ++list->count;
+
+  return item;
+}
diff --git a/ensc_vector/list-internal.h b/ensc_vector/list-internal.h
new file mode 100644 (file)
index 0000000..1eb567c
--- /dev/null
@@ -0,0 +1,33 @@
+// $Id: list-internal.h,v 1.1 2005/03/17 14:47:21 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+//  
+
+#ifndef H_UTILVSERVER_VECTOR_LIST_INTERNAL_H
+#define H_UTILVSERVER_VECTOR_LIST_INTERNAL_H
+
+struct ListItem
+{
+    void               *data;
+    struct ListItem    *next;
+};
+
+struct ListItem *      List_insertInternal(struct List *list,
+                                           void const *data,
+                                           struct ListItem **before_pos,
+                                           struct ListItem *after_pos);
+
+#endif //  H_UTILVSERVER_VECTOR_LIST_INTERNAL_H
diff --git a/ensc_vector/list-search.c b/ensc_vector/list-search.c
new file mode 100644 (file)
index 0000000..96f7b19
--- /dev/null
@@ -0,0 +1,37 @@
+// $Id: list-search.c,v 1.1 2005/03/17 14:47:21 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+//  
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "list.h"
+#include "list-internal.h"
+
+void const *
+List_search(struct List const *list, void const *key,
+           int (*compare)(const void *, const void *))
+{
+  struct ListItem const                *itm = list->root;
+
+  while (itm!=0 && compare(itm->data, key)!=0)
+    itm = itm->next;
+
+  if (itm!=0) return itm->data;
+  else        return 0;
+}
diff --git a/ensc_vector/list-searchselforg.c b/ensc_vector/list-searchselforg.c
new file mode 100644 (file)
index 0000000..990ef87
--- /dev/null
@@ -0,0 +1,76 @@
+// $Id: list-searchselforg.c,v 1.1 2005/03/17 14:47:21 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+//  
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "list.h"
+#include "list-internal.h"
+
+#include <assert.h>
+#include <stdbool.h>
+
+void const *
+List_searchSelfOrg(struct List const *list, void const *key,
+                  int (*compare)(const void *, const void *),
+                  ListSelfOrgMethod method)
+{
+  struct List          *list_v = (struct List *)(list);
+  struct ListItem      **itm   = &list_v->root;
+
+  switch (method) {
+    case listMOVE_FRONT                :
+      while (*itm!=0 && compare((*itm)->data, key)!=0)
+       itm = &(*itm)->next;
+
+      if (*itm && *itm!=list->root) {
+       struct ListItem         *res = *itm;
+
+       *itm         = res->next;
+       res->next    = list->root;
+       list_v->root = res;
+
+       itm          = &list_v->root;
+      }
+      break;
+
+    case listSHIFT_ONCE                :
+      if (*itm!=0 && compare((*itm)->data, key)!=0) {
+       while ((*itm)->next!=0 &&
+              compare((*itm)->next->data, key)!=0)
+         itm = &(*itm)->next;
+
+       if ((*itm)->next==0)
+         itm = &(*itm)->next;
+       else {
+         struct ListItem       *res = (*itm)->next;
+
+         (*itm)->next = res->next;
+         res->next    = *itm;
+         *itm         = res;
+       }
+      }
+      break;
+
+    default            :  assert(false); return 0;
+  }
+
+  if (*itm!=0) return (*itm)->data;
+  else         return 0;  
+}
diff --git a/ensc_vector/list.h b/ensc_vector/list.h
new file mode 100644 (file)
index 0000000..f6e5920
--- /dev/null
@@ -0,0 +1,47 @@
+// $Id: list.h,v 1.1 2005/03/17 14:47:21 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+//  
+
+#ifndef H_UTILVSERVER_VECTOR_LIST_H
+#define H_UTILVSERVER_VECTOR_LIST_H
+
+#include <stdlib.h>
+
+struct ListItem;
+struct List
+{
+    struct ListItem    *root;
+    size_t             count;
+    size_t             elem_size;
+};
+
+typedef enum { listMOVE_FRONT, listSHIFT_ONCE }                 ListSelfOrgMethod;
+
+void   List_init(struct List *, size_t elem_size);
+void   List_free(struct List *);
+void * List_add(struct List *, void const *key);
+void *         List_at(struct List *, size_t idx);
+void const *   List_at_const(struct List const *, size_t idx);
+
+void const *   List_search(struct List const *, void const *key,
+                           int (*compare)(const void *, const void *));
+
+void const *   List_searchSelfOrg(struct List const *, void const *key,
+                                  int (*compare)(const void *, const void *),
+                                  ListSelfOrgMethod method);
+
+#endif //  H_UTILVSERVER_VECTOR_LIST_H
diff --git a/ensc_vector/list.hc b/ensc_vector/list.hc
new file mode 100644 (file)
index 0000000..5c1bd02
--- /dev/null
@@ -0,0 +1,23 @@
+// $Id: list.hc,v 1.1 2005/03/17 14:47:21 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+//  
+
+static inline UNUSED void *
+List_at(struct List *list, size_t idx)
+{
+  return (void *)(List_at_const(list, idx));
+}
diff --git a/ensc_vector/testsuite/Makefile-files b/ensc_vector/testsuite/Makefile-files
new file mode 100644 (file)
index 0000000..5be6739
--- /dev/null
@@ -0,0 +1,28 @@
+## $Id: Makefile-files,v 1.4 2005/03/18 00:13:50 ensc Exp $            --*- makefile -*--
+
+## Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+##  
+## 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; version 2 of the License.
+##  
+## 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.
+
+check_PROGRAMS +=              ensc_vector/testsuite/test1 \
+                               ensc_vector/testsuite/test2
+
+TESTS +=                       ensc_vector/testsuite/test1 \
+                               ensc_vector/testsuite/test2
+
+ensc_vector_testsuite_test1_SOURCES =  ensc_vector/testsuite/test1.c
+ensc_vector_testsuite_test1_LDADD =    $(LIBENSCVECTOR)
+
+ensc_vector_testsuite_test2_SOURCES =  ensc_vector/testsuite/test2.c
+ensc_vector_testsuite_test2_LDADD =    $(LIBENSCVECTOR)
diff --git a/ensc_vector/testsuite/test1.c b/ensc_vector/testsuite/test1.c
new file mode 100644 (file)
index 0000000..e3e7f25
--- /dev/null
@@ -0,0 +1,182 @@
+// $Id: test1.c,v 1.4 2005/03/17 14:49:01 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+#undef NDEBUG
+
+#include "ensc_vector/vector.h"
+#include <assert.h>
+#include <stdbool.h>
+
+int    wrapper_exit_code = 2;
+
+static int
+cmp(void const *lhs_v, void const *rhs_v)
+{
+  int const * const    lhs = lhs_v;
+  int const * const    rhs = rhs_v;
+
+  return *lhs - *rhs;
+}
+
+struct Vector          v;
+
+static void    I(int val)
+{
+  *(int *)Vector_insert(&v, &val, cmp) = val;
+}
+
+static void    P(int val)
+{
+  *(int *)Vector_pushback(&v) = val;
+}
+
+static int     E(size_t idx)
+{
+  return ((int const *)Vector_begin_const(&v))[idx];
+}
+
+static int const *     S(int val)
+{
+  return Vector_search_const(&v, &val, cmp);
+}
+
+static int const *     S_F(int val)
+{
+  return Vector_searchSelfOrg(&v, &val, cmp, vecMOVE_FRONT);
+}
+
+static int const *     S_S(int val)
+{
+  return Vector_searchSelfOrg(&v, &val, cmp, vecSHIFT_ONCE);
+}
+
+static bool            CMP(int const *lhs, int val)
+{
+  return (lhs!=0 && val==*lhs) || (lhs==0 && val==-1);
+}
+
+int main()
+{
+  Vector_init(&v, sizeof(int));
+
+  I(0); I(1); I(2); I(3);
+  assert(Vector_count(&v)==4);
+  assert(E(0)==0 && E(1)==1 && E(2)==2 && E(3)==3);
+
+  // clear-test
+  Vector_clear(&v);
+  assert(Vector_count(&v)==0);
+  I(1);
+  assert(Vector_count(&v)==1);
+  assert(E(0)==1);
+
+
+  Vector_clear(&v);
+  I(3); I(0); I(2); I(1); I(5); I(4); I(7); I(6);
+  assert(Vector_count(&v)==8);
+  assert((E(0)==0 && E(1)==1 && E(2)==2 && E(3)==3 &&
+         E(4)==4 && E(5)==5 && E(6)==6 && E(7)==7));
+
+  assert(S(0) && *S(0)==0);
+  
+  
+  Vector_clear(&v);
+  assert(Vector_count(&v)==0);
+
+  P(3); P(0); P(2); P(1); P(5); P(4); P(7); P(6);
+  assert(Vector_count(&v)==8);
+  assert((E(0)==3 && E(1)==0 && E(2)==2 && E(3)==1 &&
+         E(4)==5 && E(5)==4 && E(6)==7 && E(7)==6));
+  
+  Vector_sort(&v, cmp);
+  assert(Vector_count(&v)==8);
+  assert((E(0)==0 && E(1)==1 && E(2)==2 && E(3)==3 &&
+         E(4)==4 && E(5)==5 && E(6)==6 && E(7)==7));
+
+  Vector_popback(&v);
+  assert(Vector_count(&v)==7);
+  assert((E(0)==0 && E(1)==1 && E(2)==2 && E(3)==3 &&
+         E(4)==4 && E(5)==5 && E(6)==6));
+
+  Vector_unique(&v, cmp);
+  assert(Vector_count(&v)==7);
+  assert((E(0)==0 && E(1)==1 && E(2)==2 && E(3)==3 &&
+         E(4)==4 && E(5)==5 && E(6)==6));
+
+  Vector_clear(&v);
+  assert(Vector_count(&v)==0);
+
+  Vector_clear(&v);
+  P(3); P(7); P(0); P(2); P(1); P(2); P(5); P(4); P(5); P(7); P(6);
+  assert(Vector_count(&v)==11);
+  Vector_sort(&v, cmp);
+  assert(Vector_count(&v)==11);
+  assert((E(0)==0 && E(1)==1 && E(2)==2 && E(3)==2 &&
+         E(4)==3 && E(5)==4 && E(6)==5 && E(7)==5 &&
+         E(8)==6 && E(9)==7 && E(10)==7));
+
+  Vector_unique(&v, cmp);
+  assert(Vector_count(&v)==8);
+  assert((E(0)==0 && E(1)==1 && E(2)==2 && E(3)==3 &&
+         E(4)==4 && E(5)==5 && E(6)==6 && E(7)==7));
+
+  assert(CMP(S_F(0),0));
+  assert((E(0)==0 && E(1)==1 && E(2)==2 && E(3)==3 && E(4)==4 && E(5)==5 && E(6)==6 && E(7)==7));
+
+  assert(CMP(S_F(1),1));
+  assert((E(0)==1 && E(1)==0 && E(2)==2 && E(3)==3 && E(4)==4 && E(5)==5 && E(6)==6 && E(7)==7));
+
+  assert(CMP(S_F(7),7));
+  assert((E(0)==7 && E(1)==1 && E(2)==0 && E(3)==2 && E(4)==3 && E(5)==4 && E(6)==5 && E(7)==6));
+
+  assert(CMP(S_F(3),3));
+  assert((E(0)==3 && E(1)==7 && E(2)==1 && E(3)==0 && E(4)==2 && E(5)==4 && E(6)==5 && E(7)==6));
+
+  assert(CMP(S_F(3),3));
+  assert((E(0)==3 && E(1)==7 && E(2)==1 && E(3)==0 && E(4)==2 && E(5)==4 && E(6)==5 && E(7)==6));
+
+  assert(CMP(S_F(42), -1));
+  assert((E(0)==3 && E(1)==7 && E(2)==1 && E(3)==0 && E(4)==2 && E(5)==4 && E(6)==5 && E(7)==6));
+
+
+  assert(CMP(S_S(6), 6));
+  assert((E(0)==3 && E(1)==7 && E(2)==1 && E(3)==0 && E(4)==2 && E(5)==4 && E(6)==6 && E(7)==5));
+
+  assert(CMP(S_S(6), 6));
+  assert((E(0)==3 && E(1)==7 && E(2)==1 && E(3)==0 && E(4)==2 && E(5)==6 && E(6)==4 && E(7)==5));
+
+  assert(CMP(S_S(6), 6));
+  assert((E(0)==3 && E(1)==7 && E(2)==1 && E(3)==0 && E(4)==6 && E(5)==2 && E(6)==4 && E(7)==5));
+
+  assert(CMP(S_S(7), 7));
+  assert((E(0)==7 && E(1)==3 && E(2)==1 && E(3)==0 && E(4)==6 && E(5)==2 && E(6)==4 && E(7)==5));
+
+  assert(CMP(S_S(7), 7));
+  assert((E(0)==7 && E(1)==3 && E(2)==1 && E(3)==0 && E(4)==6 && E(5)==2 && E(6)==4 && E(7)==5));
+
+  assert(CMP(S_S(42), -1));
+  assert((E(0)==7 && E(1)==3 && E(2)==1 && E(3)==0 && E(4)==6 && E(5)==2 && E(6)==4 && E(7)==5));
+
+  
+  Vector_free(&v);
+
+  return 0;
+}
diff --git a/ensc_vector/testsuite/test2.c b/ensc_vector/testsuite/test2.c
new file mode 100644 (file)
index 0000000..e423a61
--- /dev/null
@@ -0,0 +1,144 @@
+// $Id: test2.c,v 1.2 2005/03/24 12:41:27 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+//  
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#undef NDEBUG
+
+#include "ensc_vector/list.h"
+#include "ensc_vector/list-internal.h"
+
+#include <assert.h>
+#include <stdlib.h>
+#include <stdbool.h>
+
+int    wrapper_exit_code = 2;
+
+static int
+cmp(void const *lhs_v, void const *rhs_v)
+{
+  int const * const    lhs = lhs_v;
+  int const * const    rhs = rhs_v;
+
+  return *lhs - *rhs;
+}
+
+struct List            l;
+
+
+static void    A(int val)
+{
+  int *                res = List_add(&l, &val);
+
+  assert(*res == val);
+}
+
+static int const *     S(int val)
+{
+  return List_search(&l, &val, cmp);
+}
+
+static int const *     SSO_F(int val)
+{
+  return List_searchSelfOrg(&l, &val, cmp, listMOVE_FRONT);
+}
+
+static int const *     SSO_S(int val)
+{
+  return List_searchSelfOrg(&l, &val, cmp, listSHIFT_ONCE);
+}
+
+static int             P(size_t idx)
+{
+  int const    *res = List_at_const(&l, idx);
+
+  assert(res!=0);
+  return *res;
+}
+
+static bool            P0(size_t idx)
+{
+  return List_at_const(&l, idx) == 0;
+}
+
+static bool            CMP(int const *lhs, int rhs)
+{
+  return (lhs!=0 && *lhs==rhs) || (lhs==0 && rhs==-1);
+}
+
+
+int main()
+{
+  List_init(&l, sizeof(int));
+
+  A(5); A(4); A(3); A(2); A(1); A(0);
+  assert(P(0)==0 && P(1)==1 && P(2)==2 && P(3)==3 && P(4)==4 && P(5)==5 && P0(6));
+
+  assert(CMP(S(5), 5) && CMP(S(2), 2) && CMP(S(0), 0));
+  assert(CMP(S(42),-1));
+
+  assert(CMP(SSO_F(5), 5));
+  assert(P(0)==5 && P(1)==0 && P(2)==1 && P(3)==2 && P(4)==3 && P(5)==4 && P0(6));
+
+  assert(CMP(SSO_F(5), 5));
+  assert(P(0)==5 && P(1)==0 && P(2)==1 && P(3)==2 && P(4)==3 && P(5)==4 && P0(6));
+
+  assert(CMP(SSO_F(0), 0));
+  assert(P(0)==0 && P(1)==5 && P(2)==1 && P(3)==2 && P(4)==3 && P(5)==4 && P0(6));
+
+  assert(CMP(SSO_F(4), 4));
+  assert(P(0)==4 && P(1)==0 && P(2)==5 && P(3)==1 && P(4)==2 && P(5)==3 && P0(6));
+
+  assert(CMP(SSO_F(5), 5));
+  assert(P(0)==5 && P(1)==4 && P(2)==0 && P(3)==1 && P(4)==2 && P(5)==3 && P0(6));
+  
+  assert(CMP(SSO_F(42),-1));
+  assert(P(0)==5 && P(1)==4 && P(2)==0 && P(3)==1 && P(4)==2 && P(5)==3 && P0(6));
+
+
+  
+  assert(CMP(SSO_S(3), 3));
+  assert(P(0)==5 && P(1)==4 && P(2)==0 && P(3)==1 && P(4)==3 && P(5)==2 && P0(6));
+  
+  assert(CMP(SSO_S(3), 3));
+  assert(P(0)==5 && P(1)==4 && P(2)==0 && P(3)==3 && P(4)==1 && P(5)==2 && P0(6));
+
+  assert(CMP(SSO_S(5), 5));
+  assert(P(0)==5 && P(1)==4 && P(2)==0 && P(3)==3 && P(4)==1 && P(5)==2 && P0(6));
+
+  assert(CMP(SSO_S(4), 4));
+  assert(P(0)==4 && P(1)==5 && P(2)==0 && P(3)==3 && P(4)==1 && P(5)==2 && P0(6));
+
+  assert(CMP(SSO_S(0), 0));
+  assert(P(0)==4 && P(1)==0 && P(2)==5 && P(3)==3 && P(4)==1 && P(5)==2 && P0(6));
+
+  assert(CMP(SSO_S(0), 0));
+  assert(P(0)==0 && P(1)==4 && P(2)==5 && P(3)==3 && P(4)==1 && P(5)==2 && P0(6));
+
+  assert(CMP(SSO_S(0), 0));
+  assert(P(0)==0 && P(1)==4 && P(2)==5 && P(3)==3 && P(4)==1 && P(5)==2 && P0(6));
+  
+  assert(CMP(SSO_S(42), -1));
+  assert(P(0)==0 && P(1)==4 && P(2)==5 && P(3)==3 && P(4)==1 && P(5)==2 && P0(6));
+
+  List_free(&l);
+
+  return EXIT_SUCCESS;
+}
diff --git a/ensc_vector/vector-clear.c b/ensc_vector/vector-clear.c
new file mode 100644 (file)
index 0000000..081e686
--- /dev/null
@@ -0,0 +1,31 @@
+// $Id: vector-clear.c,v 1.1 2004/02/06 14:47:18 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vector.h"
+#include <assert.h>
+
+void
+Vector_clear(struct Vector *vec)
+{
+  assert(vec!=0);
+  vec->count = 0;
+}
diff --git a/ensc_vector/vector-foreach.c b/ensc_vector/vector-foreach.c
new file mode 100644 (file)
index 0000000..57831ce
--- /dev/null
@@ -0,0 +1,34 @@
+// $Id: vector-foreach.c,v 1.1 2005/07/03 09:12:31 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vector.h"
+
+void
+Vector_foreach(struct Vector *vec, void (*func)(void *, void *), void *data)
+{
+  char *       ptr  = Vector_begin(vec);
+  char * const end  = Vector_end(vec);
+  size_t const step = vec->elem_size;
+
+  for (; ptr<end; ptr += step)
+    func(ptr, data);
+}
diff --git a/ensc_vector/vector-free.c b/ensc_vector/vector-free.c
new file mode 100644 (file)
index 0000000..eda1957
--- /dev/null
@@ -0,0 +1,38 @@
+// $Id: vector-free.c,v 1.1 2004/02/06 14:47:18 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vector.h"
+#include <assert.h>
+
+void
+Vector_free(struct Vector *vec)
+{
+  assert(vec!=0);
+  free(vec->data);
+
+#ifndef NDEBUG  
+  vec->count     = 0xdeadbeef;
+  vec->allocated = 0xdeadbeef;
+  vec->elem_size = 0xdeadbeef;
+  vec->data      = (void *)(0xdeadbeef);
+#endif
+}
diff --git a/ensc_vector/vector-init.c b/ensc_vector/vector-init.c
new file mode 100644 (file)
index 0000000..be4eafe
--- /dev/null
@@ -0,0 +1,36 @@
+// $Id: vector-init.c,v 1.1 2004/02/06 14:47:18 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vector.h"
+#include <assert.h>
+
+void
+Vector_init(struct Vector *vec, size_t elem_size)
+{
+  assert(vec!=0);
+  assert(elem_size!=0);
+
+  vec->elem_size = elem_size;
+  vec->data      = 0;
+  vec->count     = 0;
+  vec->allocated = 0;
+}
diff --git a/ensc_vector/vector-insert.c b/ensc_vector/vector-insert.c
new file mode 100644 (file)
index 0000000..28a1c5e
--- /dev/null
@@ -0,0 +1,42 @@
+// $Id: vector-insert.c,v 1.2 2004/02/06 16:42:56 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vector.h"
+#include <string.h>
+
+void *
+Vector_insert(struct Vector *vec, void const *key,
+             int (*compare)(const void *, const void *))
+{
+  char *       data;
+  char *       end_ptr = Vector_pushback(vec);
+
+  for (data=vec->data; data<end_ptr; data += vec->elem_size) {
+    if (compare(key, data)<0) {
+      memmove(data+vec->elem_size, data,
+             (char *)(end_ptr) - (char *)(data));
+      return data;
+    }
+  }
+
+  return end_ptr;
+}
diff --git a/ensc_vector/vector-internal.h b/ensc_vector/vector-internal.h
new file mode 100644 (file)
index 0000000..35b4968
--- /dev/null
@@ -0,0 +1,32 @@
+// $Id: vector-internal.h,v 1.1 2004/02/06 14:47:18 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_SRC_VECTOR_VECTOR_INTERNAL_H
+#define H_UTIL_VSERVER_SRC_VECTOR_VECTOR_INTERNAL_H
+
+#ifndef VECTOR_SET_THRESHOLD
+#  define VECTOR_SET_THRESHOLD         20/16
+#endif
+
+#ifndef VECTOR_DEC_THRESHOLD
+#  define VECTOR_DEC_THRESHOLD         24/16
+#endif
+
+
+
+#endif //  H_UTIL_VSERVER_SRC_VECTOR_VECTOR_INTERNAL_H
diff --git a/ensc_vector/vector-popback.c b/ensc_vector/vector-popback.c
new file mode 100644 (file)
index 0000000..beebecf
--- /dev/null
@@ -0,0 +1,32 @@
+// $Id: vector-popback.c,v 1.1 2004/02/06 14:47:18 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vector.h"
+#include <assert.h>
+
+void
+Vector_popback(struct Vector *vec)
+{
+  assert(vec->count>0);
+
+  if (vec->count>0) --vec->count;
+}
diff --git a/ensc_vector/vector-pushback.c b/ensc_vector/vector-pushback.c
new file mode 100644 (file)
index 0000000..4e1e7c9
--- /dev/null
@@ -0,0 +1,34 @@
+// $Id: vector-pushback.c,v 1.1 2004/02/06 14:47:18 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vector.h"
+#include "vector-resizeinternal.hc"
+
+void *
+Vector_pushback(struct Vector *vec)
+{
+  ++vec->count;
+  if (vec->allocated<vec->count)
+    Vector_resizeInternal(vec);
+
+  return (char *)(vec->data) + ((vec->count-1) * vec->elem_size);
+}
diff --git a/ensc_vector/vector-resize.c b/ensc_vector/vector-resize.c
new file mode 100644 (file)
index 0000000..2a15cf2
--- /dev/null
@@ -0,0 +1,31 @@
+// $Id: vector-resize.c,v 1.1 2004/02/06 14:47:18 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vector.h"
+#include "vector-resizeinternal.hc"
+
+void
+Vector_resize(struct Vector *vec)
+{
+  if (vec->allocated * VECTOR_DEC_THRESHOLD > vec->count+1)
+    Vector_resizeInternal(vec);
+}
diff --git a/ensc_vector/vector-resizeinternal.hc b/ensc_vector/vector-resizeinternal.hc
new file mode 100644 (file)
index 0000000..97a39ee
--- /dev/null
@@ -0,0 +1,39 @@
+// $Id: vector-resizeinternal.hc,v 1.1 2004/02/06 14:47:18 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vector-internal.h"
+#include <assert.h>
+
+#define ENSC_WRAPPERS_STDLIB 1
+#include <wrappers.h>
+
+static void
+Vector_resizeInternal(struct Vector *vec)
+{
+  vec->allocated = vec->count * VECTOR_SET_THRESHOLD;
+  ++vec->allocated;
+
+  assert(vec->allocated >= vec->count);
+    
+  vec->data = Erealloc(vec->data, vec->allocated * vec->elem_size);
+  assert(vec->data!=0);
+}
diff --git a/ensc_vector/vector-search.c b/ensc_vector/vector-search.c
new file mode 100644 (file)
index 0000000..5d40b00
--- /dev/null
@@ -0,0 +1,37 @@
+// $Id: vector-search.c,v 1.1 2004/02/06 14:47:18 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vector.h"
+
+#include <stdlib.h>
+#include <assert.h>
+
+
+void *
+Vector_search(struct Vector *vec, void const *key,
+             int (*compare)(const void *, const void *))
+{
+  if (vec->count==0) return 0;
+  assert(vec->data!=0);
+  
+  return bsearch(key, vec->data, vec->count, vec->elem_size, compare);
+}
diff --git a/ensc_vector/vector-searchselforg.c b/ensc_vector/vector-searchselforg.c
new file mode 100644 (file)
index 0000000..420e367
--- /dev/null
@@ -0,0 +1,71 @@
+// $Id: vector-searchselforg.c,v 1.1 2005/03/17 14:47:21 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vector.h"
+#include "vector-internal.h"
+
+#include <string.h>
+#include <assert.h>
+#include <stdbool.h>
+
+void *
+Vector_searchSelfOrg(struct Vector *vec, void const *key,
+                    int (*compare)(const void *, const void *),
+                    VectorSelfOrgMethod method)
+{
+  char * const start_ptr = vec->data;
+  char * const end_ptr   = start_ptr + vec->count*vec->elem_size;
+  char         *ptr      = start_ptr;
+  
+  for (; ptr<end_ptr && compare(ptr, key)!=0; )
+    ptr += vec->elem_size;
+
+  if      (end_ptr  <= ptr) ptr = 0;
+  else if (start_ptr < ptr) {
+    char               tmp[vec->elem_size];
+    memcpy(tmp, ptr, vec->elem_size);
+
+    assert(ptr >= start_ptr+vec->elem_size);
+
+    switch (method) {
+      case vecMOVE_FRONT               :
+       memmove(start_ptr+vec->elem_size, start_ptr, ptr - start_ptr);
+
+       ptr = start_ptr;
+       break;
+       
+      case vecSHIFT_ONCE               :
+       memmove(ptr, ptr  - vec->elem_size, vec->elem_size);
+       ptr -= vec->elem_size;
+       break;
+
+      default          :
+       assert(false);
+       ptr   = 0;
+    }
+
+    memcpy (ptr, tmp, vec->elem_size);
+  }
+
+  return ptr;
+}
+
diff --git a/ensc_vector/vector-sort.c b/ensc_vector/vector-sort.c
new file mode 100644 (file)
index 0000000..7c02bc0
--- /dev/null
@@ -0,0 +1,34 @@
+// $Id: vector-sort.c,v 1.1 2004/02/06 14:47:18 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vector.h"
+
+#include <stdlib.h>
+#include <assert.h>
+
+void
+Vector_sort(struct Vector *vec, int (*compare)(const void *, const void *))
+{
+  if (vec->count==0) return;
+
+  qsort(vec->data, vec->count, vec->elem_size, compare);
+}
diff --git a/ensc_vector/vector-unique.c b/ensc_vector/vector-unique.c
new file mode 100644 (file)
index 0000000..2641f61
--- /dev/null
@@ -0,0 +1,57 @@
+// $Id: vector-unique.c,v 1.1 2004/02/06 14:47:18 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vector.h"
+
+#include <assert.h>
+#include <string.h>
+
+  // TODO: do not iterate from begin to end but in the reverse direction. This should be more
+  // effective.
+void
+Vector_unique(struct Vector *vec, int (*compare)(const void *, const void *))
+{
+  size_t               idx;
+  
+  if (vec->count<2) return;
+
+  for (idx=0; idx+1<vec->count; ++idx) {
+    char       *ptr      = (char *)(vec->data) + idx*vec->elem_size;
+    char       *next_ptr = ptr + vec->elem_size;
+    size_t     next_idx  = idx + 1;
+
+    while (next_idx<vec->count &&
+          compare(ptr, next_ptr)==0) {
+      ++next_idx;
+      next_ptr += vec->elem_size;
+    }
+
+    if (next_idx==vec->count)
+      vec->count = idx+1;
+    else if (next_idx-idx > 1) {
+      memmove(ptr + vec->elem_size,
+             next_ptr, (vec->count - next_idx)*vec->elem_size);
+      vec->count -= (next_idx-idx-1);
+    }
+  }
+}
+
diff --git a/ensc_vector/vector-zeroend.c b/ensc_vector/vector-zeroend.c
new file mode 100644 (file)
index 0000000..e300355
--- /dev/null
@@ -0,0 +1,40 @@
+// $Id: vector-zeroend.c,v 1.1 2004/06/16 10:10:55 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vector.h"
+#include <string.h>
+
+
+void
+Vector_zeroEnd(struct Vector *vec)
+{
+  void *       tmp;
+
+  if (vec->allocated <= vec->count) {
+    tmp = Vector_pushback(vec);
+    Vector_popback(vec);
+  }
+  else
+    tmp = Vector_end(vec);
+
+  memset(tmp, 0, vec->elem_size);
+}
diff --git a/ensc_vector/vector.h b/ensc_vector/vector.h
new file mode 100644 (file)
index 0000000..b374176
--- /dev/null
@@ -0,0 +1,66 @@
+// $Id: vector.h,v 1.4 2005/07/03 09:12:31 ensc Exp $    --*- c++ -*--
+
+// Copyright (C) 2002,2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+//  
+
+#ifndef H_UTILVSERVER_VECTOR_VECTOR_H
+#define H_UTILVSERVER_VECTOR_VECTOR_H
+
+#include <stdlib.h>
+
+struct Vector
+{
+    void       *data;
+    size_t     count;
+    size_t     allocated;
+
+    size_t     elem_size;
+};
+
+typedef enum { vecMOVE_FRONT, vecSHIFT_ONCE }           VectorSelfOrgMethod;
+
+void   Vector_init(struct Vector *, size_t elem_size);
+void   Vector_free(struct Vector *);
+void * Vector_search(struct Vector *, void const *key, int (*compar)(const void *, const void *));
+void * Vector_searchSelfOrg(struct Vector *, void const *key,
+                            int (*compar)(const void *, const void *),
+                            VectorSelfOrgMethod method);
+void   Vector_sort(struct Vector *, int (*compar)(const void *, const void *));
+void   Vector_unique(struct Vector *, int (*compar)(const void *, const void *));
+void * Vector_pushback(struct Vector *);
+void * Vector_insert(struct Vector *, void const *key, int (*compar)(const void *, const void *));
+void   Vector_popback(struct Vector *);
+void   Vector_resize(struct Vector *vec);
+void   Vector_clear(struct Vector *vec);
+void   Vector_zeroEnd(struct Vector *vec);
+void   Vector_foreach(struct Vector *vec, void (*func)(void *, void *), void *);
+
+static void            Vector_foreach_const(struct Vector const *vec,
+                                            void (*func)(void const *, void *),
+                                            void *);
+static void const *    Vector_searchSelfOrg_const(struct Vector const *, void const *key,
+                                                  int (*compar)(const void *, const void *),
+                                                  VectorSelfOrgMethod method);
+static void const *    Vector_search_const(struct Vector const *, void const *key, int (*compar)(const void *, const void *));
+static void *          Vector_begin(struct Vector *);
+static void *          Vector_end(struct Vector *);
+static void const *    Vector_begin_const(struct Vector const *);
+static void const *    Vector_end_const(struct Vector const *);
+static size_t          Vector_count(struct Vector const *vec);
+
+#include "vector.hc"
+
+#endif //  H_UTILVSERVER_VECTOR_VECTOR_H
diff --git a/ensc_vector/vector.hc b/ensc_vector/vector.hc
new file mode 100644 (file)
index 0000000..13ae3e8
--- /dev/null
@@ -0,0 +1,70 @@
+// $Id: vector.hc,v 1.3 2005/07/03 09:12:31 ensc Exp $    --*- c++ -*--
+
+// Copyright (C) 2002,2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+//  
+
+static inline UNUSED void *
+Vector_begin(struct Vector *vec)
+{
+  return vec->data;
+}
+
+static inline UNUSED void *
+Vector_end(struct Vector *vec)
+{
+  return (char *)(vec->data) + (vec->count * vec->elem_size);
+}
+
+static inline UNUSED void const *
+Vector_begin_const(struct Vector const *vec)
+{
+  return vec->data;
+}
+
+static inline UNUSED void const *
+Vector_end_const(struct Vector const *vec)
+{
+  return (char *)(vec->data) + (vec->count * vec->elem_size);
+}
+
+static inline UNUSED size_t
+Vector_count(struct Vector const *vec)
+{
+  return vec->count;
+}
+
+static inline UNUSED void const *
+Vector_search_const(struct Vector const *vec, void const *key, int (*compar)(const void *, const void *))
+{
+  return Vector_search((struct Vector *)(vec), key, compar);
+}
+
+static inline UNUSED void const *
+Vector_searchSelfOrg_const(struct Vector const *vec, void const *key,
+                          int (*compare)(const void *, const void *),
+                          VectorSelfOrgMethod method)
+{
+  return Vector_searchSelfOrg((struct Vector *)(vec), key, compare, method);
+}
+
+static inline UNUSED void
+Vector_foreach_const(struct Vector const *vec, void (*func)(void const *, void *),
+                    void *data)
+{
+  Vector_foreach((struct Vector *)(vec),
+                (void (*)(void *, void *))(func),
+                data);
+}
diff --git a/ensc_wrappers/Makefile-files b/ensc_wrappers/Makefile-files
new file mode 100644 (file)
index 0000000..5b7d755
--- /dev/null
@@ -0,0 +1,34 @@
+## $Id: Makefile-files,v 1.4 2005/02/25 23:31:19 ensc Exp $            --*- makefile -*--
+
+## Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+##  
+## 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; version 2 of the License.
+##  
+## 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.
+
+noinst_HEADERS +=              ensc_wrappers/wrappers-clone.hc \
+                               ensc_wrappers/wrappers-dirent.hc \
+                               ensc_wrappers/wrappers-fcntl.hc \
+                               ensc_wrappers/wrappers-io.hc \
+                               ensc_wrappers/wrappers-ioctl.hc \
+                               ensc_wrappers/wrappers-iosock.hc \
+                               ensc_wrappers/wrappers-mount.hc \
+                               ensc_wrappers/wrappers-pivot.hc \
+                               ensc_wrappers/wrappers-resource.hc \
+                               ensc_wrappers/wrappers-socket.hc \
+                               ensc_wrappers/wrappers-stdlib.hc \
+                               ensc_wrappers/wrappers-string.hc \
+                               ensc_wrappers/wrappers-unistd.hc \
+                               ensc_wrappers/wrappers-vserver.hc \
+                               ensc_wrappers/wrappers-wait.hc \
+                               ensc_wrappers/wrappers.h \
+                               ensc_wrappers/wrappers_handler.hc
diff --git a/ensc_wrappers/wrappers-clone.hc b/ensc_wrappers/wrappers-clone.hc
new file mode 100644 (file)
index 0000000..7b7ac9a
--- /dev/null
@@ -0,0 +1,34 @@
+// $Id: wrappers-clone.hc,v 1.1 2004/02/06 14:47:18 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_ENSC_IN_WRAPPERS_H
+#  error wrappers_handler.hc can not be used in this way
+#endif
+
+inline static WRAPPER_DECL pid_t
+Eclone(int (*fn)(void *), void *child_stack, int flags, void *arg)
+{
+  pid_t                res;
+#ifndef __dietlibc__
+  res = clone(fn, child_stack, flags, arg);
+#else
+  res = clone((void*(*)(void*))(fn), child_stack, flags, arg);
+#endif
+  FatalErrnoError(res==-1, "clone()");
+  return res;
+}
diff --git a/ensc_wrappers/wrappers-dirent.hc b/ensc_wrappers/wrappers-dirent.hc
new file mode 100644 (file)
index 0000000..66184f5
--- /dev/null
@@ -0,0 +1,57 @@
+// $Id: wrappers-dirent.hc,v 1.1 2004/02/06 14:47:18 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_ENSC_IN_WRAPPERS_H
+#  error wrappers_handler.hc can not be used in this way
+#endif
+
+inline static WRAPPER_DECL DIR *
+Eopendir(const char *name)
+{
+  DIR *                res = opendir(name);
+
+  FatalErrnoError(res==0, "opendir()");
+  return res;
+}
+
+inline static WRAPPER_DECL struct dirent *
+Ereaddir(DIR *dir)
+{
+  struct dirent        *res;
+
+  errno = 0;
+  res   = readdir(dir);
+  
+  FatalErrnoError(res==0 && errno!=0, "readdir()");
+  return res;
+}
+
+#ifndef __dietlibc__
+inline static WRAPPER_DECL void
+Ereaddir_r(DIR *dir, struct dirent *entry, struct dirent **result)
+{
+  errno = 0;
+  FatalErrnoError(readdir_r(dir, entry, result)==0 && errno!=0, "readdir_r()");
+}
+#endif
+
+inline static WRAPPER_DECL void
+Eclosedir(DIR *dir)
+{
+  FatalErrnoError(closedir(dir)==-1, "closedir()");
+}
diff --git a/ensc_wrappers/wrappers-fcntl.hc b/ensc_wrappers/wrappers-fcntl.hc
new file mode 100644 (file)
index 0000000..5bc6b6d
--- /dev/null
@@ -0,0 +1,64 @@
+// $Id: wrappers-fcntl.hc,v 1.3 2004/04/20 17:57:12 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+#ifndef H_ENSC_IN_WRAPPERS_H
+#  error wrappers_handler.hc can not be used in this way
+#endif
+
+inline static WRAPPER_DECL int
+Eopen(char const *fname, int flags, mode_t mode)
+{
+  int  res = open(fname, flags, mode);
+  FatalErrnoError(res==-1, "open()");
+
+  return res;
+}
+
+inline static WRAPPER_DECL int
+EopenD(char const *fname, int flags, mode_t mode)
+{
+  ENSC_DETAIL1(msg, "open", fname, 1);
+  
+  {
+    int                res = open(fname, flags, mode);
+    FatalErrnoError(res==-1, msg);
+    return res;
+  }
+}
+
+
+inline static WRAPPER_DECL void
+Emkdir(const char *pathname, mode_t mode)
+{
+  FatalErrnoError(mkdir(pathname,mode)==-1, "mkdir()");
+}
+
+inline static WRAPPER_DECL void
+EmkdirD(const char *pathname, mode_t mode)
+{
+  ENSC_DETAIL1(msg, "mkdir", pathname, 1);
+  FatalErrnoError(mkdir(pathname,mode)==-1, msg);
+}
+
+inline static WRAPPER_DECL int
+Efcntl(int fd, int cmd, long arg)
+{
+  register int         res = fcntl(fd, cmd, arg);
+  FatalErrnoError(res==-1, "fcntl()");
+
+  return res;
+}
diff --git a/ensc_wrappers/wrappers-io.hc b/ensc_wrappers/wrappers-io.hc
new file mode 100644 (file)
index 0000000..e9d90fd
--- /dev/null
@@ -0,0 +1,98 @@
+// $Id: wrappers-io.hc,v 1.3 2005/07/03 12:33:44 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_ENSC_IN_WRAPPERS_H
+#  error wrappers_handler.hc can not be used in this way
+#endif
+
+#include <stdbool.h>
+
+inline static UNUSED bool
+WwriteAll(int fd, void const *ptr_v, size_t len, int *err)
+{
+  register char const  *ptr = ptr_v;
+
+  if (err) *err = 0;
+
+  while (len>0) {
+    ssize_t    res = TEMP_FAILURE_RETRY(write(fd, ptr, len));
+    if (res<=0) {
+      if (err) *err = errno;
+      return false;
+    }
+
+    ptr += res;
+    len -= res;
+  }
+  return true;
+}
+
+inline static UNUSED void
+EwriteAll(int fd, void const *ptr_v, size_t len)
+{
+  register char const  *ptr = ptr_v;
+
+  while (len>0) {
+    ssize_t    res = TEMP_FAILURE_RETRY(write(fd, ptr, len));
+    FatalErrnoError(res==-1, "write()");
+
+    ptr += res;
+    len -= res;
+  }
+}
+
+
+inline static UNUSED bool
+WreadAll(int fd, void *ptr_v, size_t len, int *err)
+{
+  register char        *ptr = ptr_v;
+
+  if (err) *err = 0;
+
+  while (len>0) {
+    ssize_t    res = TEMP_FAILURE_RETRY(read(fd, ptr, len));
+    if (res==-1) {
+      if (err) *err = errno;
+      return false;
+    }
+
+    if (res==0) return false;
+
+    ptr += res;
+    len -= res;
+  }
+  return true;
+}
+
+inline static UNUSED bool
+EreadAll(int fd, void *ptr_v, size_t len)
+{
+  register char        *ptr = ptr_v;
+  
+  while (len>0) {
+    ssize_t    res = TEMP_FAILURE_RETRY(read(fd, ptr, len));
+    FatalErrnoError(res==-1, "read()");
+
+    if (res==0) return false;
+
+    ptr += res;
+    len -= res;
+  }
+
+  return true;
+}
diff --git a/ensc_wrappers/wrappers-ioctl.hc b/ensc_wrappers/wrappers-ioctl.hc
new file mode 100644 (file)
index 0000000..68c9c63
--- /dev/null
@@ -0,0 +1,29 @@
+// $Id: wrappers-ioctl.hc,v 1.1 2004/02/06 14:47:18 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_ENSC_IN_WRAPPERS_H
+#  error wrappers_handler.hc can not be used in this way
+#endif
+
+inline static WRAPPER_DECL void
+Eioctl(int fd, int request, void *p)
+{
+  int   res = ioctl(fd, request, p);
+  FatalErrnoError(res<0, "ioctl()");
+}
+
diff --git a/ensc_wrappers/wrappers-iosock.hc b/ensc_wrappers/wrappers-iosock.hc
new file mode 100644 (file)
index 0000000..4847fe5
--- /dev/null
@@ -0,0 +1,98 @@
+// $Id: wrappers-iosock.hc,v 1.3 2005/07/03 12:33:44 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_ENSC_IN_WRAPPERS_H
+#  error wrappers_handler.hc can not be used in this way
+#endif
+
+#include <stdbool.h>
+
+inline static WRAPPER_DECL bool
+WsendAll(int fd, void const *ptr_v, size_t len, int *err)
+{
+  register char const  *ptr = ptr_v;
+  if (err) *err = 0;
+
+  while (len>0) {
+    ssize_t    res = TEMP_FAILURE_RETRY(send(fd, ptr, len, MSG_NOSIGNAL));
+    if (res==-1) {
+      if (err) *err = errno;
+      return false;
+    }
+
+    if (res==0) return false;
+
+    ptr += res;
+    len -= res;
+  }
+  return true;
+}
+
+inline static WRAPPER_DECL void
+EsendAll(int fd, void const *ptr_v, size_t len)
+{
+  register char const  *ptr = ptr_v;
+
+  while (len>0) {
+    ssize_t    res = TEMP_FAILURE_RETRY(send(fd, ptr, len, MSG_NOSIGNAL));
+    FatalErrnoError(res==-1, "send()");
+
+    ptr += res;
+    len -= res;
+  }
+}
+
+
+inline static WRAPPER_DECL bool
+WrecvAll(int fd, void *ptr_v, size_t len, int *err)
+{
+  register char        *ptr = ptr_v;
+  if (err) *err = 0;
+  
+  while (len>0) {
+    ssize_t    res = TEMP_FAILURE_RETRY(recv(fd, ptr, len, MSG_NOSIGNAL));
+    if (res==-1) {
+      if (err) *err = errno;
+      return false;
+    }
+
+    if (res==0) return false;
+
+    ptr += res;
+    len -= res;
+  }
+  return true;
+}
+
+inline static WRAPPER_DECL bool
+ErecvAll(int fd, void *ptr_v, size_t len)
+{
+  register char        *ptr = ptr_v;
+  
+  while (len>0) {
+    ssize_t    res = TEMP_FAILURE_RETRY(recv(fd, ptr, len, MSG_NOSIGNAL));
+    FatalErrnoError(res==-1, "recv()");
+
+    if (res==0) return false;
+
+    ptr += res;
+    len -= res;
+  }
+
+  return true;
+}
diff --git a/ensc_wrappers/wrappers-mount.hc b/ensc_wrappers/wrappers-mount.hc
new file mode 100644 (file)
index 0000000..1e961cb
--- /dev/null
@@ -0,0 +1,35 @@
+// $Id: wrappers-mount.hc,v 1.1 2004/02/06 14:47:18 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+#ifndef H_ENSC_IN_WRAPPERS_H
+#  error wrappers_handler.hc can not be used in this way
+#endif
+
+inline static WRAPPER_DECL void
+Eumount2(char const *path, int flag)
+{
+  FatalErrnoError(umount2(path,flag)==-1, "umount2()");
+}
+
+inline static WRAPPER_DECL void
+Emount(const char *source, const char *target,
+       const char *filesystemtype, unsigned long mountflags,
+       const void *data)
+{
+  FatalErrnoError(mount(source, target, filesystemtype,
+                       mountflags, data)==-1, "mount()");
+}
diff --git a/ensc_wrappers/wrappers-pivot.hc b/ensc_wrappers/wrappers-pivot.hc
new file mode 100644 (file)
index 0000000..daf1249
--- /dev/null
@@ -0,0 +1,27 @@
+// $Id: wrappers-pivot.hc,v 1.1 2004/02/06 14:47:18 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_ENSC_IN_WRAPPERS_H
+#  error wrappers_handler.hc can not be used in this way
+#endif
+
+inline static WRAPPER_DECL void
+Epivot_root(const char *new_root, const char *put_old)
+{
+  FatalErrnoError(pivot_root(new_root, put_old)==-1, "pivot_root()");
+}
diff --git a/ensc_wrappers/wrappers-resource.hc b/ensc_wrappers/wrappers-resource.hc
new file mode 100644 (file)
index 0000000..97ed41e
--- /dev/null
@@ -0,0 +1,32 @@
+// $Id: wrappers-resource.hc,v 1.1 2004/02/06 14:47:18 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+#ifndef H_ENSC_IN_WRAPPERS_H
+#  error wrappers_handler.hc can not be used in this way
+#endif
+
+inline static WRAPPER_DECL void
+Egetrlimit(int resource, struct rlimit *rlim)
+{
+  FatalErrnoError(getrlimit(resource, rlim)==-1, "getrlimit()");
+}
+
+inline static WRAPPER_DECL void
+Esetrlimit(int resource, struct rlimit const *rlim)
+{
+  FatalErrnoError(setrlimit(resource, rlim)==-1, "setrlimit()");
+}
diff --git a/ensc_wrappers/wrappers-socket.hc b/ensc_wrappers/wrappers-socket.hc
new file mode 100644 (file)
index 0000000..c5c5424
--- /dev/null
@@ -0,0 +1,92 @@
+// $Id: wrappers-socket.hc,v 1.2 2004/08/19 13:54:27 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_ENSC_IN_WRAPPERS_H
+#  error wrappers-socket.hc can not be used in this way
+#endif
+
+inline static WRAPPER_DECL int
+Esocket(int domain, int type, int protocol)
+{
+  register int         res = socket(domain, type, protocol);
+  FatalErrnoError(res==-1, "socket()");
+  return res;
+}
+
+inline static WRAPPER_DECL void
+Econnect(int sockfd, void const *serv_addr, socklen_t addrlen)
+{
+  FatalErrnoError(connect(sockfd, serv_addr, addrlen)==-1, "connect()");
+}
+
+inline static WRAPPER_DECL void
+Ebind(int sockfd, void *my_addr, socklen_t addrlen)
+{
+  FatalErrnoError(bind(sockfd, my_addr, addrlen)==-1, "bind()");
+}
+
+inline static WRAPPER_DECL int
+Eaccept(int s, void *addr, socklen_t *addrlen)
+{
+  register int         res = accept(s,addr,addrlen);
+  FatalErrnoError(res==-1, "accept()");
+  return res;
+}
+
+inline static WRAPPER_DECL void
+Elisten(int sock, int backlog)
+{
+  FatalErrnoError(listen(sock, backlog)==-1, "bind()");
+}
+
+inline static WRAPPER_DECL void
+Eshutdown(int s, int how)
+{
+  FatalErrnoError(shutdown(s,how)==-1, "shutdown()");
+}
+
+inline static WRAPPER_DECL ssize_t
+Erecv(int s, void *buf, size_t len, int flags)
+{
+  register ssize_t     res = recv(s,buf,len,flags);
+  FatalErrnoError(res==-1, "recv()");
+  return res;
+}
+
+inline static WRAPPER_DECL ssize_t
+Esend(int s, void const *buf, size_t len, int flags)
+{
+  register ssize_t     res = send(s,buf,len,flags);
+  FatalErrnoError(res==-1, "send()");
+  return res;
+}
+
+inline static WRAPPER_DECL int
+Eselect(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
+       struct timeval *timeout)
+{
+  register int         res = select(n, readfds,writefds,exceptfds, timeout);
+  FatalErrnoError(res==-1, "select()");
+  return res;
+}
+
+inline static WRAPPER_DECL void
+Esocketpair(int d, int type, int protocol, int sv[2])
+{
+  FatalErrnoError(socketpair(d,type,protocol,sv)==-1, "socketpair()");
+}
diff --git a/ensc_wrappers/wrappers-stdlib.hc b/ensc_wrappers/wrappers-stdlib.hc
new file mode 100644 (file)
index 0000000..2ae432d
--- /dev/null
@@ -0,0 +1,47 @@
+// $Id: wrappers-stdlib.hc,v 1.2 2004/08/19 13:54:45 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+#ifndef H_ENSC_IN_WRAPPERS_H
+#  error wrappers_handler.hc can not be used in this way
+#endif
+
+inline static WRAPPER_DECL void *
+Emalloc(size_t size)
+{
+  register void               *res = malloc(size);
+  FatalErrnoError(res==0 && size!=0, "malloc()");
+  return res;
+}
+
+/*@unused@*/
+inline static WRAPPER_DECL /*@null@*//*@only@*/ void *
+Erealloc(/*@only@*//*@out@*//*@null@*/ void *ptr,
+         size_t new_size)
+    /*@ensures maxSet(result) == new_size@*/
+    /*@modifies *ptr@*/
+{
+  register void         *res = realloc(ptr, new_size);
+  FatalErrnoError(res==0 && new_size!=0, "realloc()");
+
+  return res;
+}
+
+inline static WRAPPER_DECL void
+Esetenv(char const *key, char const *val, int override)
+{
+  FatalErrnoError(setenv(key,val,override)==-1, "setenv()");
+}
diff --git a/ensc_wrappers/wrappers-string.hc b/ensc_wrappers/wrappers-string.hc
new file mode 100644 (file)
index 0000000..9a24653
--- /dev/null
@@ -0,0 +1,29 @@
+// $Id: wrappers-string.hc,v 1.1 2005/02/25 23:31:19 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+#ifndef H_ENSC_IN_WRAPPERS_H
+#  error wrappers_handler.hc can not be used in this way
+#endif
+
+/*@unused@*/
+inline static WRAPPER_DECL char *
+Estrdup(char const *s)
+{
+  register char               *res = strdup(s);
+  FatalErrnoError(res==0, "strdup()");
+  return res;
+}
diff --git a/ensc_wrappers/wrappers-unistd.hc b/ensc_wrappers/wrappers-unistd.hc
new file mode 100644 (file)
index 0000000..885641e
--- /dev/null
@@ -0,0 +1,220 @@
+// $Id: wrappers-unistd.hc,v 1.9 2005/07/03 12:33:44 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+#ifndef H_ENSC_IN_WRAPPERS_H
+#  error wrappers_handler.hc can not be used in this way
+#endif
+
+inline static WRAPPER_DECL void
+Eclose(int s)
+{
+  FatalErrnoError(close(s)==-1, "close()");
+}
+
+inline static WRAPPER_DECL void
+Echdir(char const path[])
+{
+  FatalErrnoError(chdir(path)==-1, "chdir()");
+}
+
+inline static WRAPPER_DECL void
+Efchdir(int fd)
+{
+  FatalErrnoError(fchdir(fd)==-1, "fchdir()");
+}
+
+inline static WRAPPER_DECL void
+Echroot(char const path[])
+{
+  FatalErrnoError(chroot(path)==-1, "chroot()");
+}
+
+inline static WRAPPER_DECL NORETURN void
+Eexecv(char const *path, char *argv[])
+{
+  execv(path,argv);
+  FatalErrnoErrorFail("execv()");
+}
+
+inline static WRAPPER_DECL NORETURN void
+Eexecvp(char const *path, char *argv[])
+{
+  execvp(path,argv);
+  FatalErrnoErrorFail("execvp()");
+}
+
+inline static WRAPPER_DECL NORETURN void
+EexecvpD(char const *path, char *argv[])
+{
+  execvp(path,argv);
+  {
+    ENSC_DETAIL1(msg, "execvp", path, 1);
+    FatalErrnoErrorFail(msg);
+  }
+}
+
+inline static WRAPPER_DECL void
+Epipe(int filedes[2])
+{
+  FatalErrnoError(pipe(filedes)==-1, "pipe()");
+}
+
+inline static WRAPPER_DECL pid_t
+Efork()
+{
+  pid_t                res;
+  res = fork();
+  FatalErrnoError(res==-1, "fork()");
+  return res;
+}
+
+inline static WRAPPER_DECL size_t
+Eread(int fd, void *ptr, size_t len)
+{
+  ssize_t      res = read(fd, ptr, len);
+  FatalErrnoError(res==-1, "read()");
+
+  return res;
+}
+
+inline static WRAPPER_DECL size_t
+Ewrite(int fd, void const *ptr, size_t len)
+{
+  ssize_t      res = write(fd, ptr, len);
+  FatalErrnoError(res==-1, "write()");
+
+  return res;
+}
+
+inline static WRAPPER_DECL size_t
+Ereadlink(const char *path, char *buf, size_t bufsiz)
+{
+  ssize_t      res = readlink(path, buf, bufsiz);
+  FatalErrnoError(res==-1, "readlink()");
+
+  return res;
+}
+
+inline static WRAPPER_DECL size_t
+EreadlinkD(const char *path, char *buf, size_t bufsiz)
+{
+  ssize_t      res = readlink(path, buf, bufsiz);
+  ENSC_DETAIL1(msg, "readlink", path, 1);
+  FatalErrnoError((ssize_t)(res)==-1, msg);
+
+  return res;
+}
+
+inline static WRAPPER_DECL void
+Esymlink(const char *oldpath, const char *newpath)
+{
+  FatalErrnoError(symlink(oldpath, newpath)==-1, "symlink()");
+}
+
+inline static WRAPPER_DECL void
+EsymlinkD(const char *oldpath, const char *newpath)
+{
+  ENSC_DETAIL2(msg, "symlink", oldpath, newpath, 1, 1);
+  FatalErrnoError(symlink(oldpath, newpath)==-1, msg);
+}
+
+inline static WRAPPER_DECL void
+Eunlink(char const *pathname)
+{
+  FatalErrnoError(unlink(pathname)==-1, "unlink()");
+}
+
+inline static void
+Esetuid(uid_t uid)
+{
+  FatalErrnoError(setuid(uid)==-1, "setuid()");
+}
+
+inline static void
+Esetgid(gid_t gid)
+{
+  FatalErrnoError(setgid(gid)==-1, "setgid()");
+}
+
+#if defined(_GRP_H) && (defined(__USE_BSD) || defined(__dietlibc__))
+inline static void
+Esetgroups(size_t size, const gid_t *list)
+{
+  FatalErrnoError(setgroups(size, list)==-1, "setgroups()");
+}
+#endif
+
+inline static WRAPPER_DECL int
+Edup2(int oldfd, int newfd)
+{
+  register int          res = dup2(oldfd, newfd);
+  FatalErrnoError(res==-1, "dup2()");
+
+  return res;
+}
+
+inline static WRAPPER_DECL int
+Edup(int fd)
+{
+  register int          res = dup(fd);
+  FatalErrnoError(res==-1, "dup()");
+
+  return res;
+}
+
+inline static WRAPPER_DECL pid_t
+Esetsid()
+{
+  register pid_t const  res = setsid();
+  FatalErrnoError(res==-1, "setsid()");
+
+  return res;
+}
+
+inline static WRAPPER_DECL int
+Emkstemp(char *template)
+{
+  int          res = mkstemp(template);
+  FatalErrnoError(res==-1, "mkstemp()");
+  return res;
+}
+
+inline static WRAPPER_DECL off_t
+Elseek(int fildes, off_t offset, int whence)
+{
+  off_t         res = lseek(fildes, offset, whence);
+  FatalErrnoError(res==(off_t)-1, "lseek()");
+  return res;
+}
+
+inline static WRAPPER_DECL void
+Enice(int n)
+{
+  FatalErrnoError(nice(n)==-1, "nice()");
+}
+
+inline static WRAPPER_DECL void
+Etruncate(const char *path, off_t length)
+{
+  FatalErrnoError(truncate(path,length)==-1, "truncate()");
+}
+
+inline static WRAPPER_DECL void
+Eftruncate(int fd, off_t length)
+{
+  FatalErrnoError(ftruncate(fd,length)==-1, "ftruncate()");
+}
diff --git a/ensc_wrappers/wrappers-vserver.hc b/ensc_wrappers/wrappers-vserver.hc
new file mode 100644 (file)
index 0000000..1b8f3f6
--- /dev/null
@@ -0,0 +1,120 @@
+// $Id: wrappers-vserver.hc,v 1.11 2004/10/19 23:11:23 ensc Exp $    --*- c++ -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_ENSC_IN_WRAPPERS_H
+#  error wrappers_handler.hc can not be used in this way
+#endif
+
+inline static WRAPPER_DECL xid_t
+Evc_new_s_context(xid_t ctx, unsigned int remove_cap, unsigned int flags)
+{
+  register xid_t       res = vc_new_s_context(ctx,remove_cap,flags);
+  FatalErrnoError(res==VC_NOCTX, "vc_new_s_context()");
+  return res;
+}
+
+inline static WRAPPER_DECL xid_t
+Evc_get_task_xid(pid_t pid)
+{
+  register xid_t       res = vc_get_task_xid(pid);
+  FatalErrnoError(res==VC_NOCTX, "vc_get_task_xid()");
+  return res;
+}
+
+inline static WRAPPER_DECL xid_t
+Evc_ctx_create(xid_t xid)
+{
+  register xid_t       res = vc_ctx_create(xid);
+  FatalErrnoError(res==VC_NOCTX, "vc_ctx_create()");
+  return res;
+}
+
+inline static WRAPPER_DECL void
+Evc_ctx_migrate(xid_t xid)
+{
+  FatalErrnoError(vc_ctx_migrate(xid)==-1, "vc_ctx_migrate()");
+}
+
+inline static WRAPPER_DECL void
+Evc_get_cflags(xid_t xid, struct vc_ctx_flags *flags)
+{
+  FatalErrnoError(vc_get_cflags(xid, flags)==-1, "vc_get_cflags()");
+}
+
+inline static WRAPPER_DECL void
+Evc_set_cflags(xid_t xid, struct vc_ctx_flags const *flags)
+{
+  FatalErrnoError(vc_set_cflags(xid, flags)==-1, "vc_set_cflags()");
+}
+
+inline static WRAPPER_DECL void
+Evc_set_vhi_name(xid_t xid, vc_uts_type type,
+                char const *val, size_t len)
+{
+  FatalErrnoError(vc_set_vhi_name(xid,type,val,len)==-1, "vc_set_vhi_name()");
+}
+
+inline static WRAPPER_DECL void
+Evc_get_ccaps(xid_t xid, struct vc_ctx_caps *caps)
+{
+  FatalErrnoError(vc_get_ccaps(xid, caps)==-1, "vc_get_ccaps()");
+}
+
+inline static WRAPPER_DECL void
+Evc_set_ccaps(xid_t xid, struct vc_ctx_caps const *caps)
+{
+  FatalErrnoError(vc_set_ccaps(xid, caps)==-1, "vc_set_ccaps()");
+}
+
+inline static WRAPPER_DECL void
+Evc_set_namespace()
+{
+  FatalErrnoError(vc_set_namespace()==-1, "vc_set_namespace()");
+}
+
+inline static WRAPPER_DECL void
+Evc_enter_namespace(xid_t xid)
+{
+  FatalErrnoError(vc_enter_namespace(xid)==-1, "vc_enter_namespace()");
+}
+
+inline static WRAPPER_DECL xid_t
+Evc_xidopt2xid(char const *id, bool honor_static)
+{
+  char const * err;
+  xid_t                rc = vc_xidopt2xid(id, honor_static, &err);
+  if (__builtin_expect(rc==VC_NOCTX,0)) {
+    ENSC_DETAIL1(msg, "vc_xidopt2xid", id, 1);
+#if 1
+    FatalErrnoErrorFail(msg);
+#else
+    {
+      size_t   l1 = strlen(msg);
+      size_t   l2 = strlen(err);
+      char     buf[l1 + l2 + sizeof(": ")];
+      memcpy(buf,       msg, l1);
+      memcpy(buf+l1,   ": ", 2);
+      memcpy(buf+l1+2,  err, l2+1);
+
+      FatalErrnoErrorFail(buf);
+    }
+#endif    
+  }
+
+  return rc;
+}
diff --git a/ensc_wrappers/wrappers-wait.hc b/ensc_wrappers/wrappers-wait.hc
new file mode 100644 (file)
index 0000000..3df8fd1
--- /dev/null
@@ -0,0 +1,31 @@
+// $Id: wrappers-wait.hc,v 1.1 2004/02/06 14:47:18 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_ENSC_IN_WRAPPERS_H
+#  error wrappers_handler.hc can not be used in this way
+#endif
+
+inline static WRAPPER_DECL pid_t
+Ewait4(pid_t pid, int *status, int options,
+       struct rusage *rusage)
+{
+  pid_t                res;
+  res = wait4(pid, status, options, rusage);
+  FatalErrnoError(res==-1, "wait4()");
+  return res;
+}
diff --git a/ensc_wrappers/wrappers.h b/ensc_wrappers/wrappers.h
new file mode 100644 (file)
index 0000000..2d2e766
--- /dev/null
@@ -0,0 +1,116 @@
+// $Id: wrappers.h,v 1.5 2005/02/25 23:31:19 ensc Exp $    --*- c++ -*--
+
+// Copyright (C) 2003,2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_SRC_WRAPPERS_H
+#define H_UTIL_VSERVER_SRC_WRAPPERS_H
+
+#define WRAPPER_DECL           UNUSED ALWAYSINLINE
+#define H_ENSC_IN_WRAPPERS_H   1
+
+#include "wrappers_handler.hc"
+
+#define ENSC_DOQUOTE_COND(PTR, VAL, LEN, DO_QUOTE) \
+  if (DO_QUOTE) *PTR++ = '"';                                  \
+  memcpy(PTR, VAL, LEN); PTR += LEN;                           \
+  if (DO_QUOTE) *PTR++ = '"'                                   \
+  
+#define ENSC_DETAIL1(RES,FUNC,VAL,DO_QUOTE)                    \
+  size_t       l_ = strlen(VAL);                               \
+  char         RES[l_ + sizeof(FUNC "(\"\")")];                \
+  char *       ptr_ = RES;                                     \
+  memcpy(ptr_, FUNC "(", sizeof(FUNC)); ptr_ += sizeof(FUNC);  \
+  ENSC_DOQUOTE_COND(ptr_, VAL, l_, DO_QUOTE);                  \
+  *ptr_++ = ')';                                               \
+  *ptr_   = '\0';
+
+#define ENSC_DETAIL2(RES,FUNC, VAL0,VAL1, DO_QUOTE0,DO_QUOTE1) \
+  size_t       l0_ = strlen(VAL0);                             \
+  size_t       l1_ = strlen(VAL1);                             \
+  char         RES[l0_ + l1_ + sizeof(FUNC "('','')")];        \
+  char *       ptr_ = RES;                                     \
+  memcpy(ptr_, FUNC "(", sizeof(FUNC)); ptr_ += sizeof(FUNC);  \
+  ENSC_DOQUOTE_COND(ptr_, VAL0, l0_, DO_QUOTE0);               \
+  *ptr_++ = ',';                                               \
+  ENSC_DOQUOTE_COND(ptr_, VAL1, l1_, DO_QUOTE1);               \
+  *ptr_++ = ')';                                               \
+  *ptr_   = '\0';
+  
+
+#ifdef ENSC_WRAPPERS_UNISTD
+#  include "wrappers-unistd.hc"
+#endif
+
+#ifdef ENSC_WRAPPERS_FCNTL
+#  include "wrappers-fcntl.hc"
+#endif
+
+#ifdef ENSC_WRAPPERS_MOUNT
+#  include "wrappers-mount.hc"
+#endif
+
+#ifdef ENSC_WRAPPERS_RESOURCE
+#  include "wrappers-resource.hc"
+#endif
+
+#ifdef ENSC_WRAPPERS_IOCTL
+#  include "wrappers-ioctl.hc"
+#endif
+
+#ifdef ENSC_WRAPPERS_WAIT
+#  include "wrappers-wait.hc"
+#endif
+
+#ifdef ENSC_WRAPPERS_VSERVER
+#  include "wrappers-vserver.hc"
+#endif
+
+#ifdef ENSC_WRAPPERS_IO
+#  include "wrappers-io.hc"
+#endif
+
+#ifdef ENSC_WRAPPERS_IOSOCK
+#  include "wrappers-iosock.hc"
+#endif
+
+#ifdef ENSC_WRAPPERS_DIRENT
+#  include "wrappers-dirent.hc"
+#endif
+
+#ifdef ENSC_WRAPPERS_CLONE
+#  include "wrappers-clone.hc"
+#endif
+
+#ifdef ENSC_WRAPPERS_STDLIB
+#  include "wrappers-stdlib.hc"
+#endif
+
+#ifdef ENSC_WRAPPERS_STRING
+#  include "wrappers-string.hc"
+#endif
+
+#ifdef ENSC_WRAPPERS_SOCKET
+#  include "wrappers-socket.hc"
+#endif
+
+#undef ENSC_DETAIL2
+#undef ENSC_DETAIL1
+#undef ENSC_DOQUOTE_COND
+#undef H_ENSC_IN_WRAPPERS_H
+#undef WRAPPER_DECL
+
+#endif //  H_UTIL_VSERVER_SRC_WRAPPERS_H
diff --git a/ensc_wrappers/wrappers_handler.hc b/ensc_wrappers/wrappers_handler.hc
new file mode 100644 (file)
index 0000000..f820371
--- /dev/null
@@ -0,0 +1,49 @@
+// $Id: wrappers_handler.hc,v 1.4 2004/03/18 05:27:10 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_ENSC_IN_WRAPPERS_H
+#  error wrappers_handler.hc can not be used in this way
+#endif
+
+#include <stdlib.h>
+#include <stdbool.h>
+#include <stdio.h>
+
+static inline ALWAYSINLINE NORETURN void
+FatalErrnoErrorFail(char const msg[])
+{
+  extern int   wrapper_exit_code;
+
+#ifdef ENSC_WRAPPERS_PREFIX
+  {
+    int                old_errno = errno;
+    WRITE_MSG(2, ENSC_WRAPPERS_PREFIX);
+    errno = old_errno;
+  }
+#endif
+  perror(msg);
+  
+  exit(wrapper_exit_code);
+}
+
+static UNUSED void 
+FatalErrnoError(bool condition, char const msg[]) /*@*/
+{
+  if (__builtin_expect(!condition,true))       return;
+  FatalErrnoErrorFail(msg);
+}
index e4160c9..1a83534 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2004-04-01.17
+scriptversion=2005-02-02.21
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -58,9 +58,6 @@ stripprog="${STRIPPROG-strip}"
 rmprog="${RMPROG-rm}"
 mkdirprog="${MKDIRPROG-mkdir}"
 
-transformbasename=
-transform_arg=
-instcmd="$mvprog"
 chmodcmd="$chmodprog 0755"
 chowncmd=
 chgrpcmd=
@@ -70,23 +67,27 @@ mvcmd="$mvprog"
 src=
 dst=
 dir_arg=
+dstarg=
+no_target_directory=
 
-usage="Usage: $0 [OPTION]... SRCFILE DSTFILE
+usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
    or: $0 [OPTION]... SRCFILES... DIRECTORY
-   or: $0 -d DIRECTORIES...
+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+   or: $0 [OPTION]... -d DIRECTORIES...
 
-In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default.
-In the second, create the directory path DIR.
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
 
 Options:
--b=TRANSFORMBASENAME
--c         copy source (using $cpprog) instead of moving (using $mvprog).
+-c         (ignored)
 -d         create directories instead of installing files.
--g GROUP   $chgrp installed files to GROUP.
--m MODE    $chmod installed files to MODE.
--o USER    $chown installed files to USER.
--s         strip installed files (using $stripprog).
--t=TRANSFORM
+-g GROUP   $chgrpprog installed files to GROUP.
+-m MODE    $chmodprog installed files to MODE.
+-o USER    $chownprog installed files to USER.
+-s         $stripprog installed files.
+-t DIRECTORY  install into DIRECTORY.
+-T         report an error if DSTFILE is a directory.
 --help     display this help and exit.
 --version  display version info and exit.
 
@@ -96,12 +97,7 @@ Environment variables override the default commands:
 
 while test -n "$1"; do
   case $1 in
-    -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
-        shift
-        continue;;
-
-    -c) instcmd=$cpprog
-        shift
+    -c) shift
         continue;;
 
     -d) dir_arg=true
@@ -113,7 +109,7 @@ while test -n "$1"; do
         shift
         continue;;
 
-    --help) echo "$usage"; exit 0;;
+    --help) echo "$usage"; exit $?;;
 
     -m) chmodcmd="$chmodprog $2"
         shift
@@ -129,14 +125,20 @@ while test -n "$1"; do
         shift
         continue;;
 
-    -t=*) transformarg=`echo $1 | sed 's/-t=//'`
-        shift
-        continue;;
+    -t) dstarg=$2
+       shift
+       shift
+       continue;;
 
-    --version) echo "$0 $scriptversion"; exit 0;;
+    -T) no_target_directory=true
+       shift
+       continue;;
+
+    --version) echo "$0 $scriptversion"; exit $?;;
 
     *)  # When -d is used, all remaining arguments are directories to create.
-       test -n "$dir_arg" && break
+       # When -t is used, the destination is already specified.
+       test -n "$dir_arg$dstarg" && break
         # Otherwise, the last argument is the destination.  Remove it from $@.
        for arg
        do
@@ -174,13 +176,13 @@ do
     src=
 
     if test -d "$dst"; then
-      instcmd=:
+      mkdircmd=:
       chmodcmd=
     else
-      instcmd=$mkdirprog
+      mkdircmd=$mkdirprog
     fi
   else
-    # Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
     # might cause directories to be created, which would be especially bad
     # if $src (and thus $dsttmp) contains '*'.
     if test ! -f "$src" && test ! -d "$src"; then
@@ -202,12 +204,16 @@ do
     # If destination is a directory, append the input filename; won't work
     # if double slashes aren't ignored.
     if test -d "$dst"; then
+      if test -n "$no_target_directory"; then
+       echo "$0: $dstarg: Is a directory" >&2
+       exit 1
+      fi
       dst=$dst/`basename "$src"`
     fi
   fi
 
   # This sed command emulates the dirname command.
-  dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+  dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
 
   # Make sure that the destination directory exists.
 
@@ -220,7 +226,8 @@ do
     oIFS=$IFS
     # Some sh's can't handle IFS=/ for some reason.
     IFS='%'
-    set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+    set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+    shift
     IFS=$oIFS
 
     pathcomp=
@@ -229,51 +236,42 @@ do
       pathcomp=$pathcomp$1
       shift
       if test ! -d "$pathcomp"; then
-        $mkdirprog "$pathcomp" || lasterr=$?
+        $mkdirprog "$pathcomp"
        # mkdir can fail with a `File exist' error in case several
        # install-sh are creating the directory concurrently.  This
        # is OK.
-       test ! -d "$pathcomp" && { (exit ${lasterr-1}); exit; }
+       test -d "$pathcomp" || exit
       fi
       pathcomp=$pathcomp/
     done
   fi
 
   if test -n "$dir_arg"; then
-    $doit $instcmd "$dst" \
+    $doit $mkdircmd "$dst" \
       && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
       && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
       && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
       && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
 
   else
-    # If we're going to rename the final executable, determine the name now.
-    if test -z "$transformarg"; then
-      dstfile=`basename "$dst"`
-    else
-      dstfile=`basename "$dst" $transformbasename \
-               | sed $transformarg`$transformbasename
-    fi
-
-    # don't allow the sed command to completely eliminate the filename.
-    test -z "$dstfile" && dstfile=`basename "$dst"`
+    dstfile=`basename "$dst"`
 
     # Make a couple of temp file names in the proper directory.
     dsttmp=$dstdir/_inst.$$_
     rmtmp=$dstdir/_rm.$$_
 
     # Trap to clean up those temp files at exit.
-    trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
+    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
     trap '(exit $?); exit' 1 2 13 15
 
-    # Move or copy the file name to the temp name
-    $doit $instcmd "$src" "$dsttmp" &&
+    # Copy the file name to the temp name.
+    $doit $cpprog "$src" "$dsttmp" &&
 
     # and set any options; do chmod last to preserve setuid bits.
     #
     # If any of these fail, we abort the whole thing.  If we want to
     # ignore errors from any of these, just make sure not to ignore
-    # errors from the above "$doit $instcmd $src $dsttmp" command.
+    # errors from the above "$doit $cpprog $src $dsttmp" command.
     #
     { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
       && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
@@ -298,7 +296,7 @@ do
               || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
               || {
                 echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
-                (exit 1); exit
+                (exit 1); exit 1
               }
             else
               :
@@ -309,12 +307,12 @@ do
           $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
         }
     }
-  fi || { (exit 1); exit; }
+  fi || { (exit 1); exit 1; }
 done
 
 # The final little trick to "correctly" pass the exit status to the exit trap.
 {
-  (exit 0); exit
+  (exit 0); exit 0
 }
 
 # Local variables:
diff --git a/kernel/context.h b/kernel/context.h
new file mode 100644 (file)
index 0000000..79f9053
--- /dev/null
@@ -0,0 +1,161 @@
+#ifndef _VX_CONTEXT_H
+#define _VX_CONTEXT_H
+
+#include <linux/types.h>
+
+
+#define MAX_S_CONTEXT  65535   /* Arbitrary limit */
+#define MIN_D_CONTEXT  49152   /* dynamic contexts start here */
+
+#define VX_DYNAMIC_ID  ((uint32_t)-1)          /* id for dynamic context */
+
+/* context flags */
+
+#define VXF_INFO_LOCK          0x00000001
+#define VXF_INFO_SCHED         0x00000002
+#define VXF_INFO_NPROC         0x00000004
+#define VXF_INFO_PRIVATE       0x00000008
+
+#define VXF_INFO_INIT          0x00000010
+#define VXF_INFO_HIDE          0x00000020
+#define VXF_INFO_ULIMIT                0x00000040
+#define VXF_INFO_NSPACE                0x00000080
+
+#define VXF_SCHED_HARD         0x00000100
+#define VXF_SCHED_PRIO         0x00000200
+#define VXF_SCHED_PAUSE                0x00000400
+
+#define VXF_VIRT_MEM           0x00010000
+#define VXF_VIRT_UPTIME                0x00020000
+#define VXF_VIRT_CPU           0x00040000
+#define VXF_VIRT_LOAD          0x00080000
+
+#define VXF_HIDE_MOUNT         0x01000000
+#define VXF_HIDE_NETIF         0x02000000
+
+#define VXF_STATE_SETUP                (1ULL<<32)
+#define VXF_STATE_INIT         (1ULL<<33)
+
+#define VXF_STATE_HELPER       (1ULL<<36)
+
+#define VXF_FORK_RSS           (1ULL<<48)
+#define VXF_PROLIFIC           (1ULL<<49)
+
+#define VXF_IGNEG_NICE         (1ULL<<52)
+
+#define VXF_ONE_TIME           (0x0003ULL<<32)
+
+#define VXF_INIT_SET           (VXF_STATE_SETUP|VXF_STATE_INIT)
+
+
+/* context caps */
+
+#define        VXC_CAP_MASK            0x00000000
+
+#define VXC_SET_UTSNAME                0x00000001
+#define VXC_SET_RLIMIT         0x00000002
+
+#define VXC_RAW_ICMP           0x00000100
+#define VXC_SYSLOG             0x00001000
+
+#define VXC_SECURE_MOUNT       0x00010000
+#define VXC_SECURE_REMOUNT     0x00020000
+#define VXC_BINARY_MOUNT       0x00040000
+
+#define VXC_QUOTA_CTL          0x00100000
+
+
+/* context state changes */
+
+enum {
+       VSC_STARTUP = 1,
+       VSC_SHUTDOWN,
+
+       VSC_NETUP,
+       VSC_NETDOWN,
+};
+
+
+#ifdef __KERNEL__
+
+#include <linux/list.h>
+#include <linux/spinlock.h>
+#include <linux/rcupdate.h>
+
+#include "limit_def.h"
+#include "sched_def.h"
+#include "cvirt_def.h"
+
+struct vx_info {
+       struct hlist_node vx_hlist;             /* linked list of contexts */
+       xid_t vx_id;                            /* context id */
+       atomic_t vx_usecnt;                     /* usage count */
+       atomic_t vx_tasks;                      /* tasks count */
+       struct vx_info *vx_parent;              /* parent context */
+       int vx_state;                           /* context state */
+
+       struct namespace *vx_namespace;         /* private namespace */
+       struct fs_struct *vx_fs;                /* private namespace fs */
+       uint64_t vx_flags;                      /* context flags */
+       uint64_t vx_bcaps;                      /* bounding caps (system) */
+       uint64_t vx_ccaps;                      /* context caps (vserver) */
+
+       pid_t vx_initpid;                       /* PID of fake init process */
+
+       wait_queue_head_t vx_wait;              /* context exit waitqueue */
+
+       struct _vx_limit limit;                 /* vserver limits */
+       struct _vx_sched sched;                 /* vserver scheduler */
+       struct _vx_cvirt cvirt;                 /* virtual/bias stuff */
+       struct _vx_cacct cacct;                 /* context accounting */
+
+       char vx_name[65];                       /* vserver name */
+};
+
+
+/* status flags */
+
+#define VXS_HASHED     0x0001
+#define VXS_PAUSED     0x0010
+#define VXS_ONHOLD     0x0020
+#define VXS_SHUTDOWN   0x0100
+#define VXS_RELEASED   0x8000
+
+/* check conditions */
+
+#define VX_ADMIN       0x0001
+#define VX_WATCH       0x0002
+#define VX_HIDE                0x0004
+#define VX_HOSTID      0x0008
+
+#define VX_IDENT       0x0010
+#define VX_EQUIV       0x0020
+#define VX_PARENT      0x0040
+#define VX_CHILD       0x0080
+
+#define VX_ARG_MASK    0x00F0
+
+#define VX_DYNAMIC     0x0100
+#define VX_STATIC      0x0200
+
+#define VX_ATR_MASK    0x0F00
+
+
+extern void claim_vx_info(struct vx_info *, struct task_struct *);
+extern void release_vx_info(struct vx_info *, struct task_struct *);
+
+extern struct vx_info *locate_vx_info(int);
+extern struct vx_info *locate_or_create_vx_info(int);
+
+extern int get_xid_list(int, unsigned int *, int);
+extern int xid_is_hashed(xid_t);
+
+extern int vx_migrate_task(struct task_struct *, struct vx_info *);
+
+extern long vs_state_change(struct vx_info *, unsigned int);
+
+
+#endif /* __KERNEL__ */
+#else  /* _VX_CONTEXT_H */
+#warning duplicate inclusion
+#endif /* _VX_CONTEXT_H */
diff --git a/kernel/context_cmd.h b/kernel/context_cmd.h
new file mode 100644 (file)
index 0000000..f631095
--- /dev/null
@@ -0,0 +1,79 @@
+#ifndef _VX_CONTEXT_CMD_H
+#define _VX_CONTEXT_CMD_H
+
+
+/* vinfo commands */
+
+#define VCMD_task_xid          VC_CMD(VINFO, 1, 0)
+
+#ifdef __KERNEL__
+extern int vc_task_xid(uint32_t, void __user *);
+
+#endif /* __KERNEL__ */
+
+#define VCMD_vx_info           VC_CMD(VINFO, 5, 0)
+
+struct vcmd_vx_info_v0 {
+       uint32_t xid;
+       uint32_t initpid;
+       /* more to come */
+};
+
+#ifdef __KERNEL__
+extern int vc_vx_info(uint32_t, void __user *);
+
+#endif /* __KERNEL__ */
+
+
+/* context commands */
+
+#define VCMD_ctx_create_v0     VC_CMD(VPROC, 1, 0)
+#define VCMD_ctx_create                VC_CMD(VPROC, 1, 1)
+
+struct vcmd_ctx_create {
+       uint64_t flagword;
+};
+
+#define VCMD_ctx_migrate       VC_CMD(PROCMIG, 1, 0)
+
+#ifdef __KERNEL__
+extern int vc_ctx_create(uint32_t, void __user *);
+extern int vc_ctx_migrate(uint32_t, void __user *);
+
+#endif /* __KERNEL__ */
+
+
+/* flag commands */
+
+#define VCMD_get_cflags                VC_CMD(FLAGS, 1, 0)
+#define VCMD_set_cflags                VC_CMD(FLAGS, 2, 0)
+
+struct vcmd_ctx_flags_v0 {
+       uint64_t flagword;
+       uint64_t mask;
+};
+
+#ifdef __KERNEL__
+extern int vc_get_cflags(uint32_t, void __user *);
+extern int vc_set_cflags(uint32_t, void __user *);
+
+#endif /* __KERNEL__ */
+
+
+/* context caps commands */
+
+#define VCMD_get_ccaps         VC_CMD(FLAGS, 3, 0)
+#define VCMD_set_ccaps         VC_CMD(FLAGS, 4, 0)
+
+struct vcmd_ctx_caps_v0 {
+       uint64_t bcaps;
+       uint64_t ccaps;
+       uint64_t cmask;
+};
+
+#ifdef __KERNEL__
+extern int vc_get_ccaps(uint32_t, void __user *);
+extern int vc_set_ccaps(uint32_t, void __user *);
+
+#endif /* __KERNEL__ */
+#endif /* _VX_CONTEXT_CMD_H */
diff --git a/kernel/cvirt.h b/kernel/cvirt.h
new file mode 100644 (file)
index 0000000..eb13878
--- /dev/null
@@ -0,0 +1,25 @@
+#ifndef _VX_CVIRT_H
+#define _VX_CVIRT_H
+
+#ifdef __KERNEL__
+
+struct timespec;
+
+void vx_vsi_uptime(struct timespec *, struct timespec *);
+
+
+struct vx_info;
+
+void vx_update_load(struct vx_info *);
+
+
+int vx_uts_virt_handler(struct ctl_table *ctl, int write, xid_t xid,
+       void **datap, size_t *lenp);
+
+
+int vx_do_syslog(int, char __user *, int);
+
+#endif /* __KERNEL__ */
+#else  /* _VX_CVIRT_H */
+#warning duplicate inclusion
+#endif /* _VX_CVIRT_H */
diff --git a/kernel/cvirt_cmd.h b/kernel/cvirt_cmd.h
new file mode 100644 (file)
index 0000000..3260b9f
--- /dev/null
@@ -0,0 +1,34 @@
+#ifndef _VX_CVIRT_CMD_H
+#define _VX_CVIRT_CMD_H
+
+/* virtual host info name commands */
+
+#define VCMD_set_vhi_name      VC_CMD(VHOST, 1, 0)
+#define VCMD_get_vhi_name      VC_CMD(VHOST, 2, 0)
+
+struct vcmd_vhi_name_v0 {
+       uint32_t field;
+       char name[65];
+};
+
+
+enum vhi_name_field {
+       VHIN_CONTEXT=0,
+       VHIN_SYSNAME,
+       VHIN_NODENAME,
+       VHIN_RELEASE,
+       VHIN_VERSION,
+       VHIN_MACHINE,
+       VHIN_DOMAINNAME,
+};
+
+
+#ifdef __KERNEL__
+
+#include <linux/compiler.h>
+
+extern int vc_set_vhi_name(uint32_t, void __user *);
+extern int vc_get_vhi_name(uint32_t, void __user *);
+
+#endif /* __KERNEL__ */
+#endif /* _VX_CVIRT_CMD_H */
diff --git a/kernel/cvirt_def.h b/kernel/cvirt_def.h
new file mode 100644 (file)
index 0000000..c352890
--- /dev/null
@@ -0,0 +1,77 @@
+#ifndef _VX_CVIRT_DEF_H
+#define _VX_CVIRT_DEF_H
+
+#include <linux/jiffies.h>
+#include <linux/utsname.h>
+#include <linux/spinlock.h>
+#include <linux/wait.h>
+#include <linux/time.h>
+#include <asm/atomic.h>
+
+
+struct _vx_usage_stat {
+       uint64_t user;
+       uint64_t nice;
+       uint64_t system;
+       uint64_t softirq;
+       uint64_t irq;
+       uint64_t idle;
+       uint64_t iowait;
+};
+
+struct _vx_syslog {
+       wait_queue_head_t log_wait;
+       spinlock_t logbuf_lock;         /* lock for the log buffer */
+
+       unsigned long log_start;        /* next char to be read by syslog() */
+       unsigned long con_start;        /* next char to be sent to consoles */
+       unsigned long log_end;          /* most-recently-written-char + 1 */
+       unsigned long logged_chars;     /* #chars since last read+clear operation */
+
+       char log_buf[1024];
+};
+
+
+/* context sub struct */
+
+struct _vx_cvirt {
+       int max_threads;                /* maximum allowed threads */
+       atomic_t nr_threads;            /* number of current threads */
+       atomic_t nr_running;            /* number of running threads */
+       atomic_t nr_uninterruptible;    /* number of uninterruptible threads */
+
+       atomic_t nr_onhold;             /* processes on hold */
+       uint32_t onhold_last;           /* jiffies when put on hold */
+
+       struct timespec bias_idle;
+       struct timespec bias_uptime;    /* context creation point */
+       uint64_t bias_clock;            /* offset in clock_t */
+
+       struct new_utsname utsname;
+
+       spinlock_t load_lock;           /* lock for the load averages */
+       atomic_t load_updates;          /* nr of load updates done so far */
+       uint32_t load_last;             /* last time load was cacled */
+       uint32_t load[3];               /* load averages 1,5,15 */
+
+       atomic_t total_forks;           /* number of forks so far */
+
+       struct _vx_usage_stat cpustat[NR_CPUS];
+
+       struct _vx_syslog syslog;
+};
+
+struct _vx_sock_acc {
+       atomic_t count;
+       atomic_t total;
+};
+
+/* context sub struct */
+
+struct _vx_cacct {
+       unsigned long total_forks;
+
+       struct _vx_sock_acc sock[5][3];
+};
+
+#endif /* _VX_CVIRT_DEF_H */
diff --git a/kernel/debug.h b/kernel/debug.h
new file mode 100644 (file)
index 0000000..1e58c4e
--- /dev/null
@@ -0,0 +1,269 @@
+#ifndef _VX_DEBUG_H
+#define _VX_DEBUG_H
+
+#ifndef        CONFIG_VSERVER
+#warning config options missing
+#endif
+
+#define VXD_CBIT(n,m)  (vx_debug_ ## n & (1 << (m)))
+#define VXD_CMIN(n,m)  (vx_debug_ ## n > (m))
+#define VXD_MASK(n,m)  (vx_debug_ ## n & (m))
+
+#define VXD_QPOS(v,p)  (((uint32_t)(v) >> ((p)*8)) & 0xFF)
+#define VXD_QUAD(v)    VXD_QPOS(v,0), VXD_QPOS(v,1),           \
+                       VXD_QPOS(v,2), VXD_QPOS(v,3)
+
+#define __FUNC__       __func__
+
+
+#ifdef CONFIG_VSERVER_DEBUG
+
+extern unsigned int vx_debug_switch;
+extern unsigned int vx_debug_xid;
+extern unsigned int vx_debug_nid;
+extern unsigned int vx_debug_net;
+extern unsigned int vx_debug_limit;
+extern unsigned int vx_debug_dlim;
+extern unsigned int vx_debug_cvirt;
+
+
+#define VX_LOGLEVEL    "vxD: "
+#define VX_WARNLEVEL   KERN_WARNING "vxW: "
+
+#define vxdprintk(c,f,x...)                                    \
+       do {                                                    \
+               if (c)                                          \
+                       printk(VX_LOGLEVEL f "\n" , ##x);       \
+       } while (0)
+
+#define vxlprintk(c,f,x...)                                    \
+       do {                                                    \
+               if (c)                                          \
+                       printk(VX_LOGLEVEL f " @%s:%d\n", x);   \
+       } while (0)
+
+#define vxfprintk(c,f,x...)                                    \
+       do {                                                    \
+               if (c)                                          \
+                       printk(VX_LOGLEVEL f " %s@%s:%d\n", x); \
+       } while (0)
+
+
+#define vxwprintk(c,f,x...)                                    \
+       do {                                                    \
+               if (c)                                          \
+                       printk(VX_WARNLEVEL f "\n" , ##x);      \
+       } while (0)
+
+
+#define vxd_path(d,m)                                          \
+       ({ static char _buffer[PATH_MAX];                       \
+          d_path((d), (m), _buffer, sizeof(_buffer)); })
+
+#else  /* CONFIG_VSERVER_DEBUG */
+
+#define vx_debug_switch 0
+#define vx_debug_xid   0
+#define vx_debug_nid   0
+#define vx_debug_net   0
+#define vx_debug_limit 0
+#define vx_debug_dlim  0
+#define vx_debug_cvirt 0
+
+#define vxdprintk(x...) do { } while (0)
+#define vxlprintk(x...) do { } while (0)
+#define vxfprintk(x...) do { } while (0)
+#define vxwprintk(x...) do { } while (0)
+
+#define vxd_path       "<none>"
+
+#endif /* CONFIG_VSERVER_DEBUG */
+
+
+/* history stuff */
+
+#ifdef CONFIG_VSERVER_HISTORY
+
+
+extern unsigned volatile int vxh_active;
+
+struct _vxhe_vxi {
+       struct vx_info *ptr;
+       unsigned xid;
+       unsigned usecnt;
+       unsigned tasks;
+};
+
+struct _vxhe_set_clr {
+       void *data;
+};
+
+struct _vxhe_loc_lookup {
+       unsigned arg;
+};
+
+enum {
+       VXH_UNUSED=0,
+       VXH_THROW_OOPS=1,
+
+       VXH_GET_VX_INFO,
+       VXH_PUT_VX_INFO,
+       VXH_INIT_VX_INFO,
+       VXH_SET_VX_INFO,
+       VXH_CLR_VX_INFO,
+       VXH_CLAIM_VX_INFO,
+       VXH_RELEASE_VX_INFO,
+       VXH_ALLOC_VX_INFO,
+       VXH_DEALLOC_VX_INFO,
+       VXH_HASH_VX_INFO,
+       VXH_UNHASH_VX_INFO,
+       VXH_LOC_VX_INFO,
+       VXH_LOOKUP_VX_INFO,
+       VXH_CREATE_VX_INFO,
+};
+
+struct _vx_hist_entry {
+       void *loc;
+       unsigned short seq;
+       unsigned short type;
+       struct _vxhe_vxi vxi;
+       union {
+               struct _vxhe_set_clr sc;
+               struct _vxhe_loc_lookup ll;
+       };
+};
+
+struct _vx_hist_entry *vxh_advance(void *loc);
+
+#define        VXH_HERE()              \
+       ({ __label__ here;      \
+               here:;          \
+               &&here; })
+
+
+
+static inline void __vxh_copy_vxi(struct _vx_hist_entry *entry, struct vx_info *vxi)
+{
+       entry->vxi.ptr = vxi;
+       if (vxi) {
+               entry->vxi.usecnt = atomic_read(&vxi->vx_usecnt);
+               entry->vxi.tasks = atomic_read(&vxi->vx_tasks);
+               entry->vxi.xid = vxi->vx_id;
+       }
+}
+
+
+#define __VXH_BODY(__type, __data)             \
+       struct _vx_hist_entry *entry;           \
+                                               \
+       preempt_disable();                      \
+       entry = vxh_advance(VXH_HERE());        \
+       __data;                                 \
+       entry->type = __type;                   \
+       preempt_enable();
+
+
+       /* pass vxi only */
+#define __VXH_SIMPLE                           \
+       __vxh_copy_vxi(entry, vxi)
+
+#define VXH_SIMPLE(__name, __type)             \
+static inline void __name(struct vx_info *vxi) \
+{                                              \
+       __VXH_BODY(__type, __VXH_SIMPLE)        \
+}
+
+       /* pass vxi and data (void *) */
+#define __VXH_DATA                             \
+       __vxh_copy_vxi(entry, vxi);             \
+       entry->sc.data = data
+
+#define VXH_DATA(__name, __type)               \
+static inline                                  \
+void __name(struct vx_info *vxi, void *data)   \
+{                                              \
+       __VXH_BODY(__type, __VXH_DATA)          \
+}
+
+       /* pass vxi and arg (long) */
+#define __VXH_LARG                             \
+       __vxh_copy_vxi(entry, vxi);             \
+       entry->ll.arg = arg
+
+#define VXH_LARG(__name, __type)               \
+static inline                                  \
+void __name(struct vx_info *vxi, long arg)     \
+{                                              \
+       __VXH_BODY(__type, __VXH_LARG)          \
+}
+
+
+static inline void vxh_throw_oops(void)
+{
+       __VXH_BODY(VXH_THROW_OOPS, {});
+       /* prevent further acquisition */
+       vxh_active = 0;
+}
+
+VXH_SIMPLE(vxh_get_vx_info,    VXH_GET_VX_INFO);
+VXH_SIMPLE(vxh_put_vx_info,    VXH_PUT_VX_INFO);
+
+VXH_DATA(vxh_init_vx_info,     VXH_INIT_VX_INFO);
+VXH_DATA(vxh_set_vx_info,      VXH_SET_VX_INFO);
+VXH_DATA(vxh_clr_vx_info,      VXH_CLR_VX_INFO);
+
+VXH_DATA(vxh_claim_vx_info,    VXH_CLAIM_VX_INFO);
+VXH_DATA(vxh_release_vx_info,  VXH_RELEASE_VX_INFO);
+
+VXH_SIMPLE(vxh_alloc_vx_info,  VXH_ALLOC_VX_INFO);
+VXH_SIMPLE(vxh_dealloc_vx_info, VXH_DEALLOC_VX_INFO);
+
+VXH_SIMPLE(vxh_hash_vx_info,   VXH_HASH_VX_INFO);
+VXH_SIMPLE(vxh_unhash_vx_info, VXH_UNHASH_VX_INFO);
+
+VXH_LARG(vxh_loc_vx_info,      VXH_LOC_VX_INFO);
+VXH_LARG(vxh_lookup_vx_info,   VXH_LOOKUP_VX_INFO);
+VXH_LARG(vxh_create_vx_info,   VXH_CREATE_VX_INFO);
+
+extern void vxh_dump_history(void);
+
+
+#else  /* CONFIG_VSERVER_HISTORY */
+
+
+#define vxh_throw_oops()               do { } while (0)
+
+#define vxh_get_vx_info(v)             do { } while (0)
+#define vxh_put_vx_info(v)             do { } while (0)
+
+#define vxh_init_vx_info(v,d)          do { } while (0)
+#define vxh_set_vx_info(v,d)           do { } while (0)
+#define vxh_clr_vx_info(v,d)           do { } while (0)
+
+#define vxh_claim_vx_info(v,d)         do { } while (0)
+#define vxh_release_vx_info(v,d)       do { } while (0)
+
+#define vxh_alloc_vx_info(v)           do { } while (0)
+#define vxh_dealloc_vx_info(v)         do { } while (0)
+
+#define vxh_hash_vx_info(v)            do { } while (0)
+#define vxh_unhash_vx_info(v)          do { } while (0)
+
+#define vxh_loc_vx_info(a,v)           do { } while (0)
+#define vxh_lookup_vx_info(a,v)                do { } while (0)
+#define vxh_create_vx_info(a,v)                do { } while (0)
+
+#define vxh_dump_history()             do { } while (0)
+
+
+#endif /* CONFIG_VSERVER_HISTORY */
+
+
+#ifdef CONFIG_VSERVER_DEBUG
+#define vxd_assert_lock(l)     assert_spin_locked(l)
+#else
+#define        vxd_assert_lock(l)      do { } while (0)
+#endif
+
+
+#endif /* _VX_DEBUG_H */
diff --git a/kernel/debug_cmd.h b/kernel/debug_cmd.h
new file mode 100644 (file)
index 0000000..c0cbd08
--- /dev/null
@@ -0,0 +1,14 @@
+#ifndef _VX_DEBUG_CMD_H
+#define _VX_DEBUG_CMD_H
+
+
+/* debug commands */
+
+#define VCMD_dump_history      VC_CMD(DEBUG, 1, 0)
+
+#ifdef __KERNEL__
+
+extern int vc_dump_history(uint32_t);
+
+#endif /* __KERNEL__ */
+#endif /* _VX_DEBUG_CMD_H */
diff --git a/kernel/dlimit.h b/kernel/dlimit.h
new file mode 100644 (file)
index 0000000..99c2240
--- /dev/null
@@ -0,0 +1,53 @@
+#ifndef _VX_DLIMIT_H
+#define _VX_DLIMIT_H
+
+#include "switch.h"
+
+#define CDLIM_UNSET            (0ULL)
+#define CDLIM_INFINITY         (~0ULL)
+#define CDLIM_KEEP             (~1ULL)
+
+
+#ifdef __KERNEL__
+
+#include <linux/spinlock.h>
+
+struct super_block;
+
+struct dl_info {
+       struct hlist_node dl_hlist;             /* linked list of contexts */
+       struct rcu_head dl_rcu;                 /* the rcu head */
+       xid_t dl_xid;                           /* context id */
+       atomic_t dl_usecnt;                     /* usage count */
+       atomic_t dl_refcnt;                     /* reference count */
+
+       struct super_block *dl_sb;              /* associated superblock */
+
+       spinlock_t dl_lock;                     /* protect the values */
+
+       uint64_t dl_space_used;                 /* used space in bytes */
+       uint64_t dl_space_total;                /* maximum space in bytes */
+       uint32_t dl_inodes_used;                /* used inodes */
+       uint32_t dl_inodes_total;               /* maximum inodes */
+
+       unsigned int dl_nrlmult;                /* non root limit mult */
+};
+
+struct rcu_head;
+
+extern void rcu_free_dl_info(struct rcu_head *);
+extern void unhash_dl_info(struct dl_info *);
+
+extern struct dl_info *locate_dl_info(struct super_block *, xid_t);
+
+
+struct kstatfs;
+
+extern void vx_vsi_statfs(struct super_block *, struct kstatfs *);
+
+typedef uint64_t dlsize_t;
+
+#endif /* __KERNEL__ */
+#else  /* _VX_DLIMIT_H */
+#warning duplicate inclusion
+#endif /* _VX_DLIMIT_H */
diff --git a/kernel/dlimit_cmd.h b/kernel/dlimit_cmd.h
new file mode 100644 (file)
index 0000000..b91a946
--- /dev/null
@@ -0,0 +1,68 @@
+#ifndef _VX_DLIMIT_CMD_H
+#define _VX_DLIMIT_CMD_H
+
+/*  dlimit vserver commands */
+
+#define VCMD_add_dlimit                VC_CMD(DLIMIT, 1, 0)
+#define VCMD_rem_dlimit                VC_CMD(DLIMIT, 2, 0)
+
+#define VCMD_set_dlimit                VC_CMD(DLIMIT, 5, 0)
+#define VCMD_get_dlimit                VC_CMD(DLIMIT, 6, 0)
+
+struct vcmd_ctx_dlimit_base_v0 {
+       const char __user *name;
+       uint32_t flags;
+};
+
+struct vcmd_ctx_dlimit_v0 {
+       const char __user *name;
+       uint32_t space_used;                    /* used space in kbytes */
+       uint32_t space_total;                   /* maximum space in kbytes */
+       uint32_t inodes_used;                   /* used inodes */
+       uint32_t inodes_total;                  /* maximum inodes */
+       uint32_t reserved;                      /* reserved for root in % */
+       uint32_t flags;
+};
+
+
+#ifdef __KERNEL__
+
+#ifdef CONFIG_COMPAT
+
+struct vcmd_ctx_dlimit_base_v0_x32 {
+       compat_uptr_t name_ptr;
+       uint32_t flags;
+};
+
+struct vcmd_ctx_dlimit_v0_x32 {
+       compat_uptr_t name_ptr;
+       uint32_t space_used;                    /* used space in kbytes */
+       uint32_t space_total;                   /* maximum space in kbytes */
+       uint32_t inodes_used;                   /* used inodes */
+       uint32_t inodes_total;                  /* maximum inodes */
+       uint32_t reserved;                      /* reserved for root in % */
+       uint32_t flags;
+};
+
+#endif /* CONFIG_COMPAT */
+
+#include <linux/compiler.h>
+
+extern int vc_add_dlimit(uint32_t, void __user *);
+extern int vc_rem_dlimit(uint32_t, void __user *);
+
+extern int vc_set_dlimit(uint32_t, void __user *);
+extern int vc_get_dlimit(uint32_t, void __user *);
+
+#ifdef CONFIG_COMPAT
+
+extern int vc_add_dlimit_x32(uint32_t, void __user *);
+extern int vc_rem_dlimit_x32(uint32_t, void __user *);
+
+extern int vc_set_dlimit_x32(uint32_t, void __user *);
+extern int vc_get_dlimit_x32(uint32_t, void __user *);
+
+#endif /* CONFIG_COMPAT */
+
+#endif /* __KERNEL__ */
+#endif /* _VX_DLIMIT_CMD_H */
diff --git a/kernel/inode.h b/kernel/inode.h
new file mode 100644 (file)
index 0000000..89212c2
--- /dev/null
@@ -0,0 +1,41 @@
+#ifndef _VX_INODE_H
+#define _VX_INODE_H
+
+
+#define IATTR_XID      0x01000000
+
+#define IATTR_ADMIN    0x00000001
+#define IATTR_WATCH    0x00000002
+#define IATTR_HIDE     0x00000004
+#define IATTR_FLAGS    0x00000007
+
+#define IATTR_BARRIER  0x00010000
+#define IATTR_IUNLINK  0x00020000
+#define IATTR_IMMUTABLE 0x00040000
+
+#ifdef __KERNEL__
+
+#ifndef        CONFIG_VSERVER
+#warning config options missing
+#endif
+
+#ifdef CONFIG_VSERVER_PROC_SECURE
+#define IATTR_PROC_DEFAULT     ( IATTR_ADMIN | IATTR_HIDE )
+#define IATTR_PROC_SYMLINK     ( IATTR_ADMIN )
+#else
+#define IATTR_PROC_DEFAULT     ( IATTR_ADMIN )
+#define IATTR_PROC_SYMLINK     ( IATTR_ADMIN )
+#endif
+
+#define vx_hide_check(c,m)     (((m) & IATTR_HIDE) ? vx_check(c,m) : 1)
+
+#endif /* __KERNEL__ */
+
+/* inode ioctls */
+
+#define FIOC_GETXFLG   _IOR('x', 5, long)
+#define FIOC_SETXFLG   _IOW('x', 6, long)
+
+#else  /* _VX_INODE_H */
+#warning duplicate inclusion
+#endif /* _VX_INODE_H */
diff --git a/kernel/inode_cmd.h b/kernel/inode_cmd.h
new file mode 100644 (file)
index 0000000..f14c899
--- /dev/null
@@ -0,0 +1,57 @@
+#ifndef _VX_INODE_CMD_H
+#define _VX_INODE_CMD_H
+
+/*  inode vserver commands */
+
+#define VCMD_get_iattr_v0      VC_CMD(INODE, 1, 0)
+#define VCMD_set_iattr_v0      VC_CMD(INODE, 2, 0)
+
+#define VCMD_get_iattr         VC_CMD(INODE, 1, 1)
+#define VCMD_set_iattr         VC_CMD(INODE, 2, 1)
+
+struct vcmd_ctx_iattr_v0 {
+       /* device handle in id */
+       uint64_t ino;
+       uint32_t xid;
+       uint32_t flags;
+       uint32_t mask;
+};
+
+struct vcmd_ctx_iattr_v1 {
+       const char __user *name;
+       uint32_t xid;
+       uint32_t flags;
+       uint32_t mask;
+};
+
+
+#ifdef __KERNEL__
+
+#ifdef CONFIG_COMPAT
+
+struct vcmd_ctx_iattr_v1_x32 {
+       compat_uptr_t name_ptr;
+       uint32_t xid;
+       uint32_t flags;
+       uint32_t mask;
+};
+
+#endif /* CONFIG_COMPAT */
+
+#include <linux/compiler.h>
+
+extern int vc_get_iattr_v0(uint32_t, void __user *);
+extern int vc_set_iattr_v0(uint32_t, void __user *);
+
+extern int vc_get_iattr(uint32_t, void __user *);
+extern int vc_set_iattr(uint32_t, void __user *);
+
+#ifdef CONFIG_COMPAT
+
+extern int vc_get_iattr_x32(uint32_t, void __user *);
+extern int vc_set_iattr_x32(uint32_t, void __user *);
+
+#endif /* CONFIG_COMPAT */
+
+#endif /* __KERNEL__ */
+#endif /* _VX_INODE_CMD_H */
diff --git a/kernel/legacy.h b/kernel/legacy.h
new file mode 100644 (file)
index 0000000..f058983
--- /dev/null
@@ -0,0 +1,48 @@
+#ifndef _VX_LEGACY_H
+#define _VX_LEGACY_H
+
+#include "switch.h"
+
+/*  compatibiliy vserver commands */
+
+#define VCMD_new_s_context     VC_CMD(COMPAT, 1, 1)
+#define VCMD_set_ipv4root      VC_CMD(COMPAT, 2, 3)
+
+#define VCMD_create_context    VC_CMD(VSETUP, 1, 0)
+
+/*  compatibiliy vserver arguments */
+
+struct vcmd_new_s_context_v1 {
+       uint32_t remove_cap;
+       uint32_t flags;
+};
+
+struct vcmd_set_ipv4root_v3 {
+       /* number of pairs in id */
+       uint32_t broadcast;
+       struct {
+               uint32_t ip;
+               uint32_t mask;
+       } nx_mask_pair[NB_IPV4ROOT];
+};
+
+
+#define VX_INFO_LOCK           1       /* Can't request a new vx_id */
+#define VX_INFO_NPROC          4       /* Limit number of processes in a context */
+#define VX_INFO_PRIVATE                8       /* Noone can join this security context */
+#define VX_INFO_INIT           16      /* This process wants to become the */
+                                       /* logical process 1 of the security */
+                                       /* context */
+#define VX_INFO_HIDEINFO       32      /* Hide some information in /proc */
+#define VX_INFO_ULIMIT         64      /* Use ulimit of the current process */
+                                       /* to become the global limits */
+                                       /* of the context */
+#define VX_INFO_NAMESPACE      128     /* save private namespace */
+
+
+#ifdef __KERNEL__
+extern int vc_new_s_context(uint32_t, void __user *);
+extern int vc_set_ipv4root(uint32_t, void __user *);
+
+#endif /* __KERNEL__ */
+#endif /* _VX_LEGACY_H */
diff --git a/kernel/limit.h b/kernel/limit.h
new file mode 100644 (file)
index 0000000..449a4fc
--- /dev/null
@@ -0,0 +1,23 @@
+#ifndef _VX_LIMIT_H
+#define _VX_LIMIT_H
+
+#ifdef __KERNEL__
+
+struct sysinfo;
+
+void vx_vsi_meminfo(struct sysinfo *);
+void vx_vsi_swapinfo(struct sysinfo *);
+
+#define VXD_RLIMIT(r,l)                (VXD_CBIT(limit, (l)) && ((r) == (l)))
+
+#define NUM_LIMITS     24
+
+#define VLIMIT_NSOCK   16
+#define VLIMIT_OPENFD  17
+#define VLIMIT_ANON    18
+#define VLIMIT_SHMEM   19
+
+extern const char *vlimit_name[NUM_LIMITS];
+
+#endif /* __KERNEL__ */
+#endif /* _VX_LIMIT_H */
diff --git a/kernel/limit_cmd.h b/kernel/limit_cmd.h
new file mode 100644 (file)
index 0000000..a994d02
--- /dev/null
@@ -0,0 +1,36 @@
+#ifndef _VX_LIMIT_CMD_H
+#define _VX_LIMIT_CMD_H
+
+/*  rlimit vserver commands */
+
+#define VCMD_get_rlimit                VC_CMD(RLIMIT, 1, 0)
+#define VCMD_set_rlimit                VC_CMD(RLIMIT, 2, 0)
+#define VCMD_get_rlimit_mask   VC_CMD(RLIMIT, 3, 0)
+
+struct vcmd_ctx_rlimit_v0 {
+       uint32_t id;
+       uint64_t minimum;
+       uint64_t softlimit;
+       uint64_t maximum;
+};
+
+struct vcmd_ctx_rlimit_mask_v0 {
+       uint32_t minimum;
+       uint32_t softlimit;
+       uint32_t maximum;
+};
+
+#define CRLIM_UNSET            (0ULL)
+#define CRLIM_INFINITY         (~0ULL)
+#define CRLIM_KEEP             (~1ULL)
+
+#ifdef __KERNEL__
+
+#include <linux/compiler.h>
+
+extern int vc_get_rlimit(uint32_t, void __user *);
+extern int vc_set_rlimit(uint32_t, void __user *);
+extern int vc_get_rlimit_mask(uint32_t, void __user *);
+
+#endif /* __KERNEL__ */
+#endif /* _VX_LIMIT_CMD_H */
diff --git a/kernel/limit_def.h b/kernel/limit_def.h
new file mode 100644 (file)
index 0000000..bab1def
--- /dev/null
@@ -0,0 +1,21 @@
+#ifndef _VX_LIMIT_DEF_H
+#define _VX_LIMIT_DEF_H
+
+#include <asm/atomic.h>
+#include <asm/resource.h>
+
+#include "limit.h"
+
+/* context sub struct */
+
+struct _vx_limit {
+       atomic_t ticks;
+
+       unsigned long rlim[NUM_LIMITS];         /* Context limit */
+       unsigned long rmax[NUM_LIMITS];         /* Context maximum */
+       atomic_t rcur[NUM_LIMITS];              /* Current value */
+       atomic_t lhit[NUM_LIMITS];              /* Limit hits */
+};
+
+
+#endif /* _VX_LIMIT_DEF_H */
diff --git a/kernel/namespace.h b/kernel/namespace.h
new file mode 100644 (file)
index 0000000..1a6bb84
--- /dev/null
@@ -0,0 +1,14 @@
+#ifndef _VX_NAMESPACE_H
+#define _VX_NAMESPACE_H
+
+#include <linux/types.h>
+
+struct vx_info;
+struct namespace;
+struct fs_struct;
+
+extern int vx_set_namespace(struct vx_info *, struct namespace *, struct fs_struct *);
+
+#else  /* _VX_NAMESPACE_H */
+#warning duplicate inclusion
+#endif /* _VX_NAMESPACE_H */
diff --git a/kernel/namespace_cmd.h b/kernel/namespace_cmd.h
new file mode 100644 (file)
index 0000000..7533100
--- /dev/null
@@ -0,0 +1,16 @@
+#ifndef _VX_NAMESPACE_CMD_H
+#define _VX_NAMESPACE_CMD_H
+
+#define VCMD_enter_namespace   VC_CMD(PROCALT, 1, 0)
+#define VCMD_cleanup_namespace VC_CMD(PROCALT, 2, 0)
+#define VCMD_set_namespace     VC_CMD(PROCALT, 3, 0)
+
+
+#ifdef __KERNEL__
+
+extern int vc_enter_namespace(uint32_t, void __user *);
+extern int vc_cleanup_namespace(uint32_t, void __user *);
+extern int vc_set_namespace(uint32_t, void __user *);
+
+#endif /* __KERNEL__ */
+#endif /* _VX_NAMESPACE_CMD_H */
diff --git a/kernel/network.h b/kernel/network.h
new file mode 100644 (file)
index 0000000..29c5bd2
--- /dev/null
@@ -0,0 +1,96 @@
+#ifndef _VX_NETWORK_H
+#define _VX_NETWORK_H
+
+#include <linux/types.h>
+
+
+#define MAX_N_CONTEXT  65535   /* Arbitrary limit */
+
+#define NX_DYNAMIC_ID  ((uint32_t)-1)          /* id for dynamic context */
+
+#define NB_IPV4ROOT    16
+
+
+/* network flags */
+
+#define NXF_STATE_SETUP                (1ULL<<32)
+
+#define NXF_STATE_HELPER       (1ULL<<36)
+
+#define NXF_ONE_TIME           (0x0001ULL<<32)
+
+#define NXF_INIT_SET           (0)
+
+
+/* address types */
+
+#define        NXA_TYPE_IPV4           1
+#define        NXA_TYPE_IPV6           2
+
+#define        NXA_MOD_BCAST           (1<<8)
+
+#define        NXA_TYPE_ANY            (~0)
+
+
+#ifdef __KERNEL__
+
+#include <linux/list.h>
+#include <linux/spinlock.h>
+#include <linux/rcupdate.h>
+#include <asm/atomic.h>
+
+
+struct nx_info {
+       struct hlist_node nx_hlist;     /* linked list of nxinfos */
+       nid_t nx_id;                    /* vnet id */
+       atomic_t nx_usecnt;             /* usage count */
+       atomic_t nx_tasks;              /* tasks count */
+       int nx_state;                   /* context state */
+
+       uint64_t nx_flags;              /* network flag word */
+       uint64_t nx_ncaps;              /* network capabilities */
+
+       int nbipv4;
+       __u32 ipv4[NB_IPV4ROOT];        /* Process can only bind to these IPs */
+                                       /* The first one is used to connect */
+                                       /* and for bind any service */
+                                       /* The other must be used explicity */
+       __u32 mask[NB_IPV4ROOT];        /* Netmask for each ipv4 */
+                                       /* Used to select the proper source */
+                                       /* address for sockets */
+       __u32 v4_bcast;                 /* Broadcast address to receive UDP  */
+
+       char nx_name[65];               /* network context name */
+};
+
+
+/* status flags */
+
+#define NXS_HASHED      0x0001
+#define NXS_SHUTDOWN    0x0100
+#define NXS_RELEASED    0x8000
+
+extern struct nx_info *locate_nx_info(int);
+extern struct nx_info *locate_or_create_nx_info(int);
+
+extern int get_nid_list(int, unsigned int *, int);
+extern int nid_is_hashed(nid_t);
+
+extern int nx_migrate_task(struct task_struct *, struct nx_info *);
+
+extern long vs_net_change(struct nx_info *, unsigned int);
+
+struct in_ifaddr;
+struct net_device;
+
+int ifa_in_nx_info(struct in_ifaddr *, struct nx_info *);
+int dev_in_nx_info(struct net_device *, struct nx_info *);
+
+struct sock;
+
+int nx_addr_conflict(struct nx_info *, uint32_t, struct sock *);
+
+#endif /* __KERNEL__ */
+#else  /* _VX_NETWORK_H */
+#warning duplicate inclusion
+#endif /* _VX_NETWORK_H */
diff --git a/kernel/network_cmd.h b/kernel/network_cmd.h
new file mode 100644 (file)
index 0000000..d9802fe
--- /dev/null
@@ -0,0 +1,89 @@
+#ifndef _VX_NETWORK_CMD_H
+#define _VX_NETWORK_CMD_H
+
+
+/* vinfo commands */
+
+#define VCMD_task_nid          VC_CMD(VINFO, 2, 0)
+
+#ifdef __KERNEL__
+extern int vc_task_nid(uint32_t, void __user *);
+
+#endif /* __KERNEL__ */
+
+#define VCMD_nx_info           VC_CMD(VINFO, 6, 0)
+
+struct vcmd_nx_info_v0 {
+       uint32_t nid;
+       /* more to come */
+};
+
+#ifdef __KERNEL__
+extern int vc_nx_info(uint32_t, void __user *);
+
+#endif /* __KERNEL__ */
+
+#define VCMD_net_create_v0     VC_CMD(VNET, 1, 0)
+#define VCMD_net_create                VC_CMD(VNET, 1, 1)
+
+struct  vcmd_net_create {
+       uint64_t flagword;
+};
+
+#define VCMD_net_migrate       VC_CMD(NETMIG, 1, 0)
+
+#define VCMD_net_add           VC_CMD(NETALT, 1, 0)
+#define VCMD_net_remove                VC_CMD(NETALT, 2, 0)
+
+struct vcmd_net_addr_v0 {
+       uint16_t type;
+       uint16_t count;
+       uint32_t ip[4];
+       uint32_t mask[4];
+       /* more to come */
+};
+
+
+#ifdef __KERNEL__
+extern int vc_net_create(uint32_t, void __user *);
+extern int vc_net_migrate(uint32_t, void __user *);
+
+extern int vc_net_add(uint32_t, void __user *);
+extern int vc_net_remove(uint32_t, void __user *);
+
+#endif /* __KERNEL__ */
+
+
+/* flag commands */
+
+#define VCMD_get_nflags                VC_CMD(FLAGS, 5, 0)
+#define VCMD_set_nflags                VC_CMD(FLAGS, 6, 0)
+
+struct vcmd_net_flags_v0 {
+       uint64_t flagword;
+       uint64_t mask;
+};
+
+#ifdef __KERNEL__
+extern int vc_get_nflags(uint32_t, void __user *);
+extern int vc_set_nflags(uint32_t, void __user *);
+
+#endif /* __KERNEL__ */
+
+
+/* network caps commands */
+
+#define VCMD_get_ncaps         VC_CMD(FLAGS, 7, 0)
+#define VCMD_set_ncaps         VC_CMD(FLAGS, 8, 0)
+
+struct vcmd_net_caps_v0 {
+       uint64_t ncaps;
+       uint64_t cmask;
+};
+
+#ifdef __KERNEL__
+extern int vc_get_ncaps(uint32_t, void __user *);
+extern int vc_set_ncaps(uint32_t, void __user *);
+
+#endif /* __KERNEL__ */
+#endif /* _VX_CONTEXT_CMD_H */
diff --git a/kernel/sched.h b/kernel/sched.h
new file mode 100644 (file)
index 0000000..60569ab
--- /dev/null
@@ -0,0 +1,25 @@
+#ifndef _VX_SCHED_H
+#define _VX_SCHED_H
+
+#ifdef __KERNEL__
+
+struct timespec;
+
+void vx_vsi_uptime(struct timespec *, struct timespec *);
+
+
+struct vx_info;
+
+void vx_update_load(struct vx_info *);
+
+
+struct task_struct;
+
+int vx_effective_vavavoom(struct vx_info *, int);
+
+int vx_tokens_recalc(struct vx_info *);
+
+#endif /* __KERNEL__ */
+#else  /* _VX_SCHED_H */
+#warning duplicate inclusion
+#endif /* _VX_SCHED_H */
diff --git a/kernel/sched_cmd.h b/kernel/sched_cmd.h
new file mode 100644 (file)
index 0000000..2a6f55b
--- /dev/null
@@ -0,0 +1,47 @@
+#ifndef _VX_SCHED_CMD_H
+#define _VX_SCHED_CMD_H
+
+/*  sched vserver commands */
+
+#define VCMD_set_sched_v2      VC_CMD(SCHED, 1, 2)
+#define VCMD_set_sched         VC_CMD(SCHED, 1, 3)
+
+struct vcmd_set_sched_v2 {
+       int32_t fill_rate;
+       int32_t interval;
+       int32_t tokens;
+       int32_t tokens_min;
+       int32_t tokens_max;
+       uint64_t cpu_mask;
+};
+
+struct vcmd_set_sched_v3 {
+       uint32_t set_mask;
+       int32_t fill_rate;
+       int32_t interval;
+       int32_t tokens;
+       int32_t tokens_min;
+       int32_t tokens_max;
+       int32_t priority_bias;
+};
+
+
+#define VXSM_FILL_RATE         0x0001
+#define VXSM_INTERVAL          0x0002
+#define VXSM_TOKENS            0x0010
+#define VXSM_TOKENS_MIN                0x0020
+#define VXSM_TOKENS_MAX                0x0040
+#define VXSM_PRIO_BIAS         0x0100
+
+#define SCHED_KEEP             (-2)
+
+#ifdef __KERNEL__
+
+#include <linux/compiler.h>
+
+extern int vc_set_sched_v1(uint32_t, void __user *);
+extern int vc_set_sched_v2(uint32_t, void __user *);
+extern int vc_set_sched(uint32_t, void __user *);
+
+#endif /* __KERNEL__ */
+#endif /* _VX_SCHED_CMD_H */
diff --git a/kernel/sched_def.h b/kernel/sched_def.h
new file mode 100644 (file)
index 0000000..3a57761
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _VX_SCHED_DEF_H
+#define _VX_SCHED_DEF_H
+
+#include <linux/spinlock.h>
+#include <linux/jiffies.h>
+#include <linux/cpumask.h>
+#include <asm/atomic.h>
+#include <asm/param.h>
+
+
+struct _vx_ticks {
+       uint64_t user_ticks;            /* token tick events */
+       uint64_t sys_ticks;             /* token tick events */
+       uint64_t hold_ticks;            /* token ticks paused */
+       uint64_t unused[5];             /* cacheline ? */
+};
+
+/* context sub struct */
+
+struct _vx_sched {
+       atomic_t tokens;                /* number of CPU tokens */
+       spinlock_t tokens_lock;         /* lock for token bucket */
+
+       int fill_rate;                  /* Fill rate: add X tokens... */
+       int interval;                   /* Divisor:   per Y jiffies   */
+       int tokens_min;                 /* Limit:     minimum for unhold */
+       int tokens_max;                 /* Limit:     no more than N tokens */
+       uint32_t jiffies;               /* last time accounted */
+
+       int priority_bias;              /* bias offset for priority */
+       int vavavoom;                   /* last calculated vavavoom */
+
+       cpumask_t cpus_allowed;         /* cpu mask for context */
+
+       struct _vx_ticks cpu[NR_CPUS];
+};
+
+#endif /* _VX_SCHED_DEF_H */
diff --git a/kernel/signal_cmd.h b/kernel/signal_cmd.h
new file mode 100644 (file)
index 0000000..e842538
--- /dev/null
@@ -0,0 +1,25 @@
+#ifndef _VX_SIGNAL_CMD_H
+#define _VX_SIGNAL_CMD_H
+
+/*  signalling vserver commands */
+
+#define VCMD_ctx_kill          VC_CMD(PROCTRL, 1, 0)
+#define VCMD_wait_exit         VC_CMD(EVENT, 99, 0)
+
+struct vcmd_ctx_kill_v0 {
+       int32_t pid;
+       int32_t sig;
+};
+
+struct vcmd_wait_exit_v0 {
+       int32_t a;
+       int32_t b;
+};
+
+#ifdef __KERNEL__
+
+extern int vc_ctx_kill(uint32_t, void __user *);
+extern int vc_wait_exit(uint32_t, void __user *);
+
+#endif /* __KERNEL__ */
+#endif /* _VX_SIGNAL_CMD_H */
diff --git a/kernel/switch.h b/kernel/switch.h
new file mode 100644 (file)
index 0000000..0c7fddb
--- /dev/null
@@ -0,0 +1,97 @@
+#ifndef _VX_SWITCH_H
+#define _VX_SWITCH_H
+
+#include <linux/types.h>
+
+#define VC_CATEGORY(c)         (((c) >> 24) & 0x3F)
+#define VC_COMMAND(c)          (((c) >> 16) & 0xFF)
+#define VC_VERSION(c)          ((c) & 0xFFF)
+
+#define VC_CMD(c,i,v)          ((((VC_CAT_ ## c) & 0x3F) << 24) \
+                               | (((i) & 0xFF) << 16) | ((v) & 0xFFF))
+
+/*
+
+  Syscall Matrix V2.8
+
+        |VERSION|CREATE |MODIFY |MIGRATE|CONTROL|EXPERIM| |SPECIAL|SPECIAL|
+        |STATS  |DESTROY|ALTER  |CHANGE |LIMIT  |TEST   | |       |       |
+        |INFO   |SETUP  |       |MOVE   |       |       | |       |       |
+  -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
+  SYSTEM |VERSION|VSETUP |VHOST  |       |       |       | |DEVICES|       |
+  HOST   |     00|     01|     02|     03|     04|     05| |     06|     07|
+  -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
+  CPU    |       |VPROC  |PROCALT|PROCMIG|PROCTRL|       | |SCHED. |       |
+  PROCESS|     08|     09|     10|     11|     12|     13| |     14|     15|
+  -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
+  MEMORY |       |       |       |       |       |       | |SWAP   |       |
+        |     16|     17|     18|     19|     20|     21| |     22|     23|
+  -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
+  NETWORK|       |VNET   |NETALT |NETMIG |NETCTL |       | |SERIAL |       |
+        |     24|     25|     26|     27|     28|     29| |     30|     31|
+  -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
+  DISK   |       |       |       |       |DLIMIT |       | |INODE  |       |
+  VFS    |     32|     33|     34|     35|     36|     37| |     38|     39|
+  -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
+  OTHER  |       |       |       |       |       |       | |VINFO  |       |
+        |     40|     41|     42|     43|     44|     45| |     46|     47|
+  =======+=======+=======+=======+=======+=======+=======+ +=======+=======+
+  SPECIAL|EVENT  |       |       |       |FLAGS  |       | |       |       |
+        |     48|     49|     50|     51|     52|     53| |     54|     55|
+  -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
+  SPECIAL|DEBUG  |       |       |       |RLIMIT |SYSCALL| |       |COMPAT |
+        |     56|     57|     58|     59|     60|TEST 61| |     62|     63|
+  -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
+
+*/
+
+#define VC_CAT_VERSION         0
+
+#define VC_CAT_VSETUP          1
+#define VC_CAT_VHOST           2
+
+#define VC_CAT_VPROC           9
+#define VC_CAT_PROCALT         10
+#define VC_CAT_PROCMIG         11
+#define VC_CAT_PROCTRL         12
+
+#define VC_CAT_SCHED           14
+
+#define VC_CAT_VNET            25
+#define VC_CAT_NETALT          26
+#define VC_CAT_NETMIG          27
+#define VC_CAT_NETCTRL         28
+
+#define VC_CAT_DLIMIT          36
+#define VC_CAT_INODE           38
+
+#define VC_CAT_VINFO           46
+#define VC_CAT_EVENT           48
+
+#define VC_CAT_FLAGS           52
+#define VC_CAT_DEBUG           56
+#define VC_CAT_RLIMIT          60
+
+#define VC_CAT_SYSTEST         61
+#define VC_CAT_COMPAT          63
+
+/*  interface version */
+
+#define VCI_VERSION            0x00020001
+#define VCI_LEGACY_VERSION     0x000100FF
+
+/*  query version */
+
+#define VCMD_get_version       VC_CMD(VERSION, 0, 0)
+
+
+#ifdef __KERNEL__
+
+#include <linux/errno.h>
+
+
+#else  /* __KERNEL__ */
+#define __user
+#endif /* __KERNEL__ */
+
+#endif /* _VX_SWITCH_H */
diff --git a/kernel/xid.h b/kernel/xid.h
new file mode 100644 (file)
index 0000000..4848951
--- /dev/null
@@ -0,0 +1,145 @@
+#ifndef _VX_XID_H
+#define _VX_XID_H
+
+#ifndef        CONFIG_VSERVER
+#warning config options missing
+#endif
+
+#define XID_TAG_SB(sb) (sb->s_flags & MS_TAGXID)
+
+#define XID_TAG(in)    (!(in) || \
+       (((struct inode *)in)->i_sb && \
+       XID_TAG_SB(((struct inode *)in)->i_sb)))
+
+
+#ifdef CONFIG_XID_TAG_NFSD
+#define        XID_TAG_NFSD    1
+#else
+#define        XID_TAG_NFSD    0
+#endif
+
+
+#ifdef CONFIG_INOXID_NONE
+
+#define MAX_UID                0xFFFFFFFF
+#define MAX_GID                0xFFFFFFFF
+
+#define INOXID_XID(tag, uid, gid, xid) (0)
+
+#define XIDINO_UID(tag, uid, xid)      (uid)
+#define XIDINO_GID(tag, gid, xid)      (gid)
+
+#endif
+
+
+#ifdef CONFIG_INOXID_GID16
+
+#define MAX_UID                0xFFFFFFFF
+#define MAX_GID                0x0000FFFF
+
+#define INOXID_XID(tag, uid, gid, xid) \
+       ((tag) ? (((gid) >> 16) & 0xFFFF) : 0)
+
+#define XIDINO_UID(tag, uid, xid)      (uid)
+#define XIDINO_GID(tag, gid, xid)      \
+       ((tag) ? (((gid) & 0xFFFF) | ((xid) << 16)) : (gid))
+
+#endif
+
+
+#ifdef CONFIG_INOXID_UGID24
+
+#define MAX_UID                0x00FFFFFF
+#define MAX_GID                0x00FFFFFF
+
+#define INOXID_XID(tag, uid, gid, xid) \
+       ((tag) ? ((((uid) >> 16) & 0xFF00) | (((gid) >> 24) & 0xFF)) : 0)
+
+#define XIDINO_UID(tag, uid, xid)      \
+       ((tag) ? (((uid) & 0xFFFFFF) | (((xid) & 0xFF00) << 16)) : (uid))
+#define XIDINO_GID(tag, gid, xid)      \
+       ((tag) ? (((gid) & 0xFFFFFF) | (((xid) & 0x00FF) << 24)) : (gid))
+
+#endif
+
+
+#ifdef CONFIG_INOXID_UID16
+
+#define MAX_UID                0x0000FFFF
+#define MAX_GID                0xFFFFFFFF
+
+#define INOXID_XID(tag, uid, gid, xid) \
+       ((tag) ? (((uid) >> 16) & 0xFFFF) : 0)
+
+#define XIDINO_UID(tag, uid, xid)      \
+       ((tag) ? (((uid) & 0xFFFF) | ((xid) << 16)) : (uid))
+#define XIDINO_GID(tag, gid, xid)      (gid)
+
+#endif
+
+
+#ifdef CONFIG_INOXID_INTERN
+
+#define MAX_UID                0xFFFFFFFF
+#define MAX_GID                0xFFFFFFFF
+
+#define INOXID_XID(tag, uid, gid, xid) \
+       ((tag) ? (xid) : 0)
+
+#define XIDINO_UID(tag, uid, xid)      (uid)
+#define XIDINO_GID(tag, gid, xid)      (gid)
+
+#endif
+
+
+#ifdef CONFIG_INOXID_RUNTIME
+
+#define MAX_UID                0xFFFFFFFF
+#define MAX_GID                0xFFFFFFFF
+
+#define INOXID_XID(tag, uid, gid, xid) (0)
+
+#define XIDINO_UID(tag, uid, xid)      (uid)
+#define XIDINO_GID(tag, gid, xid)      (gid)
+
+#endif
+
+
+#ifdef CONFIG_INOXID_NONE
+#define vx_current_fsxid(sb)   (0)
+#else
+#define vx_current_fsxid(sb)   \
+       (XID_TAG_SB(sb) ? current->xid : 0)
+#endif
+
+#define INOXID_UID(tag, uid, gid)      \
+       ((tag) ? ((uid) & MAX_UID) : (uid))
+#define INOXID_GID(tag, uid, gid)      \
+       ((tag) ? ((gid) & MAX_GID) : (gid))
+
+
+static inline uid_t vx_map_uid(uid_t uid)
+{
+       if ((uid > MAX_UID) && (uid != -1))
+               uid = -2;
+       return (uid & MAX_UID);
+}
+
+static inline gid_t vx_map_gid(gid_t gid)
+{
+       if ((gid > MAX_GID) && (gid != -1))
+               gid = -2;
+       return (gid & MAX_GID);
+}
+
+
+#ifdef CONFIG_VSERVER_LEGACY
+#define FIOC_GETXID    _IOR('x', 1, long)
+#define FIOC_SETXID    _IOW('x', 2, long)
+#define FIOC_SETXIDJ   _IOW('x', 3, long)
+#endif
+
+int vx_parse_xid(char *string, xid_t *xid, int remove);
+void vx_propagate_xid(struct nameidata *nd, struct inode *inode);
+
+#endif /* _VX_XID_H */
index c193cd6..7a74672 100644 (file)
@@ -1,4 +1,4 @@
-## $Id: Makefile-files,v 1.1.4.6 2004/03/04 03:23:09 ensc Exp $  -*- makefile -*-
+## $Id: Makefile-files,v 1.55 2005/05/05 09:17:25 ensc Exp $  -*- makefile -*-
 
 ## Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 ##  
 ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 ##  
 
-lib_SRCS                       =  lib/syscall.c \
-                                  lib/syscall_rlimit.c \
-                                  lib/syscall_kill.c \
-                                  lib/checkversion.c \
-                                  lib/getctx.c \
-                                  lib/getversion.c \
-                                  lib/uint2str.c
-
-lib_HDRS                       =  lib/vserver.h
-
-lib_XHDRS                       =  lib/syscall-compat.hc \
-                                  lib/syscall-legacy.hc \
-                                  lib/syscall_rlimit-v11.hc \
-                                  lib/syscall_kill-v11.hc \
-                                  lib/getctx-compat.hc \
-                                  lib/getctx-legacy.hc \
-                                  lib/getversion-internal.hc \
-                                  lib/safechroot-internal.hc \
-                                  lib/virtual.h \
-                                  lib/vserver-internal.h
-
-lib_lib_LIBS                   =  lib/libvserver.a
-
-lib_libvserver_a_SOURCES       =  $(lib_SRCS)
-lib_libvserver_a_CPPFLAGS      =  -D_GNU_SOURCE
+lib_VERSION =                  0.0.0
+
+lib_compat_SRCS =              lib/cflags-compat.c \
+                               lib/cflags_list-compat.c
+lib_legacy_SRCS =              lib/getprocentry-legacy.c
+lib_management_SRCS =          lib/createskeleton.c \
+                               lib/getvserverbyctx.c \
+                               lib/getvserverbyctx-compat.hc \
+                               lib/getvserverbyctx-v13.hc \
+                               lib/getvservercfgstyle.c \
+                               lib/getvserverappdir.c \
+                               lib/getvservercfgdir.c \
+                               lib/getvserverctx.c \
+                               lib/getvservername.c \
+                               lib/getvservervdir.c \
+                               lib/xidopt2xid.c
+lib_v11_SRCS =                 lib/syscall_rlimit.c \
+                               lib/syscall_rlimit-v11.hc \
+                               lib/syscall_kill.c  \
+                               lib/syscall_kill-v11.hc
+lib_v13_SRCS =                 lib/syscall_ctxcreate.c \
+                               lib/syscall_ctxcreate-v13.hc \
+                               lib/syscall_ctxmigrate.c \
+                               lib/syscall_ctxmigrate-v13.hc \
+                               lib/syscall_cleanupnamespace-v13.hc \
+                               lib/syscall_cleanupnamespace.c \
+                               lib/syscall_enternamespace-v13.hc \
+                               lib/syscall_enternamespace.c \
+                               lib/syscall_getccaps-v13.hc \
+                               lib/syscall_getccaps.c \
+                               lib/syscall_getcflags-v13.hc \
+                               lib/syscall_getcflags.c \
+                               lib/syscall_getiattr-fscompat.hc \
+                               lib/syscall_getiattr-v13.hc \
+                               lib/syscall_getiattr.c \
+                               lib/syscall_getncaps-net.hc \
+                               lib/syscall_getncaps.c \
+                               lib/syscall_getnflags-net.hc \
+                               lib/syscall_getnflags.c \
+                               lib/syscall_getnxinfo-net.hc \
+                               lib/syscall_getnxinfo.c \
+                               lib/syscall_gettasknid-net.hc \
+                               lib/syscall_gettasknid.c \
+                               lib/syscall_gettaskxid-oldproc.hc \
+                               lib/syscall_gettaskxid-v13.hc \
+                               lib/syscall_gettaskxid.c \
+                               lib/syscall_getvhiname-olduts.hc \
+                               lib/syscall_getvhiname-v13.hc \
+                               lib/syscall_getvhiname.c \
+                               lib/syscall_getvxinfo-oldproc.hc \
+                               lib/syscall_getvxinfo-v13.hc \
+                               lib/syscall_getvxinfo.c \
+                               lib/syscall_netadd-net.hc \
+                               lib/syscall_netadd.c \
+                               lib/syscall_netcreate-net.hc \
+                               lib/syscall_netcreate.c \
+                               lib/syscall_netmigrate-net.hc \
+                               lib/syscall_netmigrate.c \
+                               lib/syscall_netremove-net.hc \
+                               lib/syscall_netremove.c \
+                               lib/syscall_setccaps-v13.hc \
+                               lib/syscall_setccaps.c \
+                               lib/syscall_setcflags-v13.hc \
+                               lib/syscall_setcflags.c \
+                               lib/syscall_setiattr-fscompat.hc \
+                               lib/syscall_setiattr-v13.hc \
+                               lib/syscall_setiattr.c \
+                               lib/syscall_setnamespace-v13.hc \
+                               lib/syscall_setnamespace.c \
+                               lib/syscall_setncaps-net.hc \
+                               lib/syscall_setncaps.c \
+                               lib/syscall_setnflags-net.hc \
+                               lib/syscall_setnflags.c \
+                               lib/syscall_setsched-v13.hc \
+                               lib/syscall_setsched.c \
+                               lib/syscall_setvhiname-olduts.hc \
+                               lib/syscall_setvhiname-v13.hc \
+                               lib/syscall_setvhiname.c \
+                               lib/syscall_waitexit.c  \
+                               lib/syscall_waitexit-v13.hc \
+                               lib/bcaps-v13.c \
+                               lib/bcaps_list-v13.c \
+                               lib/ccaps-v13.c \
+                               lib/ccaps_list-v13.c \
+                               lib/cflags-v13.c \
+                               lib/cflags_list-v13.c \
+                               lib/ncaps-net.c \
+                               lib/ncaps_list-net.c \
+                               lib/nflags-net.c \
+                               lib/nflags_list-net.c
+
+if ENSC_HAVE_C99_COMPILER
+lib_v13_SRCS +=                        lib/syscall_adddlimit-v13.hc \
+                               lib/syscall_adddlimit.c \
+                               lib/syscall_getdlimit-v13.hc \
+                               lib/syscall_getdlimit.c \
+                               lib/syscall_remdlimit-v13.hc \
+                               lib/syscall_remdlimit.c \
+                               lib/syscall_setdlimit-v13.hc \
+                               lib/syscall_setdlimit.c
+endif
+
+PKGCONFIG_FILES =              lib/util-vserver
+
+lib_SRCS =                     lib/syscall.c \
+                               lib/checkversion.c \
+                               lib/isdirectory.c \
+                               lib/isfile.c \
+                               lib/islink.c \
+                               lib/getnbipv4root.c \
+                               lib/getversion.c \
+                               lib/capabilities.c \
+                               lib/getfilecontext.c \
+                               lib/getinsecurebcaps.c \
+                               lib/getxidtype.c \
+                               lib/isdynamicxid.c \
+                               lib/issupported.c \
+                               lib/issupportedstring.c \
+                               lib/listparser_uint32.c \
+                               lib/listparser_uint64.c \
+                               lib/personalityflag.c \
+                               lib/personalityflag_list.c \
+                               lib/personalitytype.c \
+                               lib/syscall-syscall.c \
+                               lib/val2text-t2v-uint32.c \
+                               lib/val2text-t2v-uint64.c \
+                               lib/val2text-v2t-uint32.c \
+                               lib/val2text-v2t-uint64.c \
+                               lib/parselimit.c \
+                               $(lib_legacy_SRCS) \
+                               $(lib_compat_SRCS) \
+                               $(lib_management_SRCS) \
+                               $(lib_v11_SRCS) \
+                               $(lib_v13_SRCS) \
+                               $(ensc_fmt_SRCS)
+
+include_HEADERS +=             lib/vserver.h
+
+noinst_HEADERS +=              lib/syscall-compat.hc \
+                               lib/syscall-legacy.hc \
+                               lib/createskeleton-full.hc \
+                               lib/createskeleton-short.hc \
+                               lib/fmt.h \
+                               lib/getversion-internal.hc \
+                               lib/safechroot-internal.hc \
+                               lib/ioctl-getext2flags.hc \
+                               lib/ioctl-getfilecontext.hc \
+                               lib/ioctl-setext2flags.hc \
+                               lib/ioctl-setfilecontext.hc \
+                               lib/ioctl-getxflg.hc \
+                               lib/ioctl-setxflg.hc \
+                               lib/ext2fs.h \
+                               lib/listparser.hc \
+                               lib/val2text.hc \
+                               lib/virtual.h \
+                               lib/internal.h \
+                               lib/syscall-alternative.h \
+                               lib/syscall-wrap.h \
+                               lib/utils-legacy.h \
+                               lib/vserver-internal.h
+
+LIBVSERVER_GLIBC =             lib/libvserver.la
+lib_LTLIBRARIES +=             $(LIBVSERVER_GLIBC)
+
+if USE_DIETLIBC
+LIBVSERVER_DIET =              lib/libvserver.a
+LIBVSERVER =                   $(LIBVSERVER_DIET)
+lib_LIBRARIES +=               $(LIBVSERVER_DIET)
+else
+LIBVSERVER_DIET =              lib-dietlibc-not-enabled-error.a
+LIBVSERVER =                   lib/libvserver.la
+endif
+
+lib_libvserver_la_SOURCES =    $(lib_SRCS)
+lib_libvserver_la_CPPFLAGS =   $(AM_CPPFLAGS) $(LIB_DEBUG_CPPFLAGS)
+lib_libvserver_la_LDFLAGS =    -version $(lib_VERSION)
+
+lib_libvserver_a_SOURCES =     $(lib_SRCS)
+lib_libvserver_a_CPPFLAGS =    $(AM_CPPFLAGS) $(LIB_DEBUG_CPPFLAGS)
+
+DIETPROGS +=                   lib/lib_libvserver_a-%
+
+CLEANFILES +=                  lib/libvserver.la \
+                               lib/libvserver.a
+
+include $(srcdir)/lib/apidoc/Makefile-files
+include $(srcdir)/lib/testsuite/Makefile-files
diff --git a/lib/apidoc/Doxyfile.in b/lib/apidoc/Doxyfile.in
new file mode 100644 (file)
index 0000000..9ebbd82
--- /dev/null
@@ -0,0 +1,217 @@
+# Doxyfile 1.3.6
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+PROJECT_NAME           = "@PACKAGE@ (libvserver)"
+PROJECT_NUMBER         = @PACKAGE_VERSION@
+OUTPUT_DIRECTORY       = 
+OUTPUT_LANGUAGE        = English
+USE_WINDOWS_ENCODING   = NO
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = YES
+ABBREVIATE_BRIEF       = 
+ALWAYS_DETAILED_SEC    = NO
+INLINE_INHERITED_MEMB  = NO
+FULL_PATH_NAMES        = NO
+STRIP_FROM_PATH        = 
+SHORT_NAMES            = NO
+JAVADOC_AUTOBRIEF      = NO
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP         = NO
+INHERIT_DOCS           = YES
+DISTRIBUTE_GROUP_DOC   = NO
+TAB_SIZE               = 8
+ALIASES                = 
+OPTIMIZE_OUTPUT_FOR_C  = YES
+OPTIMIZE_OUTPUT_JAVA   = NO
+SUBGROUPING            = YES
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+EXTRACT_ALL            = NO
+EXTRACT_PRIVATE        = YES
+EXTRACT_STATIC         = NO
+EXTRACT_LOCAL_CLASSES  = YES
+HIDE_UNDOC_MEMBERS     = NO
+HIDE_UNDOC_CLASSES     = NO
+HIDE_FRIEND_COMPOUNDS  = NO
+HIDE_IN_BODY_DOCS      = NO
+INTERNAL_DOCS          = NO
+CASE_SENSE_NAMES       = YES
+HIDE_SCOPE_NAMES       = NO
+SHOW_INCLUDE_FILES     = YES
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = YES
+SORT_BRIEF_DOCS        = NO
+SORT_BY_SCOPE_NAME     = NO
+GENERATE_TODOLIST      = YES
+GENERATE_TESTLIST      = YES
+GENERATE_BUGLIST       = YES
+GENERATE_DEPRECATEDLIST= YES
+ENABLED_SECTIONS       = 
+MAX_INITIALIZER_LINES  = 30
+SHOW_USED_FILES        = YES
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET                  = NO
+WARNINGS               = YES
+WARN_IF_UNDOCUMENTED   = YES
+WARN_IF_DOC_ERROR      = YES
+WARN_FORMAT            = "$file:$line: $text"
+WARN_LOGFILE           = 
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+INPUT                  = @top_srcdir@/lib
+FILE_PATTERNS          = vserver.h \
+                         internal.h
+RECURSIVE              = NO
+EXCLUDE                = 
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       = 
+EXAMPLE_PATH           = @top_srcdir@/lib/apidoc
+EXAMPLE_PATTERNS       = 
+EXAMPLE_RECURSIVE      = NO
+IMAGE_PATH             = 
+INPUT_FILTER           = 
+FILTER_SOURCE_FILES    = NO
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER         = YES
+INLINE_SOURCES         = NO
+STRIP_CODE_COMMENTS    = YES
+REFERENCED_BY_RELATION = YES
+REFERENCES_RELATION    = YES
+VERBATIM_HEADERS       = YES
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+ALPHABETICAL_INDEX     = NO
+COLS_IN_ALPHA_INDEX    = 5
+IGNORE_PREFIX          = 
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+GENERATE_HTML          = YES
+HTML_OUTPUT            = html
+HTML_FILE_EXTENSION    = .html
+HTML_HEADER            = 
+HTML_FOOTER            = 
+HTML_STYLESHEET        = 
+HTML_ALIGN_MEMBERS     = YES
+GENERATE_HTMLHELP      = NO
+CHM_FILE               = 
+HHC_LOCATION           = 
+GENERATE_CHI           = NO
+BINARY_TOC             = NO
+TOC_EXPAND             = NO
+DISABLE_INDEX          = NO
+ENUM_VALUES_PER_LINE   = 4
+GENERATE_TREEVIEW      = NO
+TREEVIEW_WIDTH         = 250
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+GENERATE_LATEX         = YES
+LATEX_OUTPUT           = latex
+LATEX_CMD_NAME         = latex
+MAKEINDEX_CMD_NAME     = makeindex
+COMPACT_LATEX          = YES
+PAPER_TYPE             = a4wide
+EXTRA_PACKAGES         = 
+LATEX_HEADER           = 
+PDF_HYPERLINKS         = YES
+USE_PDFLATEX           = YES
+LATEX_BATCHMODE        = YES
+LATEX_HIDE_INDICES     = NO
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+GENERATE_RTF           = NO
+RTF_OUTPUT             = rtf
+COMPACT_RTF            = NO
+RTF_HYPERLINKS         = NO
+RTF_STYLESHEET_FILE    = 
+RTF_EXTENSIONS_FILE    = 
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+GENERATE_MAN           = YES
+MAN_OUTPUT             = man
+MAN_EXTENSION          = .3
+MAN_LINKS              = YES
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+GENERATE_XML           = NO
+XML_OUTPUT             = xml
+XML_SCHEMA             = 
+XML_DTD                = 
+XML_PROGRAMLISTING     = YES
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+GENERATE_AUTOGEN_DEF   = NO
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+GENERATE_PERLMOD       = NO
+PERLMOD_LATEX          = NO
+PERLMOD_PRETTY         = YES
+PERLMOD_MAKEVAR_PREFIX = 
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+ENABLE_PREPROCESSING   = YES
+MACRO_EXPANSION        = YES
+EXPAND_ONLY_PREDEF     = NO
+SEARCH_INCLUDES        = YES
+INCLUDE_PATH           = 
+INCLUDE_FILE_PATTERNS  = 
+PREDEFINED             = VC_ATTR_UNUSED= \
+                         VC_ATTR_NONNULL(X)= \
+                         VC_ATTR_NORETURN= \
+                         VC_ATTR_ALWAYSINLINE= \
+                         VC_ATTR_PURE= \
+                         IS_DOXYGEN=1
+EXPAND_AS_DEFINED      = 
+SKIP_FUNCTION_MACROS   = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+TAGFILES               = 
+GENERATE_TAGFILE       = 
+ALLEXTERNALS           = NO
+EXTERNAL_GROUPS        = YES
+PERL_PATH              = /usr/bin/perl
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS         = YES
+HIDE_UNDOC_RELATIONS   = YES
+HAVE_DOT               = YES
+CLASS_GRAPH            = YES
+COLLABORATION_GRAPH    = YES
+UML_LOOK               = YES
+TEMPLATE_RELATIONS     = NO
+INCLUDE_GRAPH          = YES
+INCLUDED_BY_GRAPH      = YES
+CALL_GRAPH             = YES
+GRAPHICAL_HIERARCHY    = YES
+DOT_IMAGE_FORMAT       = png
+DOT_PATH               = 
+DOTFILE_DIRS           = 
+MAX_DOT_GRAPH_WIDTH    = 1024
+MAX_DOT_GRAPH_HEIGHT   = 1024
+MAX_DOT_GRAPH_DEPTH    = 0
+GENERATE_LEGEND        = YES
+DOT_CLEANUP            = YES
+DOT_TRANSPARENT        = YES
+DOT_MULTI_TARGETS      = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+SEARCHENGINE           = NO
diff --git a/lib/apidoc/Makefile-files b/lib/apidoc/Makefile-files
new file mode 100644 (file)
index 0000000..be59257
--- /dev/null
@@ -0,0 +1,31 @@
+## $Id: Makefile-files,v 1.3 2004/04/28 18:12:54 ensc Exp $    --*- makefile -*--
+
+## Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+##  
+## 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; version 2 of the License.
+##  
+## 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.
+
+CLEANFILES +=          lib/apidoc/.apidoc
+EXTRA_DIST +=          lib/apidoc/list2xxx.syntax
+
+doc:                   lib/apidoc/.apidoc
+clean-local:           clean_lib_apidoc
+
+clean_lib_apidoc:
+                       -rm -rf lib/apidoc/html lib/apidoc/latex lib/apidoc/man
+
+lib/apidoc/.apidoc:    lib/apidoc/Doxyfile lib/vserver.h lib/internal.h
+                       -rm -rf lib/apidoc/html lib/apidoc/latex lib/apidoc/man
+                       cd "$$(dirname '$<')" && $(DOXYGEN) "$$(basename '$<')"
+                       $(MAKE) -j1 -C lib/apidoc/latex
+                       touch '$@'
diff --git a/lib/apidoc/list2xxx.syntax b/lib/apidoc/list2xxx.syntax
new file mode 100644 (file)
index 0000000..1706e9b
--- /dev/null
@@ -0,0 +1,5 @@
+LIST   <- ELEM  | ELEM ',' LIST
+ELEM   <- '~' ELEM | MASK | NAME
+MASK   <- NUMBER | '^' NUMBER
+NUMBER <- 0[0-7]* | [1-9][0-9]* | 0x[0-9,a-f]+
+NAME   <- <literal name> | "all" | "any" | "none"
diff --git a/lib/bcaps-v13.c b/lib/bcaps-v13.c
new file mode 100644 (file)
index 0000000..ce793f8
--- /dev/null
@@ -0,0 +1,106 @@
+// $Id: bcaps-v13.c,v 1.5 2005/07/15 16:27:37 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <ensc@delenn.intern.sigma-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "internal.h"
+#include <lib_internal/util-dimof.h>
+#include <linux/capability.h>
+
+#include <string.h>
+#include <strings.h>
+#include <assert.h>
+
+#define DECL(VAL) { #VAL, sizeof(#VAL)-1, 1 << (CAP_ ## VAL) }
+
+#ifndef CAP_AUDIT_WRITE
+#  define CAP_AUDIT_WRITE      29
+#endif
+
+#ifndef CAP_AUDIT_CONTROL
+#  define CAP_AUDIT_CONTROL    30
+#endif
+
+static struct Mapping_uint64 const VALUES[] = {
+  DECL(CHOWN),
+  DECL(DAC_OVERRIDE),
+  DECL(DAC_READ_SEARCH),
+  DECL(FOWNER),
+  DECL(FSETID),
+  DECL(KILL),
+  DECL(SETGID),
+  DECL(SETUID),
+  DECL(SETPCAP),
+  DECL(LINUX_IMMUTABLE),
+  DECL(NET_BIND_SERVICE),
+  DECL(NET_BROADCAST),
+  DECL(NET_ADMIN),
+  DECL(NET_RAW),
+  DECL(IPC_LOCK),
+  DECL(IPC_OWNER),
+  DECL(SYS_MODULE),
+  DECL(SYS_RAWIO),
+  DECL(SYS_CHROOT),
+  DECL(SYS_PTRACE),
+  DECL(SYS_PACCT),
+  DECL(SYS_ADMIN),
+  DECL(SYS_BOOT),
+  DECL(SYS_NICE),
+  DECL(SYS_RESOURCE),
+  DECL(SYS_TIME),
+  DECL(SYS_TTY_CONFIG),
+  DECL(MKNOD),
+  DECL(LEASE),
+  DECL(AUDIT_WRITE),
+  DECL(AUDIT_CONTROL),
+};
+
+inline static char const *
+removePrefix(char const *str, size_t *len)
+{
+  if ((len==0 || *len==0 || *len>4) &&
+      strncasecmp("cap_", str, 4)==0) {
+    if (len && *len>4) *len -= 4;
+    return str+4;
+  }
+  else
+    return str;
+}
+
+uint_least64_t
+vc_text2bcap(char const *str, size_t len)
+{
+  char const * tmp = removePrefix(str, &len);
+  ssize_t      idx = utilvserver_value2text_uint64(tmp, len,
+                                                   VALUES, DIM_OF(VALUES));
+  if (idx==-1) return 0;
+  else         return VALUES[idx].val;
+}
+
+char const *
+vc_lobcap2text(uint_least64_t *val)
+{
+  ssize_t      idx = utilvserver_text2value_uint64(val,
+                                                   VALUES, DIM_OF(VALUES));
+
+  if (idx==-1) return 0;
+  else         return VALUES[idx].id;
+}
diff --git a/lib/bcaps_list-v13.c b/lib/bcaps_list-v13.c
new file mode 100644 (file)
index 0000000..f6f57b8
--- /dev/null
@@ -0,0 +1,46 @@
+// $Id: bcaps_list-v13.c,v 1.3 2005/04/24 20:19:52 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "internal.h"
+
+#include <string.h>
+
+static uint_least64_t
+vc_text2bcap_err(char const *str, size_t len, bool *failed)
+{
+  uint_least64_t       res = vc_text2bcap(str, len);
+  if (res==0) *failed = true;
+  return res;
+}
+
+int
+vc_list2bcap(char const *str, size_t len,
+            struct vc_err_listparser *err,
+            struct vc_ctx_caps *caps)
+{
+  return utilvserver_listparser_uint64(str, len,
+                                      err ? &err->ptr : 0,
+                                      err ? &err->len : 0,
+                                      &caps->bcaps, &caps->bmask,
+                                      vc_text2bcap_err);
+}
diff --git a/lib/capabilities.c b/lib/capabilities.c
new file mode 100644 (file)
index 0000000..e3ed156
--- /dev/null
@@ -0,0 +1,86 @@
+// $Id: capabilities.c,v 1.5 2005/07/15 16:32:05 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+
+#include "vserver.h"
+#include <string.h>
+
+#if 1
+#  define DECLARECAP(X,Y) { #X, VC_##X }
+#else
+#  define DECLARECAP(X,Y) { #X, Y }
+#endif
+
+static struct {
+    char const * const         id;
+    unsigned char              bit;
+} const CAP2BIT[] = {
+  DECLARECAP(CAP_CHOWN,             0),
+  DECLARECAP(CAP_DAC_OVERRIDE,      1),
+  DECLARECAP(CAP_DAC_READ_SEARCH,   2),
+  DECLARECAP(CAP_FOWNER,            3),
+  DECLARECAP(CAP_FSETID,            4),
+  DECLARECAP(CAP_KILL,              5),
+  DECLARECAP(CAP_SETGID,            6),
+  DECLARECAP(CAP_SETUID,            7),
+  DECLARECAP(CAP_SETPCAP,           8),
+  DECLARECAP(CAP_LINUX_IMMUTABLE,   9),
+  DECLARECAP(CAP_NET_BIND_SERVICE, 10),
+  DECLARECAP(CAP_NET_BROADCAST,    11),
+  DECLARECAP(CAP_NET_ADMIN,        12),
+  DECLARECAP(CAP_NET_RAW,          13),
+  DECLARECAP(CAP_IPC_LOCK,         14),
+  DECLARECAP(CAP_IPC_OWNER,        15),
+  DECLARECAP(CAP_SYS_MODULE,       16),
+  DECLARECAP(CAP_SYS_RAWIO,        17),
+  DECLARECAP(CAP_SYS_CHROOT,       18),
+  DECLARECAP(CAP_SYS_PTRACE,       19),
+  DECLARECAP(CAP_SYS_PACCT,        20),
+  DECLARECAP(CAP_SYS_ADMIN,        21),
+  DECLARECAP(CAP_SYS_BOOT,         22),
+  DECLARECAP(CAP_SYS_NICE,         23),
+  DECLARECAP(CAP_SYS_RESOURCE,     24),
+  DECLARECAP(CAP_SYS_TIME,        25),
+  DECLARECAP(CAP_SYS_TTY_CONFIG,   26),
+  DECLARECAP(CAP_MKNOD,            27),
+  DECLARECAP(CAP_LEASE,            28),
+  { "CAP_QUOTACTL",               29 },
+};
+  
+int
+vc_text2cap(char const *str)
+{
+  size_t       i;
+  if (strncmp(str, "CAP_", 4)==0) str += 4;
+
+  for (i=0; i<sizeof(CAP2BIT)/sizeof(CAP2BIT[0]); ++i)
+    if (strcmp(CAP2BIT[i].id+4, str)==0) return CAP2BIT[i].bit;
+
+  return -1;
+}
+
+char const *
+vc_cap2text(unsigned int bit)
+{
+  if ((size_t)bit>=sizeof(CAP2BIT)/sizeof(CAP2BIT[0])) return 0;
+  return CAP2BIT[bit].id;
+}
diff --git a/lib/ccaps-v13.c b/lib/ccaps-v13.c
new file mode 100644 (file)
index 0000000..71471a7
--- /dev/null
@@ -0,0 +1,65 @@
+// $Id: ccaps-v13.c,v 1.4 2005/07/15 16:28:18 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <ensc@delenn.intern.sigma-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "internal.h"
+#include <lib_internal/util-dimof.h>
+
+#include <string.h>
+#include <assert.h>
+
+#define DECL(STR, VAL) { STR, sizeof(STR)-1, VAL }
+
+static struct Mapping_uint64 const VALUES[] = {
+  DECL("utsname",         VC_VXC_SET_UTSNAME),
+  DECL("rlimit",          VC_VXC_SET_RLIMIT),
+  DECL("raw_icmp",        VC_VXC_RAW_ICMP),
+  DECL("syslog",          VC_VXC_SYSLOG),
+  DECL("secure_mount",    VC_VXC_SECURE_MOUNT),
+  DECL("secure_remount",  VC_VXC_SECURE_REMOUNT),
+  DECL("binary_mount",    VC_VXC_BINARY_MOUNT),
+  DECL("quota_ctl",       VC_VXC_QUOTA_CTL),
+    // some deprecated values...
+  DECL("mount",           VC_VXC_SECURE_MOUNT),
+  DECL("remount",         VC_VXC_SECURE_REMOUNT),
+  DECL("icmp",            VC_VXC_RAW_ICMP),
+  DECL("ping",            VC_VXC_RAW_ICMP),
+};
+
+uint_least64_t
+vc_text2ccap(char const *str, size_t len)
+{
+  ssize_t      idx = utilvserver_value2text_uint64(str, len,
+                                                   VALUES, DIM_OF(VALUES));
+  if (idx==-1) return 0;
+  else         return VALUES[idx].val;
+}
+
+char const *
+vc_loccap2text(uint_least64_t *val)
+{
+  ssize_t      idx = utilvserver_text2value_uint64(val,
+                                                   VALUES, DIM_OF(VALUES));
+
+  if (idx==-1) return 0;
+  else         return VALUES[idx].id;
+}
diff --git a/lib/ccaps_list-v13.c b/lib/ccaps_list-v13.c
new file mode 100644 (file)
index 0000000..0b26243
--- /dev/null
@@ -0,0 +1,46 @@
+// $Id: ccaps_list-v13.c,v 1.2 2005/04/24 20:19:52 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "internal.h"
+
+#include <string.h>
+
+static uint_least64_t
+vc_text2ccap_err(char const *str, size_t len, bool *failed)
+{
+  uint_least64_t       res = vc_text2ccap(str, len);
+  if (res==0) *failed = true;
+  return res;
+}
+
+int
+vc_list2ccap(char const *str, size_t len,
+            struct vc_err_listparser *err,
+            struct vc_ctx_caps *caps)
+{
+  return utilvserver_listparser_uint64(str, len,
+                                      err ? &err->ptr : 0,
+                                      err ? &err->len : 0,
+                                      &caps->ccaps, &caps->cmask,
+                                      vc_text2ccap_err);
+}
diff --git a/lib/cflags-compat.c b/lib/cflags-compat.c
new file mode 100644 (file)
index 0000000..85d530e
--- /dev/null
@@ -0,0 +1,70 @@
+// $Id: cflags-compat.c,v 1.1 2004/04/14 23:19:51 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <ensc@delenn.intern.sigma-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include <string.h>
+#include <assert.h>
+
+#define DECL(STR, VAL) { STR, sizeof(STR)-1, VAL }
+
+static struct {
+    char const * const         id;
+    size_t                     len;
+    unsigned char              val;
+} const FLAGVALUES[] = {
+  DECL("lock",      S_CTX_INFO_LOCK),
+  DECL("sched",     S_CTX_INFO_SCHED),
+  DECL("nproc",     S_CTX_INFO_NPROC),
+  DECL("private",   S_CTX_INFO_PRIVATE),
+  DECL("fakeinit",  S_CTX_INFO_INIT),
+  DECL("hideinfo",  S_CTX_INFO_HIDEINFO),
+  DECL("ulimit",    S_CTX_INFO_ULIMIT),
+  DECL("namespace", S_CTX_INFO_NAMESPACE),
+};
+
+uint_least32_t
+vc_text2cflag_compat(char const *str, size_t len)
+{
+  size_t       i;
+  if (len==0) len=strlen(str);
+
+  for (i=0; i<sizeof(FLAGVALUES)/sizeof(FLAGVALUES[0]); ++i)
+    if (len==FLAGVALUES[i].len &&
+       strncmp(FLAGVALUES[i].id, str, len)==0)
+      return FLAGVALUES[i].val;
+
+  return 0;
+}
+
+char const *
+vc_hicflag2text_compat(uint_least32_t val)
+{
+  size_t       i;
+  size_t       idx;
+
+  assert(S_CTX_INFO_ULIMIT==64);
+  
+  for (i=S_CTX_INFO_ULIMIT, idx=6; i>0; i/=2, --idx)
+    if (val & i) return FLAGVALUES[idx].id;
+
+  return 0;
+}
diff --git a/lib/cflags-v13.c b/lib/cflags-v13.c
new file mode 100644 (file)
index 0000000..246d1d4
--- /dev/null
@@ -0,0 +1,80 @@
+// $Id: cflags-v13.c,v 1.3 2004/10/21 19:00:20 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <ensc@delenn.intern.sigma-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "internal.h"
+#include <lib_internal/util-dimof.h>
+
+#include <string.h>
+#include <assert.h>
+
+#define DECL(STR, VAL) { STR, sizeof(STR)-1, VAL }
+
+static struct Mapping_uint64 const VALUES[] = {
+  DECL("lock",         VC_VXF_INFO_LOCK),
+  DECL("nproc",                VC_VXF_INFO_NPROC),
+  DECL("private",      VC_VXF_INFO_PRIVATE),
+  DECL("fakeinit",     VC_VXF_INFO_INIT),
+
+  DECL("hideinfo",     VC_VXF_INFO_HIDEINFO),
+  DECL("ulimit",       VC_VXF_INFO_ULIMIT),
+  DECL("namespace",    VC_VXF_INFO_NAMESPACE),
+
+  DECL("sched_hard",    VC_VXF_SCHED_HARD),
+  DECL("sched_prio",    VC_VXF_SCHED_PRIO),
+  DECL("sched_pause",   VC_VXF_SCHED_PAUSE),
+
+  DECL("virt_mem",      VC_VXF_VIRT_MEM),
+  DECL("virt_uptime",   VC_VXF_VIRT_UPTIME),
+  DECL("virt_cpu",      VC_VXF_VIRT_CPU),
+  DECL("virt_load",     VC_VXF_VIRT_LOAD),
+
+  DECL("hide_mount",   VC_VXF_HIDE_MOUNT),
+  DECL("hide_netif",   VC_VXF_HIDE_NETIF),
+
+  DECL("state_setup",   VC_VXF_STATE_SETUP),
+  DECL("state_init",    VC_VXF_STATE_INIT),
+
+  DECL("fork_rss",     VC_VXF_FORK_RSS),
+  DECL("prolific",     VC_VXF_PROLIFIC),
+  DECL("igneg_nice",    VC_VXF_IGNEG_NICE),
+  
+};
+
+uint_least64_t
+vc_text2cflag(char const *str, size_t len)
+{
+  ssize_t      idx = utilvserver_value2text_uint64(str, len,
+                                                   VALUES, DIM_OF(VALUES));
+  if (idx==-1) return 0;
+  else         return VALUES[idx].val;
+}
+
+char const *
+vc_locflag2text(uint_least64_t *val)
+{
+  ssize_t      idx = utilvserver_text2value_uint64(val,
+                                                   VALUES, DIM_OF(VALUES));
+
+  if (idx==-1) return 0;
+  else         return VALUES[idx].id;
+}
diff --git a/lib/cflags_list-compat.c b/lib/cflags_list-compat.c
new file mode 100644 (file)
index 0000000..7d5b0a0
--- /dev/null
@@ -0,0 +1,62 @@
+// $Id: cflags_list-compat.c,v 1.1 2004/04/14 23:19:51 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include <string.h>
+
+uint_least32_t
+vc_list2cflag_compat(char const *str, size_t len,
+                   struct vc_err_listparser *err)
+{
+  uint32_t             res = 0;
+
+  if (len==0) len = strlen(str);
+  
+  for (;len>0;) {
+    char const         *ptr = strchr(str, ',');
+    size_t             cnt  = ptr ? (size_t)(ptr-str) : len;
+    unsigned int       tmp;
+
+    if (cnt>=len) { cnt=len; len=0; }
+    else len-=(cnt+1);
+    
+    tmp = vc_text2cflag_compat(str,cnt);
+
+    if (tmp!=0) res |= tmp;
+    else {
+      if (err) {
+       err->ptr = str;
+       err->len = cnt;
+      }
+      return res;
+    }
+
+    if (ptr==0) break;
+    str = ptr+1;
+  }
+
+  if (err) {
+    err->ptr = 0;
+    err->len = 0;
+  }
+  return res;
+}
diff --git a/lib/cflags_list-v13.c b/lib/cflags_list-v13.c
new file mode 100644 (file)
index 0000000..48617f0
--- /dev/null
@@ -0,0 +1,45 @@
+// $Id: cflags_list-v13.c,v 1.3 2005/04/28 17:53:01 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "internal.h"
+
+
+static uint_least64_t
+vc_text2cflag_err(char const *str, size_t len, bool *failed)
+{
+  uint_least64_t       res = vc_text2cflag(str, len);
+  if (res==0) *failed = true;
+  return res;
+}
+
+int
+vc_list2cflag(char const *str, size_t len,
+            struct vc_err_listparser *err,
+            struct vc_ctx_flags *flags)
+{
+  return utilvserver_listparser_uint64(str, len,
+                                      err ? &err->ptr : 0,
+                                      err ? &err->len : 0,
+                                      &flags->flagword, &flags->mask,
+                                      vc_text2cflag_err);
+}
index 377ce7c..5670bde 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: checkversion.c,v 1.1.2.3 2003/10/21 16:58:02 ensc Exp $    --*- c++ -*--
+// $Id: checkversion.c,v 1.5 2004/01/21 18:53:22 ensc Exp $    --*- c++ -*--
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 //  
@@ -19,9 +19,9 @@
 #ifdef HAVE_CONFIG_H
 #  include <config.h>
 #endif
-#include "compat.h"
 
 #include "vserver.h"
+#include "vserver-internal.h"
 #include "getversion-internal.hc"
 
 int
diff --git a/lib/createskeleton-full.hc b/lib/createskeleton-full.hc
new file mode 100644 (file)
index 0000000..90abcee
--- /dev/null
@@ -0,0 +1,115 @@
+// $Id: createskeleton-full.hc,v 1.4 2005/02/01 00:55:51 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+#define CONCAT_TWO_ARGS(BUF, LHS,RHS)                  \
+  size_t               BUF ## l1 = strlen(LHS);        \
+  size_t               BUF ## l2 = strlen(RHS);        \
+  char                 BUF[BUF##l1 + BUF##l2 + 2];     \
+                                                       \
+  memcpy(BUF,      LHS, BUF##l1 + 1);                  \
+  if (BUF##l2 > 0) {                                   \
+    BUF[ BUF##l1 ] = '/';                              \
+    memcpy(BUF+ BUF##l1 + 1, RHS, BUF##l2 + 1);                \
+  }
+
+static inline int
+mkdir2(char const *lhs, char const *rhs, int mode)
+{
+  CONCAT_TWO_ARGS(buf, lhs, rhs);
+  return mkdir(buf, mode);
+}
+
+static inline int
+setIAttr2(char const *lhs, char const *rhs, int flags)
+{
+  CONCAT_TWO_ARGS(buf, lhs, rhs);
+
+  return vc_set_iattr(buf, 0, flags, VC_IMMUTABLE_ALL);
+}
+
+static inline int
+symlink2(char const *old_lhs, char const *old_rhs,
+        char const *new_lhs, char const *new_rhs)
+{
+  CONCAT_TWO_ARGS(old_buf, old_lhs, old_rhs);
+
+  {
+    CONCAT_TWO_ARGS(new_buf, new_lhs, new_rhs);
+    return symlink(old_buf, new_buf);
+  }
+}
+
+#undef CONCAT_TWO_ARGS
+
+static inline int
+vc_createSkeleton_full(char const *id, char const *name, int flags)
+{
+  if (mkdir(id, 0755)==-1) return -1;
+
+  if (mkdir2(id, "apps", 0755)==-1 ||
+      ((flags&vcSKEL_INTERFACES) && mkdir2(id, "interfaces", 755)==-1) ||
+      ((flags&vcSKEL_PKGMGMT) && (
+       mkdir2(id, "apps/pkgmgmt", 0755)==-1)))
+    return -1;
+
+  for (;;) {
+    char const *basedir = CONFDIR "/.defaults/run";
+
+    if (!utilvserver_isDirectory(basedir, true)) basedir = DEFAULT_PKGSTATEDIR;
+    if (!utilvserver_isDirectory(basedir, true)) break;
+
+    if (symlink2(basedir, name, id, "run")==-1)
+      return -1;
+
+    break;
+  }
+  
+  while (flags&vcSKEL_PKGMGMT) {
+    char const *basedir = CONFDIR "/.defaults/apps/pkgmgmt/base";
+
+    if (!utilvserver_isDirectory(basedir, true)) basedir = DEFAULT_VSERVERPKGDIR;
+    if (!utilvserver_isDirectory(basedir, true)) break;
+
+    if (mkdir2(basedir, name, 0755)==-1 ||
+       symlink2(basedir, name, id, "apps/pkgmgmt/base")==-1)
+      return -1;
+
+    break;
+  }
+
+  while (flags&vcSKEL_FILESYSTEM) {
+    char const *basedir = CONFDIR "/.defaults/vdirbase";
+
+    if (!utilvserver_isDirectory(basedir, true)) basedir = DEFAULT_VSERVERDIR;
+    if (!utilvserver_isDirectory(basedir, true)) break;
+
+    if (mkdir2(basedir, name, 0755)==-1 ||
+       setIAttr2(basedir, name, 0)==-1 ||
+       symlink2(basedir, name, id, "vdir")==-1)
+      return -1;
+
+    break;
+  }
+
+  return 0;
+}
diff --git a/lib/createskeleton-short.hc b/lib/createskeleton-short.hc
new file mode 100644 (file)
index 0000000..b71aea2
--- /dev/null
@@ -0,0 +1,31 @@
+// $Id: createskeleton-short.hc,v 1.1 2004/02/18 04:42:38 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+#include <stdlib.h>
+#include <string.h>
+
+static inline int
+vc_createSkeleton_short(char const *id, int flags)
+{
+  size_t       l = strlen(id);
+  char         buf[sizeof(CONFDIR "/") + l];
+
+  memcpy(buf, CONFDIR "/", sizeof(CONFDIR "/")-1);
+  memcpy(buf+sizeof(CONFDIR "/")-1, id, l+1);
+  
+  return vc_createSkeleton_full(buf, id, flags);
+}
diff --git a/lib/createskeleton.c b/lib/createskeleton.c
new file mode 100644 (file)
index 0000000..6292224
--- /dev/null
@@ -0,0 +1,49 @@
+// $Id: createskeleton.c,v 1.1 2004/02/18 04:42:38 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "internal.h"
+
+#include "pathconfig.h"
+
+#include "createskeleton-full.hc"
+#include "createskeleton-short.hc"
+
+#include <errno.h>
+
+int
+vc_createSkeleton(char const *id, vcCfgStyle style, int flags)
+{
+  if (style==vcCFG_NONE || style==vcCFG_AUTO) {
+    if (strchr(id, '/')!=0) style = vcCFG_RECENT_FULL;
+    else                    style = vcCFG_RECENT_SHORT;
+  }
+  
+  switch (style) {
+    case vcCFG_RECENT_SHORT    :  return vc_createSkeleton_short(id, flags);
+    case vcCFG_RECENT_FULL     :  return vc_createSkeleton_full(id, 0, flags);
+    default                    :  ;
+  }
+  
+  errno = EINVAL;
+  return -1;
+}
diff --git a/lib/ext2fs.h b/lib/ext2fs.h
new file mode 100644 (file)
index 0000000..35c3a76
--- /dev/null
@@ -0,0 +1,30 @@
+// $Id: ext2fs.h,v 1.2 2004/01/29 11:00:41 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_SRC_EXT2FS_H
+#define H_UTIL_VSERVER_SRC_EXT2FS_H
+
+#ifdef ENSC_HAVE_EXT2FS_EXT2_FS_H
+#  include <ext2fs/ext2_fs.h>
+#elif defined(ENSC_HAVE_LINUX_EXT2_FS_H)
+#  include <linux/ext2_fs.h>
+#else
+#  error Do not know how to include <ext2_fs.h>
+#endif
+
+#endif //  H_UTIL_VSERVER_SRC_EXT2FS_H
diff --git a/lib/fmt.h b/lib/fmt.h
new file mode 100644 (file)
index 0000000..34cfd89
--- /dev/null
+++ b/lib/fmt.h
@@ -0,0 +1,24 @@
+// $Id: fmt.h,v 1.7 2004/06/16 10:06:03 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_LIB_FMT_H
+#define H_UTIL_VSERVER_LIB_FMT_H
+
+#include "../ensc_fmt/fmt.h"
+
+#endif //  H_UTIL_VSERVER_LIB_FMT_H
diff --git a/lib/getfilecontext.c b/lib/getfilecontext.c
new file mode 100644 (file)
index 0000000..f5f3f9c
--- /dev/null
@@ -0,0 +1,38 @@
+// $Id: getfilecontext.c,v 1.1 2004/12/09 13:05:41 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include <errno.h>
+
+xid_t  vc_getfilecontext(char const *filename)
+{
+  xid_t                res;
+  uint32_t     mask = VC_IATTR_XID;
+  
+  if (vc_get_iattr(filename, &res, 0,&mask)==-1)
+    return VC_NOCTX;
+  else if ((mask&VC_IATTR_XID) && res!=VC_NOCTX)
+    return res;
+
+  errno = 0;
+  return VC_NOCTX;
+}
diff --git a/lib/getinsecurebcaps.c b/lib/getinsecurebcaps.c
new file mode 100644 (file)
index 0000000..760dff0
--- /dev/null
@@ -0,0 +1,43 @@
+// $Id: getinsecurebcaps.c,v 1.2 2005/07/15 18:59:55 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+
+uint_least64_t
+vc_get_insecurebcaps()
+{
+  return ( (1<<VC_CAP_LINUX_IMMUTABLE) | (1<<VC_CAP_NET_BROADCAST) |
+          (1<<VC_CAP_NET_ADMIN) | (1<<VC_CAP_NET_RAW) |
+          (1<<VC_CAP_IPC_LOCK) | (1<<VC_CAP_IPC_OWNER) |
+          (1<<VC_CAP_SYS_MODULE) | (1<<VC_CAP_SYS_RAWIO) |
+          (1<<VC_CAP_SYS_PACCT) | (1<<VC_CAP_SYS_ADMIN) |
+          (1<<VC_CAP_SYS_NICE) |
+          (1<<VC_CAP_SYS_RESOURCE) | (1<<VC_CAP_SYS_TIME) |
+          (1<<VC_CAP_MKNOD) | (1<<VC_CAP_AUDIT_CONTROL)
+          | ~(0x7fffffff)
+
+#if defined(VC_ENABLE_API_COMPAT)
+          | (vc_isSupported(vcFEATURE_VSHELPER) ? 0 : (1<<VC_CAP_SYS_BOOT))
+          | (vc_isSupported(vcFEATURE_MIGRATE)  ? 0 : (1<<29)) // formerly QUOTACTL
+#endif
+    );
+}
diff --git a/lib/getnbipv4root.c b/lib/getnbipv4root.c
new file mode 100644 (file)
index 0000000..67a65f4
--- /dev/null
@@ -0,0 +1,30 @@
+// $Id: getnbipv4root.c,v 1.1 2004/03/16 14:27:53 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "linuxvirtual.h"
+
+size_t
+vc_get_nb_ipv4root()
+{
+  return NB_IPV4ROOT;
+}
diff --git a/lib/getprocentry-legacy.c b/lib/getprocentry-legacy.c
new file mode 100644 (file)
index 0000000..747a4dd
--- /dev/null
@@ -0,0 +1,84 @@
+// $Id: getprocentry-legacy.c,v 1.4 2004/03/05 04:40:59 ensc Exp $    --*- c++ -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "utils-legacy.h"
+#include "internal.h"
+#include "vserver-internal.h"
+
+#include <string.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <unistd.h>
+
+static volatile size_t         proc_bufsize = 4097;
+
+size_t
+utilvserver_getProcEntryBufsize()
+{
+  return proc_bufsize;
+}
+
+char *
+utilvserver_getProcEntry(pid_t pid,
+                        char *str,
+                        char *buf, size_t bufsize)
+{
+  char                 status_name[ sizeof("/proc//status") + sizeof(unsigned int)*3 + 1 ];
+  int                  fd;
+  size_t               len;
+  char *               res = 0;
+
+  if (pid<0 || (uint32_t)(pid)>99999) {
+    errno = EBADR;
+    return 0;
+  }
+
+  if (pid==0) strcpy(status_name, "/proc/self/status");
+  else {
+    strcpy(status_name, "/proc/");
+    len = utilvserver_fmt_uint(status_name+sizeof("/proc/")-1, pid);
+    strcpy(status_name+sizeof("/proc/")+len-1, "/status");
+  }
+
+  fd = open(status_name, O_RDONLY);
+  if (fd==-1) return 0;
+
+  len = read(fd, buf, bufsize);
+  close(fd);
+
+  if (len<bufsize) {
+    buf[len] = '\0';
+    if (str)
+      res    = strstr(buf, str) + strlen(str);
+    else
+      res    = buf;
+  }
+  else if (len!=(size_t)-1) {
+    if (proc_bufsize==bufsize)
+      proc_bufsize = bufsize * 2 - 1;
+
+    errno = EAGAIN;
+  }
+
+  return res;
+}
index 1112fbf..7caf0b7 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: getversion-internal.hc,v 1.1.2.3 2003/12/26 00:16:48 uid68581 Exp $    --*- c++ -*--
+// $Id: getversion-internal.hc,v 1.6 2004/01/22 21:35:36 ensc Exp $    --*- c++ -*--
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 //  
 #ifdef HAVE_CONFIG_H
 #  include <config.h>
 #endif
-#include "compat.h"
 
-#include "vserver-internal.h"
+#define _LINUX_TYPES_H 1
 #include "linuxvirtual.h"
 
-static inline ALWAYSINLINE int
+static inline ALWAYSINLINE UNUSED int
 vc_get_version_internal(int cat)
 {
-  return vserver(VC_CMD(VERSION, 0, 0), cat, 0);
+  return vserver(VCMD_get_version, cat, 0);
 }
 
 #endif //  H_UTIL_VSERVER_LIB_GETVERSION_INTERNAL_H
index 4c3c9c4..32a3427 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: getversion.c,v 1.1.2.3 2004/01/26 18:19:24 ensc Exp $    --*- c++ -*--
+// $Id: getversion.c,v 1.5 2004/01/29 11:00:41 ensc Exp $    --*- c++ -*--
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 //  
@@ -19,8 +19,8 @@
 #ifdef HAVE_CONFIG_H
 #  include <config.h>
 #endif
-#include "compat.h"
 
+#include "vserver-internal.h"
 #include "getversion-internal.hc"
 
 int
diff --git a/lib/getvserverappdir.c b/lib/getvserverappdir.c
new file mode 100644 (file)
index 0000000..7a3714a
--- /dev/null
@@ -0,0 +1,73 @@
+// $Id: getvserverappdir.c,v 1.1 2004/01/16 17:55:45 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "internal.h"
+#include "pathconfig.h"
+
+#include <string.h>
+
+char *
+vc_getVserverAppDir(char const *id, vcCfgStyle style, char const *app)
+{
+  size_t               l1   = strlen(id);
+  size_t               l2   = strlen(app);
+  char                 *res = 0;
+
+  if (style==vcCFG_NONE || style==vcCFG_AUTO)
+    style = vc_getVserverCfgStyle(id);
+
+  switch (style) {
+    case vcCFG_NONE            :  return 0;
+    case vcCFG_LEGACY          :  return 0;
+    case vcCFG_RECENT_FULL     :
+    case vcCFG_RECENT_SHORT    :
+    {
+      char             buf[sizeof(CONFDIR) + l1 + l2 + sizeof("//apps/") - 1];
+      char *           ptr = buf;
+
+      if (style==vcCFG_RECENT_FULL)
+       memcpy(ptr, id, l1);
+      else {
+       memcpy(ptr, CONFDIR "/", sizeof(CONFDIR "/")-1);
+       ptr += sizeof(CONFDIR "/")-1;
+       memcpy(ptr, id, l1);      
+      }
+      
+      ptr += l1;
+      memcpy(ptr, "/apps/", 6); ptr += 6;
+      memcpy(ptr, app,     l2); ptr += l2;
+      *ptr = '\0';
+      
+      res = strdup(buf);
+      break;
+    }
+    default                    :  return 0;
+  }
+
+  if (!utilvserver_isDirectory(res, true)) {
+    free(res);
+    res = 0;
+  }
+
+  return res;
+}
diff --git a/lib/getvserverbyctx-compat.hc b/lib/getvserverbyctx-compat.hc
new file mode 100644 (file)
index 0000000..66acfa3
--- /dev/null
@@ -0,0 +1,114 @@
+// $Id: getvserverbyctx-compat.hc,v 1.3 2004/06/27 13:01:28 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "internal.h"
+#include "pathconfig.h"
+#include "compat-c99.h"
+
+#include <string.h>
+#include <unistd.h>
+
+#ifdef VC_ENABLE_API_COMPAT
+#include <dirent.h>
+#include <sys/types.h>
+
+
+static char *
+handleLegacy(xid_t xid)
+{
+  DIR                  *dir = opendir(DEFAULT_PKGSTATEDIR);
+  struct dirent                *ep;
+  char *               result = 0;
+  
+  if (dir==0) return 0;
+  while ((ep=readdir(dir))!=0) {
+    char * const               name = ep->d_name;
+    size_t                     l    = name ? strlen(name) : 0;
+    xid_t                      cur_xid;
+
+    if (l<=4 || strcmp(name+l-4, ".ctx")!=0) continue;
+    name[l-4]   = '\0';
+    cur_xid = vc_getVserverCtx(name, vcCFG_LEGACY, false, 0);
+    if (cur_xid!=xid) continue;
+
+    result      = strdup(name);
+    break;
+  }
+
+  closedir(dir);
+  return result;
+}
+#else
+static inline char *
+handleLegacy(xid_t UNUSED xid)
+{
+  return 0;
+}
+#endif
+
+static char *
+vc_getVserverByCtx_compat(xid_t ctx, vcCfgStyle *style, char const *revdir)
+{
+  if (revdir==0) revdir = DEFAULT_PKGSTATEREVDIR;
+
+  {
+  vcCfgStyle   cur_style = vcCFG_NONE;
+  size_t       l = strlen(revdir);
+  size_t       l1;
+  char         path[l + sizeof(unsigned int)*3 + 3];
+
+  strcpy(path, revdir);
+  path[l]      = '/';
+  l1 = utilvserver_fmt_uint(path+l+1, ctx);
+  path[l+1+l1] = '\0';
+
+  if (style==0 || *style==vcCFG_AUTO) {
+    if (access(path, F_OK)==0) cur_style = vcCFG_RECENT_FULL;
+    else                       cur_style = vcCFG_LEGACY;
+  }
+  else
+    cur_style = *style;
+
+  switch (cur_style) {
+    case vcCFG_RECENT_SHORT    :
+    case vcCFG_RECENT_FULL     :
+       // check if expected ctx == actual ctx
+      if (vc_getVserverCtx(path, vcCFG_RECENT_FULL, false, 0)!=ctx) return 0;
+
+      if (style) *style = vcCFG_RECENT_FULL;
+      return strdup(path);
+       // TODO: handle legacy
+    case vcCFG_LEGACY          :
+    {
+      char *   tmp = handleLegacy(ctx);
+      if (tmp && style)
+       *style = vcCFG_LEGACY;
+
+      return tmp;
+    }
+      
+    default            :
+      return 0;
+  }
+  }
+}
diff --git a/lib/getvserverbyctx-v13.hc b/lib/getvserverbyctx-v13.hc
new file mode 100644 (file)
index 0000000..faca702
--- /dev/null
@@ -0,0 +1,35 @@
+// $Id: getvserverbyctx-v13.hc,v 1.1 2004/03/11 04:39:59 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+static char *
+vc_getVserverByCtx_v13(xid_t ctx, vcCfgStyle *style, char const UNUSED *revdir)
+{
+  char         buf[128];
+
+  if (vc_get_vhi_name(ctx, vcVHI_CONTEXT, buf, sizeof buf)!=-1 &&
+      vc_getVserverCtx(buf, vcCFG_RECENT_FULL, false, 0)==ctx) {
+    if (style) *style = vcCFG_RECENT_FULL;
+    return strdup(buf);
+  }
+  else
+    return 0;
+}
diff --git a/lib/getvserverbyctx.c b/lib/getvserverbyctx.c
new file mode 100644 (file)
index 0000000..9896ae8
--- /dev/null
@@ -0,0 +1,41 @@
+// $Id: getvserverbyctx.c,v 1.6 2004/03/11 04:40:29 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "internal.h"
+#include "pathconfig.h"
+#include "compat-c99.h"
+
+#include <string.h>
+#include <unistd.h>
+
+#include "getvserverbyctx-compat.hc"
+#include "getvserverbyctx-v13.hc"
+
+char *
+vc_getVserverByCtx(xid_t ctx, vcCfgStyle *style, char const *revdir)
+{
+  if (vc_isSupported(vcFEATURE_MIGRATE))
+    return vc_getVserverByCtx_v13(ctx, style, revdir);
+  else
+    return vc_getVserverByCtx_compat(ctx, style, revdir);
+}
diff --git a/lib/getvservercfgdir.c b/lib/getvservercfgdir.c
new file mode 100644 (file)
index 0000000..f9581cf
--- /dev/null
@@ -0,0 +1,61 @@
+// $Id: getvservercfgdir.c,v 1.1 2004/01/16 17:55:45 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "internal.h"
+#include "pathconfig.h"
+
+#include <string.h>
+
+char *
+vc_getVserverCfgDir(char const *id, vcCfgStyle style)
+{
+  size_t               l1   = strlen(id);
+  char                 *res = 0;
+
+  if (style==vcCFG_NONE || style==vcCFG_AUTO)
+    style = vc_getVserverCfgStyle(id);
+
+  switch (style) {
+    case vcCFG_NONE            :  return 0;
+    case vcCFG_LEGACY          :  return 0;
+    case vcCFG_RECENT_FULL     :  res = strdup(id); break;
+    case vcCFG_RECENT_SHORT    :
+    {
+      char             buf[sizeof(CONFDIR) + l1 + sizeof("/") - 1];
+
+      strcpy(buf,                            CONFDIR "/");
+      strcpy(buf+sizeof(CONFDIR "/")    - 1, id);
+      
+      res = strdup(buf);
+      break;
+    }
+    default                    :  return 0;
+  }
+
+  if (!utilvserver_isDirectory(res, true)) {
+    free(res);
+    res = 0;
+  }
+
+  return res;
+}
diff --git a/lib/getvservercfgstyle.c b/lib/getvservercfgstyle.c
new file mode 100644 (file)
index 0000000..f9cba62
--- /dev/null
@@ -0,0 +1,97 @@
+// $Id: getvservercfgstyle.c,v 1.6 2005/01/26 23:29:06 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "pathconfig.h"
+#include "internal.h"
+
+#include <string.h>
+#include <sys/param.h>
+#include <unistd.h>
+#include <assert.h>
+
+static inline bool
+isRelPath(char const *p)
+{
+  return p[0]=='.' && (p[1]=='/' || (p[1]=='.' && p[2]=='/'));
+}
+
+static inline bool
+isAbsPath(char const *p)
+{
+  return p[0]=='/';
+}
+
+#define ISDIR  utilvserver_isDirectory(buf, true)
+#define ISFILE utilvserver_isFile(buf, true)
+#define ISLINK utilvserver_isLink(buf)
+
+vcCfgStyle
+vc_getVserverCfgStyle(char const *id)
+{
+  vcCfgStyle   res = vcCFG_NONE;
+  size_t       l1  = strlen(id);
+  char         buf[l1 +
+                   MAX(sizeof(CONFDIR "/"),sizeof(DEFAULT_VSERVERDIR "/")) +
+                   MAX(sizeof("/legacy"),  sizeof(".conf")) - 1];
+  char *       marker = 0;
+  bool         is_path;
+
+  strcpy(buf,    id);
+  marker = buf+l1;
+  strcpy(marker, "/vdir");
+
+  is_path = isAbsPath(buf) || isRelPath(buf);
+  if (is_path && (ISDIR || ISLINK))
+    res = vcCFG_RECENT_FULL;
+  else if (!is_path) {
+    strcpy(buf,                         CONFDIR "/");
+    strcpy(buf+sizeof(CONFDIR "/") - 1, id);
+    marker = buf+sizeof(CONFDIR "/")+l1 - 1;
+    strcpy(marker, "/vdir");
+
+    if (ISDIR) res = vcCFG_RECENT_SHORT;
+    else {
+      strcpy(buf,                                  DEFAULT_VSERVERDIR "/");
+      strcpy(buf+sizeof(DEFAULT_VSERVERDIR)+1 - 1, id);
+
+      if (ISDIR) res = vcCFG_LEGACY;
+    }
+
+    if (res==vcCFG_LEGACY) {
+      strcpy(buf,                            CONFDIR "/");
+      strcpy(buf+sizeof(CONFDIR "/") - 1,    id);
+      strcpy(buf+sizeof(CONFDIR "/")+l1 - 1, ".conf");
+
+      if (!ISFILE) res = vcCFG_NONE;
+    }
+  }
+
+
+  if (res==vcCFG_RECENT_FULL || res==vcCFG_RECENT_SHORT) {
+    assert(marker!=0);
+    strcpy(marker, "/legacy");
+    if (access(buf, F_OK)==0) res=vcCFG_LEGACY;
+  }
+
+  return res;
+}
diff --git a/lib/getvserverctx.c b/lib/getvserverctx.c
new file mode 100644 (file)
index 0000000..ce116ae
--- /dev/null
@@ -0,0 +1,156 @@
+// $Id: getvserverctx.c,v 1.8 2004/06/27 13:02:07 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "pathconfig.h"
+#include "compat-c99.h"
+#include "lib_internal/util.h"
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <string.h>
+#include <unistd.h>
+
+#ifdef VC_ENABLE_API_COMPAT
+#include <fcntl.h>
+
+static xid_t
+extractLegacyXID(char const *dir, char const *basename)
+{
+  size_t       l1 = strlen(dir);
+  size_t       l2 = strlen(basename);
+  char         path[l1 + l2 + sizeof("/.ctx")];
+  char *       ptr = path;
+  int          fd;
+  ssize_t      len;
+  xid_t                result = VC_NOXID;
+
+  ptr    = Xmemcpy(ptr, dir, l1);
+  *ptr++ = '/';
+  ptr    = Xmemcpy(ptr, basename, l2);
+  ptr    = Xmemcpy(ptr, ".ctx",    5);
+
+  fd = open(path, O_RDONLY);
+  if (fd==-1) return VC_NOXID;
+
+  len = lseek(fd, 0, SEEK_END);
+
+  if (len!=-1 && lseek(fd, 0, SEEK_SET)!=-1) {
+    char       buf[len+2];
+    char const *pos = 0;
+
+    buf[0] = '\n';
+    
+    if (read(fd, buf+1, len+1)==len) {
+      buf[len+1] = '\0';
+      pos        = strstr(buf, "\nS_CONTEXT=");
+    }
+
+    if (pos) pos += 11;
+    if (*pos>='1' && *pos<='9')
+      result = atoi(pos);
+  }
+
+  close(fd);
+  return result;
+}
+#else
+static xid_t
+extractLegacyXID(char const UNUSED *dir, char const UNUSED *basename)
+{
+  return VC_NOXID;
+}
+#endif
+
+
+static xid_t
+getCtxFromFile(char const *pathname)
+{
+  int          fd;
+  off_t                len;
+
+  fd = open(pathname, O_RDONLY);
+
+  if (fd==-1 ||
+      (len=lseek(fd, 0, SEEK_END))==-1 ||
+      (len>50) ||
+      (lseek(fd, 0, SEEK_SET)==-1))
+    return VC_NOCTX;
+
+  {
+  char         buf[len+1];
+  char         *errptr;
+  xid_t                res;
+  
+  if (TEMP_FAILURE_RETRY(read(fd, buf, len+1))!=len)
+    return VC_NOCTX;
+
+  res = strtol(buf, &errptr, 10);
+  if (*errptr!='\0' && *errptr!='\n') return VC_NOCTX;
+
+  return res;
+  }
+}
+
+xid_t
+vc_getVserverCtx(char const *id, vcCfgStyle style, bool honor_static, bool *is_running)
+{
+  size_t               l1 = strlen(id);
+  char                 buf[sizeof(CONFDIR "//") + l1 + sizeof("/context")];
+                           
+  if (style==vcCFG_NONE || style==vcCFG_AUTO)
+    style = vc_getVserverCfgStyle(id);
+
+  if (is_running) *is_running = false;
+
+  switch (style) {
+    case vcCFG_NONE            :  return VC_NOCTX;
+    case vcCFG_LEGACY          :
+      return extractLegacyXID(DEFAULT_PKGSTATEDIR, id);
+    case vcCFG_RECENT_SHORT    :
+    case vcCFG_RECENT_FULL     : {
+      size_t           idx = 0;
+      xid_t            res = 0;
+
+      if (style==vcCFG_RECENT_SHORT) {
+       memcpy(buf, CONFDIR "/", sizeof(CONFDIR "/")-1);
+       idx  = sizeof(CONFDIR "/") - 1;
+      }
+      memcpy(buf+idx, id, l1);    idx += l1;
+      memcpy(buf+idx, "/run", 5);      // appends '\0' too
+      
+      res = getCtxFromFile(buf);
+      if (is_running) *is_running = res!=VC_NOCTX;
+      
+      if (res==VC_NOCTX && honor_static) {
+       memcpy(buf+idx, "/context", 9); // appends '\0' too
+
+       res = getCtxFromFile(buf);
+      }
+      
+      return res;
+    }
+    default                    :  return VC_NOCTX;
+  }
+}
diff --git a/lib/getvservername.c b/lib/getvservername.c
new file mode 100644 (file)
index 0000000..a8bc866
--- /dev/null
@@ -0,0 +1,104 @@
+// $Id: getvservername.c,v 1.5 2004/05/08 01:27:25 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "pathconfig.h"
+
+#include <string.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <libgen.h>
+#include <unistd.h>
+#include <limits.h>
+
+static char *
+getRecentName(char *start, char *end)
+{
+  char         *res = 0;
+  int          fd;
+  char         buf[PATH_MAX];
+  
+  strcpy(end, "/name");
+  fd = open(start, O_RDONLY);
+  if (fd!=-1) {
+    off_t      len;
+
+    if ((len=lseek(fd, 0, SEEK_END))!=-1 &&
+       (len<VC_LIMIT_VSERVER_NAME_LEN) &&
+       (lseek(fd, 0, SEEK_SET)!=-1)) {
+      char     buf[len+1];
+
+      if (TEMP_FAILURE_RETRY(read(fd, buf, len+1))==len) {
+       while (len>0 && buf[len-1]=='\n') --len;
+       buf[len] = '\0';
+       if (len>0) res = buf;
+      }
+
+      close(fd);
+      return strdup(res);
+    }
+
+    close(fd);
+  }
+
+  if (res==0) {
+    *end = '\0';
+    res  = realpath(start, buf);
+    //printf("start='%s', res='%s'\n", start,res);
+    if (res==0) res = start;
+
+    res = basename(res);
+  }
+
+  return strdup(res);
+}
+
+char *
+vc_getVserverName(char const *id, vcCfgStyle style)
+{
+  size_t               l1  = strlen(id);
+
+  if (style==vcCFG_NONE || style==vcCFG_AUTO)
+    style = vc_getVserverCfgStyle(id);
+
+  switch (style) {
+    case vcCFG_NONE            :  return 0;
+    case vcCFG_LEGACY          :  return strdup(id);
+    case vcCFG_RECENT_SHORT    :
+    {
+      char             buf[sizeof(CONFDIR "/") + l1 + sizeof("/name") - 1];
+
+      strcpy(buf,                         CONFDIR "/");
+      strcpy(buf+sizeof(CONFDIR "/") - 1, id);
+      
+      return getRecentName(buf, buf+sizeof(CONFDIR "/")+l1 - 1);
+    }
+    case vcCFG_RECENT_FULL     :
+    {
+      char             buf[l1 + sizeof("/name")];
+      strcpy(buf, id);
+
+      return getRecentName(buf, buf+l1);
+    }
+    default                    :  return 0;
+  }
+}
diff --git a/lib/getvservervdir.c b/lib/getvservervdir.c
new file mode 100644 (file)
index 0000000..2d8c79a
--- /dev/null
@@ -0,0 +1,113 @@
+// $Id: getvservervdir.c,v 1.5 2005/03/22 14:59:46 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "internal.h"
+#include "pathconfig.h"
+
+#include <string.h>
+#include <unistd.h>
+#include <sys/param.h>
+#include <fcntl.h>
+
+static char *
+getDir(char *dir, bool physical)
+{
+  int          fd;
+  char         tmp[PATH_MAX];
+
+  if (!physical) return strdup(dir);
+
+  fd = open(".", O_RDONLY);
+  if (fd==-1) return 0;
+
+  if (chdir(dir)!=-1 &&
+      getcwd(tmp, sizeof tmp)!=0)
+    dir = strdup(tmp);
+  else
+    dir = 0;
+
+  if (fchdir(fd)==-1) {
+    if (write(2, "FATAL error: failed to restore directory\n", 41)!=41) { /*...*/ }
+    abort();
+  }
+  close(fd);
+  return dir;
+}
+       
+char *
+vc_getVserverVdir(char const *id, vcCfgStyle style, bool physical)
+{
+  size_t               l1   = strlen(id);
+  char                 *res = 0;
+
+  if (style==vcCFG_NONE || style==vcCFG_AUTO)
+    style = vc_getVserverCfgStyle(id);
+
+  switch (style) {
+    case vcCFG_NONE            :  return 0;
+    case vcCFG_LEGACY          :
+    {
+      char             buf[sizeof(DEFAULT_VSERVERDIR "/") + l1];
+
+      strcpy(buf,                                    DEFAULT_VSERVERDIR "/");
+      strcpy(buf+sizeof(DEFAULT_VSERVERDIR "/") - 1, id);
+
+      res = getDir(buf, physical);
+      break;
+    }
+    
+    case vcCFG_RECENT_SHORT    :
+    {
+      char             buf[sizeof(CONFDIR) + l1 + sizeof("//vdir") - 1];
+
+      strcpy(buf,                            CONFDIR "/");
+      strcpy(buf+sizeof(CONFDIR "/")    - 1, id);
+      strcpy(buf+sizeof(CONFDIR "/")+l1 - 1, "/vdir");
+      
+      res = getDir(buf, physical);
+      break;
+    }
+
+    case vcCFG_RECENT_FULL     :
+    {
+      char             buf[l1 + sizeof("/vdir")];
+
+      strcpy(buf,    id);
+      strcpy(buf+l1, "/vdir");
+
+      res = getDir(buf, physical);
+      break;
+    }
+
+    default                    :  return 0;
+  }
+
+  // ignore physical-case; we went into the directory while determining
+  // the physical path so the directory exists
+  if (!physical && !utilvserver_isDirectory(res, true)) {
+    free(res);
+    res = 0;
+  }
+
+  return res;
+}
diff --git a/lib/getxidtype.c b/lib/getxidtype.c
new file mode 100644 (file)
index 0000000..a5c0463
--- /dev/null
@@ -0,0 +1,34 @@
+// $Id: getxidtype.c,v 1.1 2005/03/09 14:38:51 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "virtual.h"
+
+vcXidType
+vc_getXIDType(xid_t xid)
+{
+  if (xid==0)                                  return vcTYPE_MAIN;
+  if (xid==1)                                  return vcTYPE_WATCH;
+  if (xid>1              && xid<MIN_D_CONTEXT) return vcTYPE_STATIC;
+  if (xid>=MIN_D_CONTEXT && xid<MAX_S_CONTEXT) return vcTYPE_DYNAMIC;
+  return vcTYPE_INVALID;
+}
diff --git a/lib/internal.h b/lib/internal.h
new file mode 100644 (file)
index 0000000..60e2420
--- /dev/null
@@ -0,0 +1,86 @@
+// $Id: internal.h,v 1.13 2005/04/28 17:52:30 ensc Exp $    --*- c++ -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+/** \file internal.h
+ *  \brief Declarations which are used by util-vserver internally.
+ */
+
+#ifndef H_UTIL_VSERVER_LIB_INTERNAL_H
+#define H_UTIL_VSERVER_LIB_INTERNAL_H
+
+#include "fmt.h"
+#include <stdlib.h>
+#include <stdbool.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int    utilvserver_checkCompatVersion();
+bool   utilvserver_isDirectory(char const *path, bool follow_link);
+bool   utilvserver_isFile(char const *path, bool follow_link);
+bool   utilvserver_isLink(char const *path);
+
+int    utilvserver_listparser_uint32(char const *str, size_t len,
+                                     char const **err_ptr, size_t *err_len,
+                                     uint_least32_t *flag,
+                                     uint_least32_t *mask,
+                                     uint_least32_t (*func)(char const*,
+                                                            size_t, bool *
+                                       )) NONNULL((1,5,7));
+  
+int    utilvserver_listparser_uint64(char const *str, size_t len,
+                                     char const **err_ptr, size_t *err_len,
+                                     uint_least64_t *flag,
+                                     uint_least64_t *mask,
+                                     uint_least64_t (*func)(char const*,
+                                                            size_t, bool *
+                                       )) NONNULL((1,5,7));
+
+struct Mapping_uint32 {
+    char const * const id;
+    size_t                     len;
+    uint_least32_t             val;
+};
+
+struct Mapping_uint64 {
+    char const * const id;
+    size_t                     len;
+    uint_least64_t             val;
+};
+  
+ssize_t        utilvserver_value2text_uint32(char const *str, size_t len,
+                                     struct Mapping_uint32 const *map,
+                                     size_t map_len) NONNULL((1,3));
+
+ssize_t        utilvserver_value2text_uint64(char const *str, size_t len,
+                                     struct Mapping_uint64 const *map,
+                                     size_t map_len) NONNULL((1,3));
+
+ssize_t utilvserver_text2value_uint32(uint_least32_t *val,
+                                     struct Mapping_uint32 const *map,
+                                     size_t map_len) NONNULL((1,2));
+  
+ssize_t utilvserver_text2value_uint64(uint_least64_t *val,
+                                     struct Mapping_uint64 const *map,
+                                     size_t map_len) NONNULL((1,2));
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif //  H_UTIL_VSERVER_LIB_INTERNAL_H
diff --git a/lib/ioctl-getext2flags.hc b/lib/ioctl-getext2flags.hc
new file mode 100644 (file)
index 0000000..a476980
--- /dev/null
@@ -0,0 +1,48 @@
+// $Id: ioctl-getext2flags.hc,v 1.4 2004/01/23 20:47:32 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "ext2fs.h"
+
+#include <sys/ioctl.h>
+
+#ifndef EXT2_IMMUTABLE_FILE_FL
+#  define EXT2_IMMUTABLE_FILE_FL       0x00000010
+#endif
+
+#ifndef EXT2_IMMUTABLE_LINK_FL
+#  define EXT2_IMMUTABLE_LINK_FL       0x00008000
+#endif
+
+static inline ALWAYSINLINE int
+vc_X_get_ext2flags(int fd, long *flags)
+{
+  int          rc;
+
+  *flags = 0;
+  rc     = ioctl(fd, EXT2_IOC_GETFLAGS, flags);
+  *flags = EXT2FLAGS_KERNEL2USER(*flags);
+
+  ENSC_FIX_IOCTL(rc);
+
+  return rc;
+}
diff --git a/lib/ioctl-getfilecontext.hc b/lib/ioctl-getfilecontext.hc
new file mode 100644 (file)
index 0000000..ab3423f
--- /dev/null
@@ -0,0 +1,38 @@
+// $Id: ioctl-getfilecontext.hc,v 1.4 2004/01/23 20:47:32 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "ext2fs.h"
+
+#include <sys/ioctl.h>
+
+static inline ALWAYSINLINE xid_t
+vc_X_get_filecontext(int fd)
+{
+  int          c;
+  int          rc = ioctl(fd, EXT2_IOC_GETCONTEXT, &c);
+
+  ENSC_FIX_IOCTL(rc);
+  
+  if (rc==-1) return VC_NOCTX;
+  else        return c;
+}
diff --git a/lib/ioctl-getxflg.hc b/lib/ioctl-getxflg.hc
new file mode 100644 (file)
index 0000000..776f322
--- /dev/null
@@ -0,0 +1,43 @@
+// $Id: ioctl-getxflg.hc,v 1.3 2004/01/22 13:36:30 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "ext2fs.h"
+
+#include <sys/ioctl.h>
+
+#define FIOC_GETXFLG    _IOR('x', 5, long)
+
+static inline ALWAYSINLINE int
+vc_X_get_xflg(int fd, long *flags)
+{
+  int          rc;
+  *flags = 0;
+  rc = ioctl(fd, FIOC_GETXFLG, flags);
+
+  if (rc<-1) {
+    errno = -rc;
+    rc    = -1;
+  }
+  
+  return rc;
+}
diff --git a/lib/ioctl-setext2flags.hc b/lib/ioctl-setext2flags.hc
new file mode 100644 (file)
index 0000000..d237b53
--- /dev/null
@@ -0,0 +1,56 @@
+// $Id: ioctl-setext2flags.hc,v 1.4 2004/01/23 20:47:32 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "ext2fs.h"
+
+#include <sys/ioctl.h>
+
+#ifndef EXT2_IMMUTABLE_FILE_FL
+#  define EXT2_IMMUTABLE_FILE_FL       0x00000010
+#endif
+
+#ifndef EXT2_IMMUTABLE_LINK_FL
+#  define EXT2_IMMUTABLE_LINK_FL       0x00008000
+#endif
+
+static inline ALWAYSINLINE int
+vc_X_set_ext2flags(int fd, long set_flags, long del_flags)
+{
+  long         old_flags = 0;
+  int          rc;
+
+  set_flags = EXT2FLAGS_USER2KERNEL(set_flags);
+  del_flags = EXT2FLAGS_USER2KERNEL(del_flags);
+  
+  if (del_flags!=-1) {
+    if (ioctl(fd, EXT2_IOC_GETFLAGS, &old_flags)==-1) return -1;
+    old_flags &= ~del_flags;
+  }
+
+  old_flags |= set_flags;
+  rc = ioctl(fd, EXT2_IOC_SETFLAGS, &old_flags);
+
+  ENSC_FIX_IOCTL(rc);
+
+  return rc;
+}
diff --git a/lib/ioctl-setfilecontext.hc b/lib/ioctl-setfilecontext.hc
new file mode 100644 (file)
index 0000000..e4c8082
--- /dev/null
@@ -0,0 +1,37 @@
+// $Id: ioctl-setfilecontext.hc,v 1.4 2004/01/23 20:47:32 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "ext2fs.h"
+
+#include <sys/ioctl.h>
+
+static inline ALWAYSINLINE int
+vc_X_set_filecontext(int fd, xid_t ctx)
+{
+  int  c  = ctx;
+  int  rc = ioctl(fd, EXT2_IOC_SETCONTEXT, &c);
+
+  ENSC_FIX_IOCTL(rc);
+  
+  return rc;
+}
diff --git a/lib/ioctl-setxflg.hc b/lib/ioctl-setxflg.hc
new file mode 100644 (file)
index 0000000..7f7001f
--- /dev/null
@@ -0,0 +1,39 @@
+// $Id: ioctl-setxflg.hc,v 1.4 2004/01/23 20:47:32 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "ext2fs.h"
+
+#include <sys/ioctl.h>
+
+#define FIOC_SETXFLG    _IOW('x', 6, long)
+
+static inline ALWAYSINLINE int
+vc_X_set_xflg(int fd, long flags)
+{
+  int          rc;
+  rc = ioctl(fd, FIOC_SETXFLG, &flags);
+
+  ENSC_FIX_IOCTL(rc);
+
+  return rc;
+}
diff --git a/lib/isdirectory.c b/lib/isdirectory.c
new file mode 100644 (file)
index 0000000..f70249c
--- /dev/null
@@ -0,0 +1,37 @@
+// $Id: isdirectory.c,v 1.1 2004/01/16 17:55:45 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "internal.h"
+
+#include <stdbool.h>
+#include <unistd.h>
+#include <sys/stat.h>
+
+bool
+utilvserver_isDirectory(char const *path, bool follow_link)
+{
+  struct stat          st;
+  if ( ( follow_link &&  stat(path, &st)==-1) ||
+       (!follow_link && lstat(path, &st)==-1) ) return false;
+
+  return S_ISDIR(st.st_mode);
+}
diff --git a/lib/isdynamicxid.c b/lib/isdynamicxid.c
new file mode 100644 (file)
index 0000000..a87504b
--- /dev/null
@@ -0,0 +1,30 @@
+// $Id: isdynamicxid.c,v 1.1 2004/03/16 03:42:14 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "linuxvirtual.h"
+
+bool
+vc_is_dynamic_xid(xid_t xid)
+{
+  return xid>=MIN_D_CONTEXT;
+}
diff --git a/lib/isfile.c b/lib/isfile.c
new file mode 100644 (file)
index 0000000..9cd6dd3
--- /dev/null
@@ -0,0 +1,37 @@
+// $Id: isfile.c,v 1.1 2004/08/19 13:56:47 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "internal.h"
+
+#include <stdbool.h>
+#include <unistd.h>
+#include <sys/stat.h>
+
+bool
+utilvserver_isFile(char const *path, bool follow_link)
+{
+  struct stat          st;
+  if ( ( follow_link &&  stat(path, &st)==-1) ||
+       (!follow_link && lstat(path, &st)==-1) ) return false;
+
+  return S_ISREG(st.st_mode);
+}
diff --git a/lib/islink.c b/lib/islink.c
new file mode 100644 (file)
index 0000000..3179e94
--- /dev/null
@@ -0,0 +1,36 @@
+// $Id: islink.c,v 1.1 2004/10/21 19:01:26 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "internal.h"
+
+#include <stdbool.h>
+#include <unistd.h>
+#include <sys/stat.h>
+
+bool
+utilvserver_isLink(char const *path)
+{
+  struct stat          st;
+  if (lstat(path, &st)==-1) return false;
+
+  return S_ISLNK(st.st_mode);
+}
diff --git a/lib/issupported.c b/lib/issupported.c
new file mode 100644 (file)
index 0000000..544403f
--- /dev/null
@@ -0,0 +1,49 @@
+// $Id: issupported.c,v 1.4 2005/05/19 18:05:18 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "assert.h"
+
+bool
+vc_isSupported(vcFeatureSet feature)
+{
+  int  ver = vc_get_version();
+  if (ver==-1) return false;
+
+  switch (feature) {
+    case vcFEATURE_COMPAT      :  return true;
+    case vcFEATURE_VSHELPER0   :  return ver >= 0x00010000 && ver < 0x00010010;
+    case vcFEATURE_VSHELPER    :  return ver >= 0x00010000;
+    case vcFEATURE_VKILL       :  return ver >= 0x00010004;
+    case vcFEATURE_RLIMIT      :  return ver >= 0x00010004;
+    case vcFEATURE_VINFO       :  return ver >= 0x00010010;
+    case vcFEATURE_VHI         :  return ver >= 0x00010010;
+    case vcFEATURE_IATTR       :  return ver >= 0x00010011;
+    case vcFEATURE_MIGRATE     :  return ver >= 0x00010012;
+    case vcFEATURE_NAMESPACE   :  return ver >= 0x00010012;
+    case vcFEATURE_VWAIT       :  return ver >= 0x00010025;
+    case vcFEATURE_SCHED       :  return ver >= 0x00020000;  // todo
+    default                    :  assert(false); 
+  }
+
+  return false;
+}
diff --git a/lib/issupportedstring.c b/lib/issupportedstring.c
new file mode 100644 (file)
index 0000000..f9dcfac
--- /dev/null
@@ -0,0 +1,49 @@
+// $Id: issupportedstring.c,v 1.4 2005/05/19 18:05:18 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "lib_internal/util-dimof.h"
+#include <strings.h>
+
+#define DECL(F) \
+  { vcFEATURE_ ## F, #F }
+
+static struct {
+    vcFeatureSet       feature;
+    char const *       name;
+} FEATURES[] = {
+  DECL(VKILL),   DECL(IATTR),     DECL(RLIMIT), DECL(COMPAT),
+  DECL(MIGRATE), DECL(NAMESPACE), DECL(SCHED),  DECL(VINFO),
+  DECL(VHI),     DECL(VSHELPER0), DECL(VSHELPER), DECL(VWAIT)
+};
+
+bool
+vc_isSupportedString(char const *str)
+{
+  size_t       i;
+  for (i=0; i<DIM_OF(FEATURES); ++i) {
+    if (strcasecmp(FEATURES[i].name, str)==0)
+      return vc_isSupported(FEATURES[i].feature);
+  }
+
+  return false;
+}
diff --git a/lib/listparser.hc b/lib/listparser.hc
new file mode 100644 (file)
index 0000000..ebf5fac
--- /dev/null
@@ -0,0 +1,102 @@
+// $Id: listparser.hc,v 1.5 2005/04/24 20:23:11 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#include <strings.h>
+
+#define TONUMBER_uint64(S,E,B)         strtoll(S,E,B)
+#define TONUMBER_uint32(S,E,B)         strtol (S,E,B)
+
+#define ISNUMBER(TYPE,SHORT)                                           \
+  static inline ALWAYSINLINE bool                                      \
+  isNumber_##SHORT(char const **str,size_t *len,TYPE *res,char end_chr) \
+  {                                                                    \
+    char       *err_ptr;                                               \
+    if (**str=='^') {                                                  \
+      *res = ((TYPE)(1)) << TONUMBER_##SHORT(++*str, &err_ptr, 0);     \
+      if (len) --*len;                                                 \
+    }                                                                  \
+    else                                                               \
+      *res = TONUMBER_##SHORT(*str, &err_ptr, 0);                      \
+    return err_ptr>*str && *err_ptr==end_chr;                          \
+  }
+
+
+#define LISTPARSER(TYPE,SHORT)                                         \
+  ISNUMBER(TYPE,SHORT)                                                 \
+  int                                                                  \
+  utilvserver_listparser_ ## SHORT(char const *str, size_t len,                \
+                                  char const **err_ptr,                \
+                                  size_t *err_len,                     \
+                                  TYPE * const flag,                   \
+                                  TYPE * const mask,                   \
+                                  TYPE (*func)(char const *,           \
+                                               size_t, bool *))        \
+  {                                                                    \
+    if (len==0) len = strlen(str);                                     \
+    for (;len>0;) {                                                    \
+      char const       *ptr = strchr(str, ',');                        \
+      size_t           cnt;                                            \
+      TYPE             tmp = 0;                                        \
+      bool             is_neg     = false;                             \
+      bool             failed     = false;                             \
+                                                                       \
+      while (mask!=0 && len>0 && (*str=='!' || *str=='~')) {           \
+       is_neg = !is_neg;                                               \
+       ++str;                                                          \
+       --len;                                                          \
+      }                                                                        \
+                                                                       \
+      cnt = ptr ? (size_t)(ptr-str) : len;                             \
+      if (cnt>=len) { cnt=len; len=0; }                                        \
+      else len-=(cnt+1);                                               \
+                                                                       \
+      if (cnt==0)                                                      \
+       failed = true;                                                  \
+      else if (mask!=0 &&                                              \
+              (strncasecmp(str,"all",cnt)==0 ||                        \
+               strncasecmp(str,"any",cnt)==0))                         \
+       tmp = ~(TYPE)(0);                                               \
+      else if (mask!=0 && strncasecmp(str,"none",cnt)==0) {}           \
+      else if (!isNumber_##SHORT(&str, &cnt, &tmp, str[cnt]))          \
+       tmp = (*func)(str,cnt, &failed);                                \
+                                                                       \
+      if (!failed) {                                                   \
+       if (!is_neg) *flag |=  tmp;                                     \
+       else         *flag &= ~tmp;                                     \
+       if (mask!=0) *mask |=  tmp;                                     \
+      }                                                                        \
+      else {                                                           \
+       if (err_ptr) *err_ptr = str;                                    \
+       if (err_len) *err_len = cnt;                                    \
+       return -1;                                                      \
+      }                                                                        \
+                                                                       \
+      if (ptr==0) break;                                               \
+      str = ptr+1;                                                     \
+    }                                                                  \
+                                                                       \
+    if (err_ptr) *err_ptr = 0;                                         \
+    if (err_len) *err_len = 0;                                         \
+    return 0;                                                          \
+  }
diff --git a/lib/listparser_uint32.c b/lib/listparser_uint32.c
new file mode 100644 (file)
index 0000000..0626110
--- /dev/null
@@ -0,0 +1,26 @@
+// $Id: listparser_uint32.c,v 1.1 2004/03/05 03:12:18 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "internal.h"
+#include "listparser.hc"
+
+LISTPARSER(uint_least32_t, uint32)
diff --git a/lib/listparser_uint64.c b/lib/listparser_uint64.c
new file mode 100644 (file)
index 0000000..8b7f70e
--- /dev/null
@@ -0,0 +1,26 @@
+// $Id: listparser_uint64.c,v 1.1 2004/03/05 03:12:18 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "internal.h"
+#include "listparser.hc"
+
+LISTPARSER(uint_least64_t, uint64)
diff --git a/lib/ncaps-net.c b/lib/ncaps-net.c
new file mode 100644 (file)
index 0000000..a2105d0
--- /dev/null
@@ -0,0 +1,54 @@
+// $Id: ncaps-net.c,v 1.2 2005/04/24 20:25:17 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <ensc@delenn.intern.sigma-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "internal.h"
+#include <lib_internal/util-dimof.h>
+
+#include <string.h>
+#include <assert.h>
+
+#define DECL(STR, VAL) { STR, sizeof(STR)-1, VAL }
+
+static struct Mapping_uint64 const VALUES[] = {
+#warning Add the 'ncap' values here
+  DECL("", 0)
+};
+
+uint_least64_t
+vc_text2ncap(char const *str, size_t len)
+{
+  ssize_t      idx = utilvserver_value2text_uint64(str, len,
+                                                   VALUES, DIM_OF(VALUES));
+  if (idx==-1) return 0;
+  else         return VALUES[idx].val;
+}
+
+char const *
+vc_loncap2text(uint_least64_t *val)
+{
+  ssize_t      idx = utilvserver_text2value_uint64(val,
+                                                   VALUES, DIM_OF(VALUES));
+
+  if (idx==-1) return 0;
+  else         return VALUES[idx].id;
+}
diff --git a/lib/ncaps_list-net.c b/lib/ncaps_list-net.c
new file mode 100644 (file)
index 0000000..c2cd50a
--- /dev/null
@@ -0,0 +1,47 @@
+// $Id: ncaps_list-net.c,v 1.2 2005/04/24 20:24:36 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "internal.h"
+
+#include <string.h>
+
+static uint_least64_t
+vc_text2ncap_err(char const *str, size_t len, bool *failed)
+{
+  uint_least64_t       res = vc_text2ncap(str, len);
+
+  if (res==0) *failed = true;
+  return res;
+}
+
+int
+vc_list2ncap(char const *str, size_t len,
+            struct vc_err_listparser *err,
+            struct vc_net_caps *caps)
+{
+  return utilvserver_listparser_uint64(str, len,
+                                      err ? &err->ptr : 0,
+                                      err ? &err->len : 0,
+                                      &caps->ncaps, &caps->cmask,
+                                      vc_text2ncap_err);
+}
diff --git a/lib/nflags-net.c b/lib/nflags-net.c
new file mode 100644 (file)
index 0000000..761faed
--- /dev/null
@@ -0,0 +1,54 @@
+// $Id: nflags-net.c,v 1.2 2005/04/24 20:25:17 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <ensc@delenn.intern.sigma-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "internal.h"
+#include <lib_internal/util-dimof.h>
+
+#include <string.h>
+#include <assert.h>
+
+#define DECL(STR, VAL) { STR, sizeof(STR)-1, VAL }
+
+static struct Mapping_uint64 const VALUES[] = {
+#warning Add the 'nflags' values here
+  DECL("", 0)
+};
+
+uint_least64_t
+vc_text2nflag(char const *str, size_t len)
+{
+  ssize_t      idx = utilvserver_value2text_uint64(str, len,
+                                                   VALUES, DIM_OF(VALUES));
+  if (idx==-1) return 0;
+  else         return VALUES[idx].val;
+}
+
+char const *
+vc_lonflag2text(uint_least64_t *val)
+{
+  ssize_t      idx = utilvserver_text2value_uint64(val,
+                                                   VALUES, DIM_OF(VALUES));
+
+  if (idx==-1) return 0;
+  else         return VALUES[idx].id;
+}
diff --git a/lib/nflags_list-net.c b/lib/nflags_list-net.c
new file mode 100644 (file)
index 0000000..acd0518
--- /dev/null
@@ -0,0 +1,47 @@
+// $Id: nflags_list-net.c,v 1.2 2005/04/24 20:24:36 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "internal.h"
+
+#include <string.h>
+
+static uint_least64_t
+vc_text2nflag_err(char const *str, size_t len, bool *failed)
+{
+  uint_least64_t       res = vc_text2nflag(str, len);
+
+  if (res==0) *failed = true;
+  return res;
+}
+
+int
+vc_list2nflag(char const *str, size_t len,
+            struct vc_err_listparser *err,
+            struct vc_net_flags *flags)
+{
+  return utilvserver_listparser_uint64(str, len,
+                                      err ? &err->ptr : 0,
+                                      err ? &err->len : 0,
+                                      &flags->flagword, &flags->mask,
+                                      vc_text2nflag_err);
+}
diff --git a/lib/parselimit.c b/lib/parselimit.c
new file mode 100644 (file)
index 0000000..dd225fb
--- /dev/null
@@ -0,0 +1,50 @@
+// $Id: parselimit.c,v 1.1 2004/03/05 17:20:31 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include <string.h>
+#include <stdlib.h>
+
+bool
+vc_parseLimit(char const *buf, vc_limit_t *res)
+{
+  char *       errptr;
+  
+  if (strncmp(buf, "inf", 3)==0) {
+    *res = VC_LIM_INFINITY;
+    return true;
+  }
+  
+  *res = strtoll(buf, &errptr, 0);
+
+  if (errptr!=buf) {
+    switch (*errptr) {
+      case 'M' :  *res *= 1024; /* fallthrough */
+      case 'K' :  *res *= 1024; ++errptr; break;
+      case 'm' :  *res *= 1000; /* fallthrough */
+      case 'k' :  *res *= 1000; ++errptr; break;
+      default  :  break;
+    }
+  }
+
+  return errptr!=buf && (*errptr=='\0' || *errptr=='\n');
+}
diff --git a/lib/personalityflag.c b/lib/personalityflag.c
new file mode 100644 (file)
index 0000000..2920a50
--- /dev/null
@@ -0,0 +1,76 @@
+// $Id: personalityflag.c,v 1.2 2005/07/15 19:40:15 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <ensc@delenn.intern.sigma-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "internal.h"
+#include <lib_internal/util-dimof.h>
+#include <linux/personality.h>
+
+#define DECL(VAL) { #VAL, sizeof(#VAL)-1, (VAL) }
+
+static struct Mapping_uint32 const VALUES[] = {
+#if HAVE_DECL_MMAP_PAGE_ZERO
+  DECL(MMAP_PAGE_ZERO),
+#endif
+
+#if HAVE_DECL_ADDR_LIMIT_32BIT  
+  DECL(ADDR_LIMIT_32BIT),
+#endif
+
+#if HAVE_DECL_SHORT_INODE
+  DECL(SHORT_INODE),
+#endif
+
+#if HAVE_DECL_WHOLE_SECONDS
+  DECL(WHOLE_SECONDS),
+#endif
+
+#if HAVE_DECL_STICKY_TIMEOUTS
+  DECL(STICKY_TIMEOUTS),
+#endif
+
+#if HAVE_DECL_ADDR_LIMIT_3GB
+  DECL(ADDR_LIMIT_3GB),
+#endif
+};
+
+uint_least32_t
+vc_text2personalityflag(char const *str, size_t len)
+{
+  ssize_t      idx = utilvserver_value2text_uint32(str, len,
+                                                   VALUES, DIM_OF(VALUES));
+
+  if (idx==-1) return 0;
+  else         return VALUES[idx].val;
+}
+
+char const *
+vc_lopersonality2text(uint_least32_t *val)
+{
+  ssize_t      idx = utilvserver_text2value_uint32(val, VALUES,
+                                                   DIM_OF(VALUES));
+
+  if (idx==-1) return 0;
+  else         return VALUES[idx].id;
+}
+
+  
diff --git a/lib/personalityflag_list.c b/lib/personalityflag_list.c
new file mode 100644 (file)
index 0000000..6903bf0
--- /dev/null
@@ -0,0 +1,50 @@
+// $Id: personalityflag_list.c,v 1.1 2005/04/28 17:51:43 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "internal.h"
+
+
+static uint_least32_t
+text2personalityflag_err(char const *str,
+                           size_t len, bool *failed)
+{
+  uint_least32_t               res = vc_text2personalityflag(str, len);
+  if (res==0) *failed = true;
+  return res;
+}
+
+int
+vc_list2personalityflag(char const *str, size_t len,
+                       uint_least32_t *personality,
+                       struct vc_err_listparser *err)
+{
+  return utilvserver_listparser_uint32(str, len,
+                                      err ? &err->ptr : 0,
+                                      err ? &err->len : 0,
+                                      personality, 0,
+                                      text2personalityflag_err);
+}
diff --git a/lib/personalitytype.c b/lib/personalitytype.c
new file mode 100644 (file)
index 0000000..47eaf61
--- /dev/null
@@ -0,0 +1,142 @@
+// $Id: personalitytype.c,v 1.2 2005/07/15 19:40:15 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "internal.h"
+#include <lib_internal/util-dimof.h>
+#include <linux/personality.h>
+
+#include <string.h>
+#include <strings.h>
+#include <assert.h>
+
+#define DECL(VAL) { #VAL, sizeof(#VAL)-1, (PER_ ## VAL) }
+
+static struct Mapping_uint32 const VALUES[] = {
+#if HAVE_DECL_PER_LINUX
+  DECL(LINUX),
+#endif
+
+#if HAVE_DECL_PER_LINUX_32BIT
+  DECL(LINUX_32BIT),
+#endif
+
+#if HAVE_DECL_PER_SVR4
+  DECL(SVR4),
+#endif
+
+#if HAVE_DECL_PER_SVR3
+  DECL(SVR3),
+#endif
+
+#if HAVE_DECL_PER_SCOSVR3
+  DECL(SCOSVR3),
+#endif
+
+#if HAVE_DECL_PER_OSR5
+  DECL(OSR5),
+#endif
+
+#if HAVE_DECL_PER_WYSEV386
+  DECL(WYSEV386),
+#endif
+
+#if HAVE_DECL_PER_ISCR4
+  DECL(ISCR4),
+#endif
+
+#if HAVE_DECL_PER_BSD
+  DECL(BSD),
+#endif
+
+#if HAVE_DECL_PER_SUNOS
+  DECL(SUNOS),
+#endif
+
+#if HAVE_DECL_PER_XENIX
+  DECL(XENIX),
+#endif
+
+#if HAVE_DECL_PER_LINUX32
+  DECL(LINUX32),
+#endif
+
+#if HAVE_DECL_PER_LINUX32_3GB
+  DECL(LINUX32_3GB),
+#endif
+
+#if HAVE_DECL_PER_IRIX32
+  DECL(IRIX32),
+#endif
+
+#if HAVE_DECL_PER_IRIXN32
+  DECL(IRIXN32),
+#endif
+
+#if HAVE_DECL_PER_IRIX64
+  DECL(IRIX64),
+#endif
+
+#if HAVE_DECL_PER_RISCOS
+  DECL(RISCOS),
+#endif
+
+#if HAVE_DECL_PER_SOLARIS
+  DECL(SOLARIS),
+#endif
+
+#if HAVE_DECL_PER_UW7
+  DECL(UW7),
+#endif
+
+#if HAVE_DECL_PER_HPUX
+  DECL(HPUX),
+#endif
+
+#if HAVE_DECL_PER_OSF4
+  DECL(OSF4),
+#endif
+
+};
+
+static char const *
+removePrefix(char const *str, size_t *len)
+{
+  if ((len==0 || *len==0 || *len>4) &&
+      strncasecmp("per_", str, 4)==0) {
+    if (len && *len>4) *len -= 4;
+    return str+4;
+  }
+  else
+    return str;
+}
+
+uint_least32_t
+vc_str2personalitytype(char const *str, size_t len)
+{
+  char const   *tmp = removePrefix(str, &len);
+  ssize_t      idx  = utilvserver_value2text_uint32(tmp, len,
+                                                    VALUES, DIM_OF(VALUES));
+
+  if (idx==-1) return VC_BAD_PERSONALITY;
+  else         return VALUES[idx].val;
+}
index 543683e..5204bf9 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: safechroot-internal.hc,v 1.1.2.1 2003/10/14 15:19:14 ensc Exp $    --*- c++ -*--
+// $Id: safechroot-internal.hc,v 1.2 2003/10/14 15:40:50 ensc Exp $    --*- c++ -*--
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 //  
diff --git a/lib/syscall-alternative.h b/lib/syscall-alternative.h
new file mode 100644 (file)
index 0000000..b301e39
--- /dev/null
@@ -0,0 +1,2336 @@
+
+#ifndef __syscall_retval
+#define __syscall_retval(v)    do { } while(0)
+#endif
+
+#ifndef __syscall_error
+#define __syscall_error(e)     do { errno = (e); } while(0)
+#endif
+
+#define        __check(pos, reg)                                               \
+       ".ifnc " pos ", " reg "\n\t"                                    \
+       ".err\n\t"                                                      \
+       ".endif\n\t"
+
+#ifndef __stringify0
+#define __stringify0(val)      #val
+#endif
+
+#ifndef __stringify
+#define __stringify(val)       __stringify0(val)
+#endif
+
+#define        __comment(name)                                                 \
+       "\t/* kernel sys_" #name "[" __stringify(__NR_##name) "] */"
+
+
+/*     *****************************************
+       ALPHA   ALPHA   ALPHA   ALPHA           *
+       alpha kernel interface                  */
+       
+#if    defined(__alpha__)
+
+/*     The Alpha calling convention doesn't use the stack until 
+       after the first six arguments have been passed in registers.
+       
+       scnr:   v0($0)
+       args:   a0($16), a1($17), a2($18), a3($19), a4($20), a5($21)
+       sret:   v0($0)
+       serr:   a3($19) (!=0, err=sret)
+*/
+
+
+#define __syscall_return(type, ret, err) do {                          \
+       __syscall_retval(ret);                                          \
+       if (err) {                                                      \
+               int __err = (ret);                                      \
+               __syscall_error(__err);                                 \
+               ret = -1;                                               \
+       }                                                               \
+       return (type) ret;                                              \
+} while (0)                            
+
+#define __syscall_regdef(name, reg)                                    \
+       register long __sc_##name __asm__ (reg)
+
+#define __syscall_regval(name, reg, val)                               \
+       register long __sc_##name __asm__ (reg) = (long)(val)
+       
+#define __syscall_clobbers                                             \
+       "$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8",                 \
+       "$22", "$23", "$24", "$25", "$27", "$28", "memory"              \
+
+
+#define _syscall0(type, name)                                          \
+type name(void)                                                                \
+{                                                                      \
+       long __sc_ret, __sc_err;                                        \
+       {                                                               \
+               __syscall_regval(v0, "$0", __NR_##name);                \
+               __syscall_regdef(a3, "$19");                            \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0%1%2", "$0$19$0")                            \
+                       "callsys" __comment(name)                       \
+                     : "=r"(__sc_v0), "=r"(__sc_a3)                    \
+                     : "0"(__sc_v0)                                    \
+                     : "$16", "$17", "$18", "$20", "$21",              \
+                       __syscall_clobbers                              \
+               );                                                      \
+               __sc_ret = __sc_v0;                                     \
+               __sc_err = __sc_a3;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_ret, __sc_err);                     \
+}
+
+#define _syscall1(type, name, type1, arg1)                             \
+type name(type1 arg1)                                                  \
+{                                                                      \
+       long __sc_ret, __sc_err;                                        \
+       {                                                               \
+               __syscall_regval(v0, "$0", __NR_##name);                \
+               __syscall_regval(a0, "$16", arg1);                      \
+               __syscall_regdef(a3, "$19");                            \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0%1%2%3", "$0$19$0$16")                       \
+                       "callsys" __comment(name)                       \
+                     : "=r"(__sc_v0), "=r"(__sc_a3)                    \
+                     : "0"(__sc_v0),                                   \
+                       "r"(__sc_a0)                                    \
+                     : "$17", "$18", "$20", "$21",                     \
+                       __syscall_clobbers                              \
+               );                                                      \
+               __sc_ret = __sc_v0;                                     \
+               __sc_err = __sc_a3;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_ret, __sc_err);                     \
+}
+
+#define _syscall2(type, name, type1, arg1, type2, arg2)                        \
+type name(type1 arg1, type2 arg2)                                      \
+{                                                                      \
+       long __sc_ret, __sc_err;                                        \
+       {                                                               \
+               __syscall_regval(v0, "$0", __NR_##name);                \
+               __syscall_regval(a0, "$16", arg1);                      \
+               __syscall_regval(a1, "$17", arg2);                      \
+               __syscall_regdef(a3, "$19");                            \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0%1%2%3%4", "$0$19$0$16$17")                  \
+                       "callsys" __comment(name)                       \
+                     : "=r"(__sc_v0), "=r"(__sc_a3)                    \
+                     : "0"(__sc_v0),                                   \
+                       "r"(__sc_a0), "r"(__sc_a1)                      \
+                     : "$18", "$20", "$21",                            \
+                       __syscall_clobbers                              \
+               );                                                      \
+               __sc_ret = __sc_v0;                                     \
+               __sc_err = __sc_a3;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_ret, __sc_err);                     \
+}
+
+#define _syscall3(type, name, type1, arg1, type2, arg2, type3, arg3)   \
+type name(type1 arg1, type2 arg2, type3 arg3)                          \
+{                                                                      \
+       long __sc_ret, __sc_err;                                        \
+       {                                                               \
+               __syscall_regval(v0, "$0", __NR_##name);                \
+               __syscall_regval(a0, "$16", arg1);                      \
+               __syscall_regval(a1, "$17", arg2);                      \
+               __syscall_regval(a2, "$18", arg3);                      \
+               __syscall_regdef(a3, "$19");                            \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0%1%2%3%4%5", "$0$19$0$16$17$18")             \
+                       "callsys" __comment(name)                       \
+                     : "=r"(__sc_v0), "=r"(__sc_a3)                    \
+                     : "0"(__sc_v0),                                   \
+                       "r"(__sc_a0), "r"(__sc_a1), "r"(__sc_a2)        \
+                     : "$20", "$21",                                   \
+                       __syscall_clobbers                              \
+               );                                                      \
+               __sc_ret = __sc_v0;                                     \
+               __sc_err = __sc_a3;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_ret, __sc_err);                     \
+}
+
+#define _syscall4(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                             type4, arg4)                              \
+type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4)             \
+{                                                                      \
+       long __sc_ret, __sc_err;                                        \
+       {                                                               \
+               __syscall_regval(v0, "$0", __NR_##name);                \
+               __syscall_regval(a0, "$16", arg1);                      \
+               __syscall_regval(a1, "$17", arg2);                      \
+               __syscall_regval(a2, "$18", arg3);                      \
+               __syscall_regval(a3, "$19", arg4);                      \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0%1%2%3%4%5%6", "$0$19$0$16$17$18$19")        \
+                       "callsys" __comment(name)                       \
+                     : "=r"(__sc_v0), "=r"(__sc_a3)                    \
+                     : "0"(__sc_v0),                                   \
+                       "r"(__sc_a0), "r"(__sc_a1), "r"(__sc_a2),       \
+                       "1"(__sc_a3)                                    \
+                     : "$20", "$21",                                   \
+                       __syscall_clobbers                              \
+               );                                                      \
+               __sc_ret = __sc_v0;                                     \
+               __sc_err = __sc_a3;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_ret, __sc_err);                     \
+} 
+
+#define _syscall5(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                             type4, arg4, type5, arg5)                 \
+type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \
+{                                                                      \
+       long __sc_ret, __sc_err;                                        \
+       {                                                               \
+               __syscall_regval(v0, "$0", __NR_##name);                \
+               __syscall_regval(a0, "$16", arg1);                      \
+               __syscall_regval(a1, "$17", arg2);                      \
+               __syscall_regval(a2, "$18", arg3);                      \
+               __syscall_regval(a3, "$19", arg4);                      \
+               __syscall_regval(a4, "$20", arg5);                      \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0%1%2%3%4%5%6%7", "$0$19$0$16$17$18$19$20")   \
+                       "callsys" __comment(name)                       \
+                     : "=r"(__sc_v0), "=r"(__sc_a3)                    \
+                     : "0"(__sc_v0),                                   \
+                       "r"(__sc_a0), "r"(__sc_a1), "r"(__sc_a2),       \
+                       "1"(__sc_a3), "r"(__sc_a4)                      \
+                     : "$21",                                          \
+                       __syscall_clobbers                              \
+               );                                                      \
+               __sc_ret = __sc_v0;                                     \
+               __sc_err = __sc_a3;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_ret, __sc_err);                     \
+}
+
+#define _syscall6(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                             type4, arg4, type5, arg5, type6, arg6)    \
+type name (type1 arg1, type2 arg2, type3 arg3,                         \
+          type4 arg4, type5 arg5, type6 arg6)                          \
+{                                                                      \
+       long __sc_ret, __sc_err;                                        \
+       {                                                               \
+               __syscall_regval(v0, "$0", __NR_##name);                \
+               __syscall_regval(a0, "$16", arg1);                      \
+               __syscall_regval(a1, "$17", arg2);                      \
+               __syscall_regval(a2, "$18", arg3);                      \
+               __syscall_regval(a3, "$19", arg4);                      \
+               __syscall_regval(a4, "$20", arg5);                      \
+               __syscall_regval(a5, "$21", arg6);                      \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0%1%2%3%4%5%6%7%8",                           \
+                       "$0$19$0$16$17$18$19$20$21")                    \
+                       "callsys" __comment(name)                       \
+                     : "=r"(__sc_v0), "=r"(__sc_a3)                    \
+                     : "0"(__sc_v0),                                   \
+                       "r"(__sc_a0), "r"(__sc_a1), "r"(__sc_a2),       \
+                       "1"(__sc_a3), "r"(__sc_a4), "r"(__sc_a5)        \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_ret = __sc_v0;                                     \
+               __sc_err = __sc_a3;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_ret, __sc_err);                     \
+}
+
+
+
+/*     *****************************************
+       ARM     ARM     ARM     ARM             *
+       arm kernel interface                    */
+
+#elif  defined(__arm__)
+
+/*     The Arm calling convention uses stack args after four arguments
+       but the Linux kernel gets up to seven arguments in registers.
+       
+       scnr:   imm
+       args:   a1(r0), a2(r1), a3(r2), a4(r3), v1(r4), v2(r5), 
+       sret:   a1(r0)
+       serr:   (err= sret > (unsigned)-EMAXERRNO)
+*/
+
+#ifndef EMAXERRNO
+#define EMAXERRNO   125
+#endif
+
+#define __syscall_errcon(res)                                          \
+       ((unsigned long)(res) >= (unsigned long)(-EMAXERRNO))
+
+#define __syscall_return(type, res) do {                               \
+       __syscall_retval(res);                                          \
+       if (__syscall_errcon(res)) {                                    \
+               int __err = -(res);                                     \
+               __syscall_error(__err);                                 \
+               res = -1;                                               \
+       }                                                               \
+       return (type) res;                                              \
+} while (0)                            
+
+#define __syscall_regdef(name, reg)                                    \
+       register int __sc_##name __asm__ (reg)
+
+#define __syscall_regval(name, reg, val)                               \
+       register int __sc_##name __asm__ (reg) = (int)(val)
+
+
+#define _syscall0(type, name)                                          \
+type name(void)                                                                \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regdef(a1, "r0");                             \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0", "r0")                                     \
+                       "swi %1" __comment(name)                        \
+                     : "=r"(__sc_a1)                                   \
+                     : "i"(__NR_##name)                                \
+                     : "memory"                                        \
+               );                                                      \
+               __sc_res = __sc_a1;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall1(type, name, type1, arg1)                             \
+type name(type1 arg1)                                                  \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a1, "r0", arg1);                       \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0%2", "r0r0")                                 \
+                       "swi %1" __comment(name)                        \
+                     : "=r"(__sc_a1)                                   \
+                     : "i"(__NR_##name),                               \
+                       "0"(__sc_a1)                                    \
+                     : "memory"                                        \
+               );                                                      \
+               __sc_res = __sc_a1;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall2(type, name, type1, arg1, type2, arg2)                        \
+type name(type1 arg1, type2 arg2)                                      \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a1, "r0", arg1);                       \
+               __syscall_regval(a2, "r1", arg2);                       \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0%2%3", "r0r0r1")                             \
+                       "swi %1" __comment(name)                        \
+                     : "=r"(__sc_a1)                                   \
+                     : "i"(__NR_##name),                               \
+                       "0"(__sc_a1), "r"(__sc_a2)                      \
+                     : "memory"                                        \
+               );                                                      \
+               __sc_res = __sc_a1;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall3(type, name, type1, arg1, type2, arg2, type3, arg3)   \
+type name(type1 arg1, type2 arg2, type3 arg3)                          \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a1, "r0", arg1);                       \
+               __syscall_regval(a2, "r1", arg2);                       \
+               __syscall_regval(a3, "r2", arg3);                       \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0%2%3%4", "r0r0r1r2")                         \
+                       "swi %1" __comment(name)                        \
+                     : "=r"(__sc_a1)                                   \
+                     : "i"(__NR_##name),                               \
+                       "0"(__sc_a1), "r"(__sc_a2), "r"(__sc_a3)        \
+                     : "memory"                                        \
+               );                                                      \
+               __sc_res = __sc_a1;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall4(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                             type4, arg4)                              \
+type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4)             \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a1, "r0", arg1);                       \
+               __syscall_regval(a2, "r1", arg2);                       \
+               __syscall_regval(a3, "r2", arg3);                       \
+               __syscall_regval(a4, "r3", arg4);                       \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0%2%3%4%5", "r0r0r1r2r3")                     \
+                       "swi %1" __comment(name)                        \
+                     : "=r"(__sc_a1)                                   \
+                     : "i"(__NR_##name),                               \
+                       "0"(__sc_a1), "r"(__sc_a2), "r"(__sc_a3),       \
+                       "r"(__sc_a4)                                    \
+                     : "memory"                                        \
+               );                                                      \
+               __sc_res = __sc_a1;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+} 
+
+#define _syscall5(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                             type4, arg4, type5, arg5)                 \
+type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a1, "r0", arg1);                       \
+               __syscall_regval(a2, "r1", arg2);                       \
+               __syscall_regval(a3, "r2", arg3);                       \
+               __syscall_regval(a4, "r3", arg4);                       \
+               __syscall_regval(v1, "r4", arg5);                       \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0%2%3%4%5%6", "r0r0r1r2r3r4")                 \
+                       "swi %1" __comment(name)                        \
+                     : "=r"(__sc_a1)                                   \
+                     : "i"(__NR_##name),                               \
+                       "0"(__sc_a1), "r"(__sc_a2), "r"(__sc_a3),       \
+                       "r"(__sc_a4), "r"(__sc_v1)                      \
+                     : "memory"                                        \
+               );                                                      \
+               __sc_res = __sc_a1;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall6(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                             type4, arg4, type5, arg5, type6, arg6)    \
+type name (type1 arg1, type2 arg2, type3 arg3,                         \
+          type4 arg4, type5 arg5, type6 arg6)                          \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a1, "r0", arg1);                       \
+               __syscall_regval(a2, "r1", arg2);                       \
+               __syscall_regval(a3, "r2", arg3);                       \
+               __syscall_regval(a4, "r3", arg4);                       \
+               __syscall_regval(v1, "r4", arg5);                       \
+               __syscall_regval(v2, "r5", arg6);                       \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0%2%3%4%5%6%7", "r0r0r1r2r3r4r5")             \
+                       "swi %1" __comment(name)                        \
+                     : "=r"(__sc_a1)                                   \
+                     : "i"(__NR_##name),                               \
+                       "0"(__sc_a1), "r"(__sc_a2), "r"(__sc_a3),       \
+                       "r"(__sc_a4), "r"(__sc_v1), "r"(__sc_v2)        \
+                     : "memory"                                        \
+               );                                                      \
+               __sc_res = __sc_a1;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+
+/*     *****************************************
+       CRIS    CRIS    CRIS    CRIS            *
+       cris v10 kernel interface               */
+
+#elif  defined(__cris__)
+
+/*     The Cris calling convention uses stack args after four arguments
+       but the Linux kernel gets up to six arguments in registers.
+       
+       scnr:   (r9)
+       args:   (r10), (r11), (r12), (r13), (mof), (srp), 
+       sret:   (r10)
+       serr:   (err= sret > (unsigned)-EMAXERRNO)
+*/
+
+#ifndef EMAXERRNO
+#define EMAXERRNO   125
+#endif
+
+#define __syscall_errcon(res)                                          \
+       ((unsigned long)(res) >= (unsigned long)(-EMAXERRNO))
+
+#define __syscall_return(type, res) do {                               \
+       __syscall_retval(res);                                          \
+       if (__syscall_errcon(res)) {                                    \
+               int __err = -(res);                                     \
+               __syscall_error(__err);                                 \
+               res = -1;                                               \
+       }                                                               \
+       return (type) res;                                              \
+} while (0)                            
+
+#define __syscall_regdef(name, reg)                                    \
+       register long __sc_##name __asm__ (reg)
+
+#define __syscall_regval(name, reg, val)                               \
+       register long __sc_##name __asm__ (reg) = (long)(val)
+
+#define _syscall0(type, name)                                          \
+type name(void)                                                                \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a0, "r9", __NR_##name);                \
+               __syscall_regdef(a1, "r10");                            \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0%1", "$r10$r9")                              \
+                       "break 13" __comment(name)                      \
+                     : "=r"(__sc_a1)                                   \
+                     : "r"(__sc_a0)                                    \
+                     : "memory", "srp", "r13", "r12", "r11"            \
+               );                                                      \
+               __sc_res = __sc_a1;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall1(type, name, type1, arg1)                             \
+type name(type1 arg1)                                                  \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a0, "r9", __NR_##name);                \
+               __syscall_regval(a1, "r10", arg1);                      \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0%1%2", "$r10$r9$r10")                        \
+                       "break 13" __comment(name)                      \
+                     : "=r"(__sc_a1)                                   \
+                     : "r"(__sc_a0),                                   \
+                       "0"(__sc_a1)                                    \
+                     : "memory", "srp", "r13", "r12", "r11"            \
+               );                                                      \
+               __sc_res = __sc_a1;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall2(type, name, type1, arg1, type2, arg2)                        \
+type name(type1 arg1, type2 arg2)                                      \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a0, "r9", __NR_##name);                \
+               __syscall_regval(a1, "r10", arg1);                      \
+               __syscall_regval(a2, "r11", arg2);                      \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0%1%2%3", "$r10$r9$r10$r11")                  \
+                       "break 13" __comment(name)                      \
+                     : "=r"(__sc_a1)                                   \
+                     : "r"(__sc_a0),                                   \
+                       "0"(__sc_a1), "r"(__sc_a2)                      \
+                     : "memory", "srp", "r13", "r12"                   \
+               );                                                      \
+               __sc_res = __sc_a1;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall3(type, name, type1, arg1, type2, arg2, type3, arg3)   \
+type name(type1 arg1, type2 arg2, type3 arg3)                          \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a0, "r9", __NR_##name);                \
+               __syscall_regval(a1, "r10", arg1);                      \
+               __syscall_regval(a2, "r11", arg2);                      \
+               __syscall_regval(a3, "r12", arg3);                      \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0%1%2%3%4", "$r10$r9$r10$r11$r12")            \
+                       "break 13" __comment(name)                      \
+                     : "=r"(__sc_a1)                                   \
+                     : "r"(__sc_a0),                                   \
+                       "0"(__sc_a1), "r"(__sc_a2), "r"(__sc_a3)        \
+                     : "memory", "srp", "r13"                          \
+               );                                                      \
+               __sc_res = __sc_a1;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall4(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                             type4, arg4)                              \
+type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4)             \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a0, "r9", __NR_##name);                \
+               __syscall_regval(a1, "r10", arg1);                      \
+               __syscall_regval(a2, "r11", arg2);                      \
+               __syscall_regval(a3, "r12", arg3);                      \
+               __syscall_regval(a4, "r13", arg4);                      \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0%1%2%3%4%5", "$r10$r9$r10$r11$r12$r13")      \
+                       "break 13" __comment(name)                      \
+                     : "=r"(__sc_a1)                                   \
+                     : "r"(__sc_a0),                                   \
+                       "0"(__sc_a1), "r"(__sc_a2), "r"(__sc_a3),       \
+                       "r"(__sc_a4)                                    \
+                     : "memory", "srp"                                 \
+               );                                                      \
+               __sc_res = __sc_a1;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+} 
+
+#define _syscall5(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                             type4, arg4, type5, arg5)                 \
+type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a0, "r9", __NR_##name);                \
+               __syscall_regval(a1, "r10", arg1);                      \
+               __syscall_regval(a2, "r11", arg2);                      \
+               __syscall_regval(a3, "r12", arg3);                      \
+               __syscall_regval(a4, "r13", arg4);                      \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0%1%2%3%4%5", "$r10$r9$r10$r11$r12$r13")      \
+                       "move %6,$mof\n\t"                              \
+                       "break 13" __comment(name)                      \
+                     : "=r"(__sc_a1)                                   \
+                     : "r"(__sc_a0),                                   \
+                       "0"(__sc_a1), "r"(__sc_a2), "r"(__sc_a3),       \
+                       "r"(__sc_a4),                                   \
+                       "g"((long)arg5)                                 \
+                     : "memory", "srp"                                 \
+               );                                                      \
+               __sc_res = __sc_a1;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall6(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                             type4, arg4, type5, arg5, type6, arg6)    \
+type name (type1 arg1, type2 arg2, type3 arg3,                         \
+          type4 arg4, type5 arg5, type6 arg6)                          \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a0, "r9", __NR_##name);                \
+               __syscall_regval(a1, "r10", arg1);                      \
+               __syscall_regval(a2, "r11", arg2);                      \
+               __syscall_regval(a3, "r12", arg3);                      \
+               __syscall_regval(a4, "r13", arg4);                      \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0%1%2%3%4%5", "$r10$r9$r10$r11$r12$r13")      \
+                       "move %6,$mof\n\t"                              \
+                       "move %7,$srp\n\t"                              \
+                       "break 13" __comment(name)                      \
+                     : "=r"(__sc_a1)                                   \
+                     : "r"(__sc_a0),                                   \
+                       "0"(__sc_a1), "r"(__sc_a2), "r"(__sc_a3),       \
+                       "r"(__sc_a4),                                   \
+                       "g"((long)arg5), "g"((long)arg6)                \
+                     : "memory"                                        \
+               );                                                      \
+               __sc_res = __sc_a1;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+
+/*     *****************************************
+       FRV     FRV     FRV     FRV             *
+       frv kernel interface            */
+
+#elif  defined(__frv__)
+
+#warning syscall arch frv not implemented yet
+
+
+/*     *****************************************
+       H8300   H8300   H8300   H8300           *
+       h8/300 kernel interface                 */
+
+#elif  defined(__h8300__)
+
+#warning syscall arch h8300 not implemented yet
+
+
+/*     *****************************************
+       I386    I386    I386    I386            *
+       i386 kernel interface                   */
+
+#elif  defined(__i386__)
+
+/*     The x86 calling convention uses stack args for all arguments,
+       but the Linux kernel passes the first six arguments in the
+       following registers: ebx, ecx, edx, esi, edi, ebp.
+       
+       scnr:   a0(eax)
+       args:   a1(ebx), a2(ecx), a3(edx), a4(esi), a5(edi), a6(ebp) 
+       sret:   a0(eax)
+       serr:   (err= sret > (unsigned)-EMAXERRNO)
+*/
+
+#ifndef EMAXERRNO
+#define EMAXERRNO   129
+#endif
+
+#define __syscall_errcon(res)                                          \
+       ((unsigned long)(res) >= (unsigned long)(-EMAXERRNO))
+
+#define __syscall_return(type, res) do {                               \
+       __syscall_retval(res);                                          \
+       if (__syscall_errcon(res)) {                                    \
+               int __err = -(res);                                     \
+               __syscall_error(__err);                                 \
+               res = -1;                                               \
+       }                                                               \
+       return (type) res;                                              \
+} while (0)                            
+
+#define __syscall_regdef(name, reg)                                    \
+       register long __sc_##name __asm__ (reg)
+
+#define __syscall_regval(name, reg, val)                               \
+       register long __sc_##name __asm__ (reg) = (long)(val)
+
+
+#define _syscall0(type, name)                                          \
+type name(void)                                                                \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a0, "eax", __NR_##name);               \
+                                                                       \
+               __asm__ volatile (                                      \
+                __check("%0%1", "%%eax%%eax")                          \
+                       "int $0x80" __comment(name)                     \
+                     : "=a"(__sc_a0)                                   \
+                     : "0"(__sc_a0)                                    \
+                     : "memory"                                        \
+               );                                                      \
+               __sc_res = __sc_a0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall1(type, name, type1, arg1)                             \
+type name(type1 arg1)                                                  \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a0, "eax", __NR_##name);               \
+               __syscall_regval(a1, "ebx", arg1);                      \
+                                                                       \
+               __asm__ volatile (                                      \
+                __check("%0%1%2", "%%eax%%eax%%ebx")                   \
+                       "int $0x80" __comment(name)                     \
+                     : "=a"(__sc_a0)                                   \
+                     : "0"(__sc_a0),                                   \
+                       "r" (__sc_a1)                                   \
+                     : "memory"                                        \
+               );                                                      \
+               __sc_res = __sc_a0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall2(type, name, type1, arg1, type2, arg2)                        \
+type name(type1 arg1, type2 arg2)                                      \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a0, "eax", __NR_##name);               \
+               __syscall_regval(a1, "ebx", arg1);                      \
+               __syscall_regval(a2, "ecx", arg2);                      \
+                                                                       \
+               __asm__ volatile (                                      \
+                __check("%0%1%2%3", "%%eax%%eax%%ebx%%ecx")            \
+                       "int $0x80" __comment(name)                     \
+                     : "=a"(__sc_a0)                                   \
+                     : "0"(__sc_a0),                                   \
+                       "r" (__sc_a1), "r"(__sc_a2)                     \
+                     : "memory"                                        \
+               );                                                      \
+               __sc_res = __sc_a0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall3(type, name, type1, arg1, type2, arg2, type3, arg3)   \
+type name(type1 arg1, type2 arg2, type3 arg3)                          \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a0, "eax", __NR_##name);               \
+               __syscall_regval(a1, "ebx", arg1);                      \
+               __syscall_regval(a2, "ecx", arg2);                      \
+               __syscall_regval(a3, "edx", arg3);                      \
+                                                                       \
+               __asm__ volatile (                                      \
+                __check("%0%1%2%3%4", "%%eax%%eax%%ebx%%ecx%%edx")             \
+                       "int $0x80" __comment(name)                     \
+                     : "=a"(__sc_a0)                                   \
+                     : "0"(__sc_a0),                                   \
+                       "r" (__sc_a1), "r"(__sc_a2), "r" (__sc_a3)      \
+                     : "memory"                                        \
+               );                                                      \
+               __sc_res = __sc_a0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+} 
+
+
+#define _syscall4(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                             type4, arg4)                              \
+type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4)             \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a0, "eax", __NR_##name);               \
+               __syscall_regval(a1, "ebx", arg1);                      \
+               __syscall_regval(a2, "ecx", arg2);                      \
+               __syscall_regval(a3, "edx", arg3);                      \
+               __syscall_regval(a4, "esi", arg4);                      \
+                                                                       \
+               __asm__ volatile (                                      \
+                __check("%0%1%2%3%4%5",                                        \
+                       "%%eax%%eax%%ebx%%ecx%%edx%%esi")               \
+                       "int $0x80" __comment(name)                     \
+                     : "=a"(__sc_a0)                                   \
+                     : "0"(__sc_a0),                                   \
+                       "r" (__sc_a1), "r"(__sc_a2), "r" (__sc_a3),     \
+                       "r" (__sc_a4)                                   \
+                     : "memory"                                        \
+               );                                                      \
+               __sc_res = __sc_a0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+} 
+
+#define _syscall5(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                             type4, arg4, type5, arg5)                 \
+type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a0, "eax", __NR_##name);               \
+               __syscall_regval(a1, "ebx", arg1);                      \
+               __syscall_regval(a2, "ecx", arg2);                      \
+               __syscall_regval(a3, "edx", arg3);                      \
+               __syscall_regval(a4, "esi", arg4);                      \
+               __syscall_regval(a5, "edi", arg5);                      \
+                                                                       \
+               __asm__ volatile (                                      \
+                __check("%0%1%2%3%4%5%6",                              \
+                       "%%eax%%eax%%ebx%%ecx%%edx%%esi%%edi")          \
+                       "int $0x80" __comment(name)                     \
+                     : "=a"(__sc_a0)                                   \
+                     : "0"(__sc_a0),                                   \
+                       "r" (__sc_a1), "r"(__sc_a2), "r" (__sc_a3),     \
+                       "r" (__sc_a4), "r"(__sc_a5)                     \
+                     : "memory"                                        \
+               );                                                      \
+               __sc_res = __sc_a0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall6(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                             type4, arg4, type5, arg5, type6, arg6)    \
+type name (type1 arg1, type2 arg2, type3 arg3,                         \
+          type4 arg4, type5 arg5, type6 arg6)                          \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a0, "eax", __NR_##name);               \
+               __syscall_regval(a1, "ebx", arg1);                      \
+               __syscall_regval(a2, "ecx", arg2);                      \
+               __syscall_regval(a3, "edx", arg3);                      \
+               __syscall_regval(a4, "esi", arg4);                      \
+               __syscall_regval(a5, "edi", arg5);                      \
+               __syscall_regval(a6, "ebp", arg6);                      \
+                                                                       \
+               __asm__ volatile (                                      \
+                __check("%0%1%2%3%4%5%6%7",                            \
+                       "%%eax%%eax%%ebx%%ecx%%edx%%esi%%edi%%ebp")     \
+                       "int $0x80" __comment(name)                     \
+                     : "=a"(__sc_a0)                                   \
+                     : "0"(__sc_a0),                                   \
+                       "r" (__sc_a1), "r"(__sc_a2), "r" (__sc_a3),     \
+                       "r" (__sc_a4), "r"(__sc_a5), "r" (__sc_a6)      \
+                     : "memory"                                        \
+               );                                                      \
+               __sc_res = __sc_a0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+
+/*     *****************************************
+       IA64    IA64    IA64    IA64            *
+       ia64 kernel interface                   */
+
+#elif  defined(__ia64__)
+
+#warning syscall arch ia64 not implemented yet
+
+
+/*     *****************************************
+       M32R    IM32R   M32R    M32R            *
+       m32r kernel interface                   */
+
+#elif  defined(__m32r__)
+
+#warning syscall arch m32r not implemented yet
+
+
+/*     *****************************************
+       M68K    M68K    M68K    M68K            *
+       m68k kernel interface                   */
+
+#elif  defined(__m68000__)
+
+#warning syscall arch m68k not implemented yet
+
+
+/*     *****************************************
+       MIPS    MIPS    MIPS    MIPS            *
+       mips kernel interface                   */
+
+#elif defined(__mips__)
+
+#warning syscall arch mips not implemented yet
+
+
+/*     *****************************************
+       HPPA    HPPA    HPPA    HPPA            *
+       hppa kernel interface                   */
+
+#elif defined(__hppa__)
+
+/*     The hppa calling convention uses r26-r23 for the first 4
+       arguments, the rest is spilled onto the stack. However the
+       Linux kernel passes the first six arguments in the registers
+       r26-r21. 
+       
+       The system call number MUST ALWAYS be loaded in the delay 
+       slot of the ble instruction, or restarting system calls 
+       WILL NOT WORK.
+       
+       scnr:   r20
+       args:   r26, r25, r24, r23, r22, r21 
+       sret:   r28
+       serr:   (err= sret > (unsigned)-EMAXERRNO)
+       clob:   r1, r2, r4, r20, r29, r31, memory
+*/
+
+#ifndef EMAXERRNO
+#define EMAXERRNO   4095
+#endif
+
+#define __syscall_errcon(res)                                          \
+       ((unsigned long)(res) >= (unsigned long)(-EMAXERRNO))
+
+#define __syscall_return(type, res) do {                               \
+       __syscall_retval(res);                                          \
+       if (__syscall_errcon(res)) {                                    \
+               int __err = -(res);                                     \
+               __syscall_error(__err);                                 \
+               res = -1;                                               \
+       }                                                               \
+       return (type) res;                                              \
+} while (0)                            
+
+#define __syscall_clobbers                                             \
+       "%r1", "%r2", "%r4", "%r20", "%r29", "%r31", "memory" 
+
+#define __syscall_regdef(name, reg)                                    \
+       register unsigned long __sc_##name __asm__ (reg)
+
+#define __syscall_regval(name, reg, val)                               \
+       register unsigned long __sc_##name __asm__ (reg) =              \
+       (unsigned long)(val)
+
+
+#define _syscall0(type, name)                                          \
+type name(void)                                                                \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regdef(ret, "r28");                           \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0", "%%r28")                                  \
+                       "ble  0x100(%%sr2, %%r0)"                       \
+                               __comment(name) "\n\t"                  \
+                       "ldi %1, %%r20"                                 \
+                     : "=r"(__sc_ret)                                  \
+                     : "i"(__NR_##name)                                \
+                     : "%r21", "%r22", "%r23",                         \
+                       "%r24", "%r25", "%r26",                         \
+                       __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_ret;                                    \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall1(type, name, type1, arg1)                             \
+type name(type1 arg1)                                                  \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regdef(ret, "r28");                           \
+               __syscall_regval(a1, "r26", arg1);                      \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0%2", "%%r28%%r26")                           \
+                       "ble  0x100(%%sr2, %%r0)"                       \
+                               __comment(name) "\n\t"                  \
+                       "ldi %1, %%r20"                                 \
+                     : "=r"(__sc_ret)                                  \
+                     : "i"(__NR_##name),                               \
+                       "r"(__sc_a1)                                    \
+                     : "%r21", "%r22", "%r23", "%r24", "%r25",         \
+                       __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_ret;                                    \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall2(type, name, type1, arg1, type2, arg2)                        \
+type name(type1 arg1, type2 arg2)                                      \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regdef(ret, "r28");                           \
+               __syscall_regval(a1, "r26", arg1);                      \
+               __syscall_regval(a2, "r25", arg2);                      \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0%2%3", "%%r28%%r26%%r25")                    \
+                       "ble  0x100(%%sr2, %%r0)"                       \
+                               __comment(name) "\n\t"                  \
+                       "ldi %1, %%r20"                                 \
+                     : "=r"(__sc_ret)                                  \
+                     : "i"(__NR_##name),                               \
+                       "r"(__sc_a1), "r"(__sc_a2)                      \
+                     : "%r21", "%r22", "%r23", "%r24",                 \
+                       __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_ret;                                    \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall3(type, name, type1, arg1, type2, arg2, type3, arg3)   \
+type name(type1 arg1, type2 arg2, type3 arg3)                          \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regdef(ret, "r28");                           \
+               __syscall_regval(a1, "r26", arg1);                      \
+               __syscall_regval(a2, "r25", arg2);                      \
+               __syscall_regval(a3, "r24", arg3);                      \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0%2%3%4", "%%r28%%r26%%r25%%r24")             \
+                       "ble  0x100(%%sr2, %%r0)"                       \
+                               __comment(name) "\n\t"                  \
+                       "ldi %1, %%r20"                                 \
+                     : "=r"(__sc_ret)                                  \
+                     : "i"(__NR_##name),                               \
+                       "r"(__sc_a1), "r"(__sc_a2), "r"(__sc_a3)        \
+                     : "%r21", "%r22", "%r23",                         \
+                       __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_ret;                                    \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+} 
+
+#define _syscall4(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                             type4, arg4)                              \
+type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4)             \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regdef(ret, "r28");                           \
+               __syscall_regval(a1, "r26", arg1);                      \
+               __syscall_regval(a2, "r25", arg2);                      \
+               __syscall_regval(a3, "r24", arg3);                      \
+               __syscall_regval(a4, "r23", arg4);                      \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0%2%3%4%5", "%%r28%%r26%%r25%%r24%%r23")      \
+                       "ble  0x100(%%sr2, %%r0)"                       \
+                               __comment(name) "\n\t"                  \
+                       "ldi %1, %%r20"                                 \
+                     : "=r"(__sc_ret)                                  \
+                     : "i"(__NR_##name),                               \
+                       "r"(__sc_a1), "r"(__sc_a2), "r"(__sc_a3),       \
+                       "r"(__sc_a4)                                    \
+                     : "%r21", "%r22",                                 \
+                       __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_ret;                                    \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+} 
+
+#define _syscall5(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                             type4, arg4, type5, arg5)                 \
+type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regdef(ret, "r28");                           \
+               __syscall_regval(a1, "r26", arg1);                      \
+               __syscall_regval(a2, "r25", arg2);                      \
+               __syscall_regval(a3, "r24", arg3);                      \
+               __syscall_regval(a4, "r23", arg4);                      \
+               __syscall_regval(a5, "r22", arg5);                      \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0%2%3%4%5%6",                                 \
+                       "%%r28%%r26%%r25%%r24%%r23%%r22")               \
+                       "ble  0x100(%%sr2, %%r0)"                       \
+                               __comment(name) "\n\t"                  \
+                       "ldi %1, %%r20"                                 \
+                     : "=r"(__sc_ret)                                  \
+                     : "i"(__NR_##name),                               \
+                       "r"(__sc_a1), "r"(__sc_a2), "r"(__sc_a3),       \
+                       "r"(__sc_a4), "r"(__sc_a5)                      \
+                     : "%r21",                                         \
+                       __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_ret;                                    \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall6(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                       type4, arg4, type5, arg5, type6, arg6)          \
+type name (type1 arg1, type2 arg2, type3 arg3,                         \
+          type4 arg4, type5 arg5, type6 arg6)                          \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regdef(ret, "r28");                           \
+               __syscall_regval(a1, "r26", arg1);                      \
+               __syscall_regval(a2, "r25", arg2);                      \
+               __syscall_regval(a3, "r24", arg3);                      \
+               __syscall_regval(a4, "r23", arg4);                      \
+               __syscall_regval(a5, "r22", arg5);                      \
+               __syscall_regval(a6, "r21", arg6);                      \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+               __check("%0%2%3%4%5%6%7",                               \
+                       "%%r28%%r26%%r25%%r24%%r23%%r22%%r21")          \
+                       "ble  0x100(%%sr2, %%r0)"                       \
+                               __comment(name) "\n\t"                  \
+                       "ldi %1, %%r20"                                 \
+                     : "=r"(__sc_ret)                                  \
+                     : "i"(__NR_##name),                               \
+                       "r"(__sc_a1), "r"(__sc_a2), "r"(__sc_a3),       \
+                       "r"(__sc_a4), "r"(__sc_a5), "r"(__sc_a6)        \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_ret;                                    \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+
+
+/*     *****************************************
+       PPC64   PPC64   PPC64   PPC64           *
+       ppc64 kernel interface                  */
+
+#elif defined(__powerpc64__)
+
+#warning syscall arch ppc64 not implemented yet
+
+
+/*     *****************************************
+       PPC     PPC     PPC     PPC             *
+       ppc kernel interface                    */
+
+#elif defined(__powerpc__)
+
+/*      The powerpc calling convention uses r3-r10 to pass the first
+       eight arguments, the remainder is spilled onto the stack.
+        
+        scnr:   r0
+        args:   a1(r3), a2(r4), a3(r5), a4(r6), a5(r7), a6(r8)
+        sret:   r3
+        serr:   (carry)
+       call:   sc
+       clob:   cr0, ctr
+*/
+
+#define __syscall_errcon(err)  (err & 0x10000000)
+
+#define __syscall_return(type, ret, err) do {                          \
+       __syscall_retval(ret);                                          \
+       if (__syscall_errcon(err)) {                                    \
+               int __err = (ret);                                      \
+               __syscall_error(__err);                                 \
+               ret = -1;                                               \
+       }                                                               \
+       return (type) ret;                                              \
+} while (0)                            
+
+#define __syscall_regdef(name, reg)                                    \
+       register long __sc_##name __asm__ (reg)
+
+#define __syscall_regval(name, reg, val)                               \
+       register long __sc_##name __asm__ (reg) = (long)(val)
+
+#define __syscall_clobbers                                             \
+       "r9", "r10", "r11", "r12",                                      \
+       "cr0", "ctr", "memory"
+
+
+#define _syscall0(type, name)                                          \
+type name(void)                                                                \
+{                                                                      \
+       long __sc_ret, __sc_err;                                \
+       {                                                               \
+               __syscall_regval(r0, "r0", __NR_##name);                \
+               __syscall_regdef(a1, "r3");                             \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+                       "sc" __comment(name) "\n\t"                     \
+                       "mfcr %0"                                       \
+                     : "=r"(__sc_r0), "=r"(__sc_a1)                    \
+                     : "0"(__sc_r0)                                    \
+                     : "r4", "r5", "r6", "r7", "r8",                   \
+                       __syscall_clobbers                              \
+               );                                                      \
+               __sc_ret = __sc_a1;                                     \
+               __sc_err = __sc_r0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_ret, __sc_err);                     \
+}
+
+#define _syscall1(type, name, type1, arg1)                             \
+type name(type1 arg1)                                                  \
+{                                                                      \
+       unsigned long __sc_ret, __sc_err;                               \
+       {                                                               \
+               __syscall_regval(r0, "r0", __NR_##name);                \
+               __syscall_regval(a1, "r3", arg1);                       \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+                       "sc" __comment(name) "\n\t"                     \
+                       "mfcr %0"                                       \
+                     : "=r"(__sc_r0), "=r"(__sc_a1)                    \
+                     : "0"(__sc_r0),                                   \
+                       "1"(__sc_a1)                                    \
+                     : "r4", "r5", "r6", "r7", "r8",                   \
+                       __syscall_clobbers                              \
+               );                                                      \
+               __sc_ret = __sc_a1;                                     \
+               __sc_err = __sc_r0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_ret, __sc_err);                     \
+}
+
+#define _syscall2(type, name, type1, arg1, type2, arg2)                        \
+type name(type1 arg1, type2 arg2)                                      \
+{                                                                      \
+       unsigned long __sc_ret, __sc_err;                               \
+       {                                                               \
+               __syscall_regval(r0, "r0", __NR_##name);                \
+               __syscall_regval(a1, "r3", arg1);                       \
+               __syscall_regval(a2, "r4", arg2);                       \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+                       "sc" __comment(name) "\n\t"                     \
+                       "mfcr %0"                                       \
+                     : "=r"(__sc_r0), "=r"(__sc_a1)                    \
+                     : "0"(__sc_r0),                                   \
+                       "1"(__sc_a1), "r"(__sc_a2)                      \
+                     : "r5", "r6", "r7", "r8",                         \
+                       __syscall_clobbers                              \
+               );                                                      \
+               __sc_ret = __sc_a1;                                     \
+               __sc_err = __sc_r0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_ret, __sc_err);                     \
+}
+
+#define _syscall3(type, name, type1, arg1, type2, arg2, type3, arg3)   \
+type name(type1 arg1, type2 arg2, type3 arg3)                          \
+{                                                                      \
+       unsigned long __sc_ret, __sc_err;                               \
+       {                                                               \
+               __syscall_regval(r0, "r0", __NR_##name);                \
+               __syscall_regval(a1, "r3", arg1);                       \
+               __syscall_regval(a2, "r4", arg2);                       \
+               __syscall_regval(a3, "r5", arg3);                       \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+                       "sc" __comment(name) "\n\t"                     \
+                       "mfcr %0"                                       \
+                     : "=r"(__sc_r0), "=r"(__sc_a1)                    \
+                     : "0"(__sc_r0),                                   \
+                       "1"(__sc_a1), "r"(__sc_a2), "r"(__sc_a3)        \
+                     : "r6", "r7", "r8",                               \
+                       __syscall_clobbers                              \
+               );                                                      \
+               __sc_ret = __sc_a1;                                     \
+               __sc_err = __sc_r0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_ret, __sc_err);                     \
+} 
+
+
+#define _syscall4(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                             type4, arg4)                              \
+type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4)             \
+{                                                                      \
+       unsigned long __sc_ret, __sc_err;                               \
+       {                                                               \
+               __syscall_regval(r0, "r0", __NR_##name);                \
+               __syscall_regval(a1, "r3", arg1);                       \
+               __syscall_regval(a2, "r4", arg2);                       \
+               __syscall_regval(a3, "r5", arg3);                       \
+               __syscall_regval(a4, "r6", arg4);                       \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+                       "sc" __comment(name) "\n\t"                     \
+                       "mfcr %0"                                       \
+                     : "=r"(__sc_r0), "=r"(__sc_a1)                    \
+                     : "0"(__sc_r0),                                   \
+                       "1"(__sc_a1), "r"(__sc_a2), "r"(__sc_a3),       \
+                       "r"(__sc_a4)                                    \
+                     : "r7", "r8",                                     \
+                       __syscall_clobbers                              \
+               );                                                      \
+               __sc_ret = __sc_a1;                                     \
+               __sc_err = __sc_r0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_ret, __sc_err);                     \
+} 
+
+#define _syscall5(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                             type4, arg4, type5, arg5)                 \
+type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \
+{                                                                      \
+       unsigned long __sc_ret, __sc_err;                               \
+       {                                                               \
+               __syscall_regval(r0, "r0", __NR_##name);                \
+               __syscall_regval(a1, "r3", arg1);                       \
+               __syscall_regval(a2, "r4", arg2);                       \
+               __syscall_regval(a3, "r5", arg3);                       \
+               __syscall_regval(a4, "r6", arg4);                       \
+               __syscall_regval(a5, "r7", arg5);                       \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+                       "sc" __comment(name) "\n\t"                     \
+                       "mfcr %0"                                       \
+                     : "=r"(__sc_r0), "=r"(__sc_a1)                    \
+                     : "0"(__sc_r0),                                   \
+                       "1"(__sc_a1), "r"(__sc_a2), "r"(__sc_a3),       \
+                       "r"(__sc_a4), "r"(__sc_a5)                      \
+                     : "r8",                                           \
+                       __syscall_clobbers                              \
+               );                                                      \
+               __sc_ret = __sc_a1;                                     \
+               __sc_err = __sc_r0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_ret, __sc_err);                     \
+}
+
+#define _syscall6(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                             type4, arg4, type5, arg5, type6, arg6)    \
+type name (type1 arg1, type2 arg2, type3 arg3,                         \
+          type4 arg4, type5 arg5, type6 arg6)                          \
+{                                                                      \
+       unsigned long __sc_ret, __sc_err;                               \
+       {                                                               \
+               __syscall_regval(r0, "r0", __NR_##name);                \
+               __syscall_regval(a1, "r3", arg1);                       \
+               __syscall_regval(a2, "r4", arg2);                       \
+               __syscall_regval(a3, "r5", arg3);                       \
+               __syscall_regval(a4, "r6", arg4);                       \
+               __syscall_regval(a5, "r7", arg5);                       \
+               __syscall_regval(a6, "r8", arg6);                       \
+                                                                       \
+               __asm__ __volatile__ (                                  \
+                       "sc" __comment(name) "\n\t"                     \
+                       "mfcr %0"                                       \
+                     : "=r"(__sc_r0), "=r"(__sc_a1)                    \
+                     : "0"(__sc_r0),                                   \
+                       "1"(__sc_a1), "r"(__sc_a2), "r"(__sc_a3),       \
+                       "r"(__sc_a4), "r"(__sc_a5), "r"(__sc_a6)        \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_ret = __sc_a1;                                     \
+               __sc_err = __sc_r0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_ret, __sc_err);                     \
+}
+
+
+/*     *****************************************
+       S390X   S390X   S390X   S390X           *
+       s390x kernel interface                  */
+
+#elif defined(__s390x__)
+
+/*      The s390x calling convention passes the first five arguments
+       in r2-r6, the remainder is spilled onto the stack. However 
+       the Linux kernel passes the first six arguments in r2-r7.
+       
+        scnr:   imm, r1 
+        args:   a1(r2), a2(r3), a3(r4), a4(r5), a5(r6), a6(r7)
+        sret:   r2
+        serr:   (err= sret > (unsigned)-EMAXERRNO)
+       call:   svc
+       clob:   memory
+*/
+
+#ifndef EMAXERRNO
+#define EMAXERRNO   4095
+#endif
+
+#define __syscall_errcon(res)                                           \
+        ((unsigned long)(res) >= (unsigned long)(-EMAXERRNO))
+
+#define __syscall_return(type, res) do {                                \
+        __syscall_retval(res);                                          \
+        if (__syscall_errcon(res)) {                                    \
+                int __err = -(res);                                     \
+                __syscall_error(__err);                                 \
+                res = -1;                                               \
+        }                                                               \
+        return (type) res;                                              \
+} while (0)                             
+
+#define __syscall_regdef(name, reg)                                    \
+       register unsigned long __sc_##name __asm__ (reg)
+
+#define __syscall_regval(name, reg, val)                               \
+       register unsigned long __sc_##name __asm__ (reg) =              \
+               (unsigned long)(val)
+
+#define __syscall_clobbers     "memory"
+
+
+#define _syscall0(type, name)                                          \
+type name(void)                                                                \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(nr, "r1", __NR_##name);                \
+               __syscall_regdef(a1, "r2");                             \
+                                                                       \
+               __asm__ volatile (                                      \
+               __check("%0%1", "%%r2%%r1")                             \
+                       "svc  0" __comment(name)                        \
+                     : "=r"(__sc_a1)                                   \
+                     : "r"(__sc_nr)                                    \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_a1;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall1(type, name, type1, arg1)                             \
+type name(type1 arg1)                                                  \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(nr, "r1", __NR_##name);                \
+               __syscall_regval(a1, "r2", arg1);                       \
+                                                                       \
+               __asm__ volatile (                                      \
+               __check("%0%1%2", "%%r2%%r1%%r2")                       \
+                       "svc  0" __comment(name)                        \
+                     : "=r"(__sc_a1)                                   \
+                     : "r"(__sc_nr),                                   \
+                       "0"(__sc_a1)                                    \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_a1;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall2(type, name, type1, arg1, type2, arg2)                        \
+type name(type1 arg1, type2 arg2)                                      \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(nr, "r1", __NR_##name);                \
+               __syscall_regval(a1, "r2", arg1);                       \
+               __syscall_regval(a2, "r3", arg2);                       \
+                                                                       \
+               __asm__ volatile (                                      \
+               __check("%0%1%2%3", "%%r2%%r1%%r2%%r3")                 \
+                       "svc  0" __comment(name)                        \
+                     : "=r"(__sc_a1)                                   \
+                     : "r"(__sc_nr),                                   \
+                       "0"(__sc_a1), "r"(__sc_a2)                      \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_a1;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall3(type, name, type1, arg1, type2, arg2, type3, arg3)   \
+type name(type1 arg1, type2 arg2, type3 arg3)                          \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(nr, "r1", __NR_##name);                \
+               __syscall_regval(a1, "r2", arg1);                       \
+               __syscall_regval(a2, "r3", arg2);                       \
+               __syscall_regval(a3, "r4", arg3);                       \
+                                                                       \
+               __asm__ volatile (                                      \
+               __check("%0%1%2%3%4", "%%r2%%r1%%r2%%r3%%r4")           \
+                       "svc  0" __comment(name)                        \
+                     : "=r"(__sc_a1)                                   \
+                     : "r"(__sc_nr),                                   \
+                       "0"(__sc_a1), "r"(__sc_a2), "r"(__sc_a3)        \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_a1;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+} 
+
+#define _syscall4(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                             type4, arg4)                              \
+type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4)             \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(nr, "r1", __NR_##name);                \
+               __syscall_regval(a1, "r2", arg1);                       \
+               __syscall_regval(a2, "r3", arg2);                       \
+               __syscall_regval(a3, "r4", arg3);                       \
+               __syscall_regval(a4, "r5", arg4);                       \
+                                                                       \
+               __asm__ volatile (                                      \
+               __check("%0%1%2%3%4%5", "%%r2%%r1%%r2%%r3%%r4%%r5")     \
+                       "svc  0" __comment(name)                        \
+                     : "=r"(__sc_a1)                                   \
+                     : "r"(__sc_nr),                                   \
+                       "0"(__sc_a1), "r"(__sc_a2), "r"(__sc_a3),       \
+                       "r"(__sc_a4)                                    \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_a1;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+} 
+
+#define _syscall5(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                             type4, arg4, type5, arg5)                 \
+type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(nr, "r1", __NR_##name);                \
+               __syscall_regval(a1, "r2", arg1);                       \
+               __syscall_regval(a2, "r3", arg2);                       \
+               __syscall_regval(a3, "r4", arg3);                       \
+               __syscall_regval(a4, "r5", arg4);                       \
+               __syscall_regval(a5, "r6", arg5);                       \
+                                                                       \
+               __asm__ volatile (                                      \
+               __check("%0%1%2%3%4%5%6",                               \
+                       "%%r2%%r1%%r2%%r3%%r4%%r5%%r6")                 \
+                       "svc  0" __comment(name)                        \
+                     : "=r"(__sc_a1)                                   \
+                     : "r"(__sc_nr),                                   \
+                       "0"(__sc_a1), "r"(__sc_a2), "r"(__sc_a3),       \
+                       "r"(__sc_a4), "r"(__sc_a5)                      \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_a1;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall6(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                       type4, arg4, type5, arg5, type6, arg6)          \
+type name (type1 arg1, type2 arg2, type3 arg3,                         \
+          type4 arg4, type5 arg5, type6 arg6)                          \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(nr, "r1", __NR_##name);                \
+               __syscall_regval(a1, "r2", arg1);                       \
+               __syscall_regval(a2, "r3", arg2);                       \
+               __syscall_regval(a3, "r4", arg3);                       \
+               __syscall_regval(a4, "r5", arg4);                       \
+               __syscall_regval(a5, "r6", arg5);                       \
+               __syscall_regval(a6, "r7", arg6);                       \
+                                                                       \
+               __asm__ volatile (                                      \
+               __check("%0%1%2%3%4%5%6%7",                             \
+                       "%%r2%%r1%%r2%%r3%%r4%%r5%%r6%%r7")             \
+                       "svc  0" __comment(name)                        \
+                     : "=r"(__sc_a1)                                   \
+                     : "r"(__sc_nr),                                   \
+                       "0"(__sc_a1), "r"(__sc_a2), "r"(__sc_a3),       \
+                       "r"(__sc_a4), "r"(__sc_a5), "r"(__sc_a6)        \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_a1;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+
+
+/*     *****************************************
+       S390    S390    S390    S390            *
+       s390 kernel interface                   */
+
+#elif defined(__s390__)
+
+#warning syscall arch s390 not implemented yet
+
+
+/*     *****************************************
+       SH      SH      SH      SH              *
+       sh kernel interface                     */
+
+#elif defined(__sh__) && !defined(__SH5__)
+
+#warning syscall arch sh not implemented yet
+
+
+/*     *****************************************
+       SH64    SH64    SH64    SH64            *
+       sh64 kernel interface                   */
+
+#elif defined(__sh__) && defined(__SH5__)
+
+#warning syscall arch sh64 not implemented yet
+
+
+/*     *****************************************
+       SPARC64 SPARC64 SPARC64 SPARC64         *
+       sparc64 kernel interface                */
+
+#elif defined(__sparc__) && defined(__arch64__)
+
+/*      The sparc64 calling convention uses o0-o5 to pass the first six
+       arguments (mapped via register windows).
+        
+        scnr:   g1
+        args:   o0, o1, o2, o3, o4, o5 
+        sret:   o0
+        serr:   (carry)
+       call:   t 0x10
+       clob:   g1-g6, g7?, o7?, f0-f31, cc
+*/
+
+#ifndef EMAXERRNO
+#define EMAXERRNO   515
+#endif
+
+#define __syscall_errcon(res)                                           \
+        ((unsigned long)(res) >= (unsigned long)(-EMAXERRNO))
+
+#define __syscall_return(type, res) do {                                \
+        __syscall_retval(res);                                          \
+        if (__syscall_errcon(res)) {                                    \
+                int __err = -(res);                                     \
+                __syscall_error(__err);                                 \
+                res = -1;                                               \
+        }                                                               \
+        return (type) res;                                              \
+} while (0)                             
+
+#define __syscall_clobbers                                             \
+       "g2", "g3", "g4", "g5", "g6",                                   \
+       "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8",           \
+       "f9", "f10", "f11", "f12", "f13", "f14", "f15", "f16",          \
+       "f17", "f18", "f19", "f20", "f21", "f22", "f23", "f24",         \
+       "f25", "f26", "f27", "f28", "f29", "f30", "f31", "f32",         \
+       "f34", "f36", "f38", "f40", "f42", "f44", "f46", "f48",         \
+       "f50", "f52", "f54", "f56", "f58", "f60", "f62",                \
+       "cc", "memory" 
+
+#define __syscall_regdef(name, reg)                                    \
+       register long __sc_##name __asm__ (reg)
+
+#define __syscall_regval(name, reg, val)                               \
+       register long __sc_##name __asm__ (reg) = (long)(val)
+
+#define _syscall0(type, name)                                          \
+type name(void)                                                                \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(g1, "g1", __NR_##name);                \
+               __syscall_regdef(o0, "o0");                             \
+                                                                       \
+               __asm__ volatile (                                      \
+                       "ta 0x6d" __comment(name) "\n\t"                \
+                       "bcs,a,pt %%xcc,1f\n\t"                         \
+                       "sub %%g0,%%o0,%%o0\n"                          \
+                       "1:"                                            \
+                     : "=r"(__sc_o0)                                   \
+                     : "r"(__sc_g1)                                    \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_o0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall1(type, name, type1, arg1)                             \
+type name(type1 arg1)                                                  \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(g1, "g1", __NR_##name);                \
+               __syscall_regval(o0, "o0", arg1);                       \
+                                                                       \
+               __asm__ volatile (                                      \
+                       "ta 0x6d" __comment(name) "\n\t"                \
+                       "bcs,a,pt %%xcc,1f\n\t"                         \
+                       "sub %%g0,%%o0,%%o0\n"                          \
+                       "1:"                                            \
+                     : "=r"(__sc_o0)                                   \
+                     : "r"(__sc_g1),                                   \
+                       "0"(__sc_o0)                                    \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_o0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall2(type, name, type1, arg1, type2, arg2)                        \
+type name(type1 arg1, type2 arg2)                                      \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(g1, "g1", __NR_##name);                \
+               __syscall_regval(o0, "o0", arg1);                       \
+               __syscall_regval(o1, "o1", arg2);                       \
+                                                                       \
+               __asm__ volatile (                                      \
+                       "ta 0x6d" __comment(name) "\n\t"                \
+                       "bcs,a,pt %%xcc,1f\n\t"                         \
+                       "sub %%g0,%%o0,%%o0\n"                          \
+                       "1:"                                            \
+                     : "=r"(__sc_o0)                                   \
+                     : "r"(__sc_g1),                                   \
+                       "0"(__sc_o0), "r"(__sc_o1)                      \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_o0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall3(type, name, type1, arg1, type2, arg2, type3, arg3)   \
+type name(type1 arg1, type2 arg2, type3 arg3)                          \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(g1, "g1", __NR_##name);                \
+               __syscall_regval(o0, "o0", arg1);                       \
+               __syscall_regval(o1, "o1", arg2);                       \
+               __syscall_regval(o2, "o2", arg3);                       \
+                                                                       \
+               __asm__ volatile (                                      \
+                       "ta 0x6d" __comment(name) "\n\t"                \
+                       "bcs,a,pt %%xcc,1f\n\t"                         \
+                       "sub %%g0,%%o0,%%o0\n"                          \
+                       "1:"                                            \
+                     : "=r"(__sc_o0)                                   \
+                     : "r"(__sc_g1),                                   \
+                       "0"(__sc_o0), "r"(__sc_o1), "r"(__sc_o2)        \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_o0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+} 
+
+#define _syscall4(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                             type4, arg4)                              \
+type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4)             \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(g1, "g1", __NR_##name);                \
+               __syscall_regval(o0, "o0", arg1);                       \
+               __syscall_regval(o1, "o1", arg2);                       \
+               __syscall_regval(o2, "o2", arg3);                       \
+               __syscall_regval(o3, "o3", arg4);                       \
+                                                                       \
+               __asm__ volatile (                                      \
+                       "ta 0x6d" __comment(name) "\n\t"                \
+                       "bcs,a,pt %%xcc,1f\n\t"                         \
+                       "sub %%g0,%%o0,%%o0\n"                          \
+                       "1:"                                            \
+                     : "=r"(__sc_o0)                                   \
+                     : "r"(__sc_g1),                                   \
+                       "0"(__sc_o0), "r"(__sc_o1), "r"(__sc_o2),       \
+                       "r"(__sc_o3)                                    \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_o0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+} 
+
+#define _syscall5(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                             type4, arg4, type5, arg5)                 \
+type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(g1, "g1", __NR_##name);                \
+               __syscall_regval(o0, "o0", arg1);                       \
+               __syscall_regval(o1, "o1", arg2);                       \
+               __syscall_regval(o2, "o2", arg3);                       \
+               __syscall_regval(o3, "o3", arg4);                       \
+               __syscall_regval(o4, "o4", arg5);                       \
+                                                                       \
+               __asm__ volatile (                                      \
+                       "ta 0x6d" __comment(name) "\n\t"                \
+                       "bcs,a,pt %%xcc,1f\n\t"                         \
+                       "sub %%g0,%%o0,%%o0\n"                          \
+                       "1:"                                            \
+                     : "=r"(__sc_o0)                                   \
+                     : "r"(__sc_g1),                                   \
+                       "0"(__sc_o0), "r"(__sc_o1), "r"(__sc_o2),       \
+                       "r"(__sc_o3), "r"(__sc_o4)                      \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_o0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall6(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                       type4, arg4, type5, arg5, type6, arg6)          \
+type name (type1 arg1, type2 arg2, type3 arg3,                         \
+          type4 arg4, type5 arg5, type6 arg6)                          \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(g1, "g1", __NR_##name);                \
+               __syscall_regval(o0, "o0", arg1);                       \
+               __syscall_regval(o1, "o1", arg2);                       \
+               __syscall_regval(o2, "o2", arg3);                       \
+               __syscall_regval(o3, "o3", arg4);                       \
+               __syscall_regval(o4, "o4", arg5);                       \
+               __syscall_regval(o5, "o5", arg6);                       \
+                                                                       \
+               __asm__ volatile (                                      \
+                       "ta 0x6d" __comment(name) "\n\t"                \
+                       "bcs,a,pt %%xcc,1f\n\t"                         \
+                       "sub %%g0,%%o0,%%o0\n"                          \
+                       "1:"                                            \
+                     : "=r"(__sc_o0)                                   \
+                     : "r"(__sc_g1),                                   \
+                       "0"(__sc_o0), "r"(__sc_o1), "r"(__sc_o2),       \
+                       "r"(__sc_o3), "r"(__sc_o4), "r"(__sc_o5)        \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_o0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+
+/*     *****************************************
+       SPARC   SPARC   SPARC   SPARC           *
+       sparc kernel interface                  */
+
+#elif defined(__sparc__)
+
+/*      The sparc calling convention uses o0-o5 to pass the first six
+       arguments (mapped via register windows).
+        
+        scnr:   g1
+        args:   o0, o1, o2, o3, o4, o5 
+        sret:   o0
+        serr:   (carry)
+       call:   t 0x10
+       clob:   g1-g6, g7?, o7?, f0-f31, cc
+*/
+
+#ifndef EMAXERRNO
+#define EMAXERRNO   515
+#endif
+
+#define __syscall_errcon(res)                                           \
+        ((unsigned long)(res) >= (unsigned long)(-EMAXERRNO))
+
+#define __syscall_return(type, res) do {                                \
+        __syscall_retval(res);                                          \
+        if (__syscall_errcon(res)) {                                    \
+                int __err = -(res);                                     \
+                __syscall_error(__err);                                 \
+                res = -1;                                               \
+        }                                                               \
+        return (type) res;                                              \
+} while (0)                             
+
+#define __syscall_clobbers                                             \
+       "g2", "g3", "g4", "g5", "g6",                                   \
+       "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8",           \
+       "f9", "f10", "f11", "f12", "f13", "f14", "f15", "f16",          \
+       "f17", "f18", "f19", "f20", "f21", "f22", "f23", "f24",         \
+       "f25", "f26", "f27", "f28", "f29", "f30", "f31",                \
+       "cc", "memory" 
+
+#define __syscall_regdef(name, reg)                                    \
+       register long __sc_##name __asm__ (reg)
+
+#define __syscall_regval(name, reg, val)                               \
+       register long __sc_##name __asm__ (reg) = (long)(val)
+
+#define _syscall0(type, name)                                          \
+type name(void)                                                                \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(g1, "g1", __NR_##name);                \
+               __syscall_regdef(o0, "o0");                             \
+                                                                       \
+               __asm__ volatile (                                      \
+                       "t 0x10" __comment(name) "\n\t"                 \
+                       "bcs,a 1f\n\t"                                  \
+                       "sub %%g0,%%o0,%%o0\n"                          \
+                       "1:"                                            \
+                     : "=r"(__sc_o0)                                   \
+                     : "r"(__sc_g1)                                    \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_o0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall1(type, name, type1, arg1)                             \
+type name(type1 arg1)                                                  \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(g1, "g1", __NR_##name);                \
+               __syscall_regval(o0, "o0", arg1);                       \
+                                                                       \
+               __asm__ volatile (                                      \
+                       "t 0x10" __comment(name) "\n\t"                 \
+                       "bcs,a 1f\n\t"                                  \
+                       "sub %%g0,%%o0,%%o0\n"                          \
+                       "1:"                                            \
+                     : "=r"(__sc_o0)                                   \
+                     : "r"(__sc_g1),                                   \
+                       "0"(__sc_o0)                                    \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_o0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall2(type, name, type1, arg1, type2, arg2)                        \
+type name(type1 arg1, type2 arg2)                                      \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(g1, "g1", __NR_##name);                \
+               __syscall_regval(o0, "o0", arg1);                       \
+               __syscall_regval(o1, "o1", arg2);                       \
+                                                                       \
+               __asm__ volatile (                                      \
+                       "t 0x10" __comment(name) "\n\t"                 \
+                       "bcs,a 1f\n\t"                                  \
+                       "sub %%g0,%%o0,%%o0\n"                          \
+                       "1:"                                            \
+                     : "=r"(__sc_o0)                                   \
+                     : "r"(__sc_g1),                                   \
+                       "0"(__sc_o0), "r"(__sc_o1)                      \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_o0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall3(type, name, type1, arg1, type2, arg2, type3, arg3)   \
+type name(type1 arg1, type2 arg2, type3 arg3)                          \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(g1, "g1", __NR_##name);                \
+               __syscall_regval(o0, "o0", arg1);                       \
+               __syscall_regval(o1, "o1", arg2);                       \
+               __syscall_regval(o2, "o2", arg3);                       \
+                                                                       \
+               __asm__ volatile (                                      \
+                       "t 0x10" __comment(name) "\n\t"                 \
+                       "bcs,a 1f\n\t"                                  \
+                       "sub %%g0,%%o0,%%o0\n"                          \
+                       "1:"                                            \
+                     : "=r"(__sc_o0)                                   \
+                     : "r"(__sc_g1),                                   \
+                       "0"(__sc_o0), "r"(__sc_o1), "r"(__sc_o2)        \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_o0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+} 
+
+#define _syscall4(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                             type4, arg4)                              \
+type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4)             \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(g1, "g1", __NR_##name);                \
+               __syscall_regval(o0, "o0", arg1);                       \
+               __syscall_regval(o1, "o1", arg2);                       \
+               __syscall_regval(o2, "o2", arg3);                       \
+               __syscall_regval(o3, "o3", arg4);                       \
+                                                                       \
+               __asm__ volatile (                                      \
+                       "t 0x10" __comment(name) "\n\t"                 \
+                       "bcs,a 1f\n\t"                                  \
+                       "sub %%g0,%%o0,%%o0\n"                          \
+                       "1:"                                            \
+                     : "=r"(__sc_o0)                                   \
+                     : "r"(__sc_g1),                                   \
+                       "0"(__sc_o0), "r"(__sc_o1), "r"(__sc_o2),       \
+                       "r"(__sc_o3)                                    \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_o0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+} 
+
+#define _syscall5(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                             type4, arg4, type5, arg5)                 \
+type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(g1, "g1", __NR_##name);                \
+               __syscall_regval(o0, "o0", arg1);                       \
+               __syscall_regval(o1, "o1", arg2);                       \
+               __syscall_regval(o2, "o2", arg3);                       \
+               __syscall_regval(o3, "o3", arg4);                       \
+               __syscall_regval(o4, "o4", arg5);                       \
+                                                                       \
+               __asm__ volatile (                                      \
+                       "t 0x10" __comment(name) "\n\t"                 \
+                       "bcs,a 1f\n\t"                                  \
+                       "sub %%g0,%%o0,%%o0\n"                          \
+                       "1:"                                            \
+                     : "=r"(__sc_o0)                                   \
+                     : "r"(__sc_g1),                                   \
+                       "0"(__sc_o0), "r"(__sc_o1), "r"(__sc_o2),       \
+                       "r"(__sc_o3), "r"(__sc_o4)                      \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_o0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall6(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                       type4, arg4, type5, arg5, type6, arg6)          \
+type name (type1 arg1, type2 arg2, type3 arg3,                         \
+          type4 arg4, type5 arg5, type6 arg6)                          \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(g1, "g1", __NR_##name);                \
+               __syscall_regval(o0, "o0", arg1);                       \
+               __syscall_regval(o1, "o1", arg2);                       \
+               __syscall_regval(o2, "o2", arg3);                       \
+               __syscall_regval(o3, "o3", arg4);                       \
+               __syscall_regval(o4, "o4", arg5);                       \
+               __syscall_regval(o5, "o5", arg6);                       \
+                                                                       \
+               __asm__ volatile (                                      \
+               __check("%0%1%2%3%4%5", "$o0$g1$o0$o1$o2$o3$o4$o5$o6")  \
+                       "t 0x10" __comment(name) "\n\t"                 \
+                       "bcs,a 1f\n\t"                                  \
+                       "sub %%g0,%%o0,%%o0\n"                          \
+                       "1:"                                            \
+                     : "=r"(__sc_o0)                                   \
+                     : "r"(__sc_g1),                                   \
+                       "0"(__sc_o0), "r"(__sc_o1), "r"(__sc_o2),       \
+                       "r"(__sc_o3), "r"(__sc_o4), "r"(__sc_o5)        \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_o0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+
+/*     *****************************************
+       V850    V850    V850    V850            *
+       v850 kernel interface                   */
+
+#elif defined(__v850__)
+
+#warning syscall arch v850 not implemented yet
+
+
+/*     *****************************************
+       X86_64  X86_64  X86_64  X86_64          *
+       x86_64 kernel interface                 */
+
+#elif defined(__x86_64__)
+
+/*      The x86_64 calling convention uses rdi, rsi, rdx, rcx, r8, r9
+        but the Linux kernel interface uses rdi, rsi, rdx, r10, r8, r9.
+        
+        scnr:   a0(rax)
+        args:   a1(rdi), a2(rsi), a3(rdx), a4(r10), a5(r8), a6(r9) 
+        sret:   a0(rax)
+        serr:   (err= sret > (unsigned)-EMAXERRNO)
+       call:   syscall
+       clob:   rcx, r11
+*/
+
+#ifndef EMAXERRNO
+#define EMAXERRNO   4095
+#endif
+
+#define __syscall_errcon(res)                                           \
+        ((unsigned long)(res) >= (unsigned long)(-EMAXERRNO))
+
+#define __syscall_return(type, res) do {                                \
+        __syscall_retval(res);                                          \
+        if (__syscall_errcon(res)) {                                    \
+                int __err = -(res);                                     \
+                __syscall_error(__err);                                 \
+                res = -1;                                               \
+        }                                                               \
+        return (type) res;                                              \
+} while (0)                             
+
+#define __syscall_clobbers                                             \
+       "cc", "r11", "rcx", "memory" 
+
+#define __syscall_regdef(name, reg)                                    \
+       register long __sc_##name __asm__ (reg)
+
+#define __syscall_regval(name, reg, val)                               \
+       register long __sc_##name __asm__ (reg) = (long)(val)
+
+
+#define _syscall0(type, name)                                          \
+type name(void)                                                                \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a0, "rax", __NR_##name);               \
+                                                                       \
+               __asm__ volatile (                                      \
+               __check("%0%1", "%%rax%%rax")                           \
+                       "syscall" __comment(name)                       \
+                     : "=a"(__sc_a0)                                   \
+                     : "0"(__sc_a0)                                    \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_a0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall1(type, name, type1, arg1)                             \
+type name(type1 arg1)                                                  \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a0, "rax", __NR_##name);               \
+               __syscall_regval(a1, "rdi", arg1);                      \
+                                                                       \
+               __asm__ volatile (                                      \
+               __check("%0%1%2", "%%rax%%rax%%rdi")                    \
+                       "syscall" __comment(name)                       \
+                     : "=a"(__sc_a0)                                   \
+                     : "0"(__sc_a0),                                   \
+                       "r" (__sc_a1)                                   \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_a0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall2(type, name, type1, arg1, type2, arg2)                        \
+type name(type1 arg1, type2 arg2)                                      \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a0, "rax", __NR_##name);               \
+               __syscall_regval(a1, "rdi", arg1);                      \
+               __syscall_regval(a2, "rsi", arg2);                      \
+                                                                       \
+               __asm__ volatile (                                      \
+               __check("%0%1%2%3", "%%rax%%rax%%rdi%%rsi")             \
+                       "syscall" __comment(name)                       \
+                     : "=a"(__sc_a0)                                   \
+                     : "0"(__sc_a0),                                   \
+                       "r" (__sc_a1), "r"(__sc_a2)                     \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_a0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall3(type, name, type1, arg1, type2, arg2, type3, arg3)   \
+type name(type1 arg1, type2 arg2, type3 arg3)                          \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a0, "rax", __NR_##name);               \
+               __syscall_regval(a1, "rdi", arg1);                      \
+               __syscall_regval(a2, "rsi", arg2);                      \
+               __syscall_regval(a3, "rdx", arg3);                      \
+                                                                       \
+               __asm__ volatile (                                      \
+               __check("%0%1%2%3%4", "%%rax%%rax%%rdi%%rsi%%rdx")      \
+                       "syscall" __comment(name)                       \
+                     : "=a"(__sc_a0)                                   \
+                     : "0"(__sc_a0),                                   \
+                       "r" (__sc_a1), "r"(__sc_a2), "r" (__sc_a3)      \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_a0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+} 
+
+
+#define _syscall4(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                             type4, arg4)                              \
+type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4)             \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a0, "rax", __NR_##name);               \
+               __syscall_regval(a1, "rdi", arg1);                      \
+               __syscall_regval(a2, "rsi", arg2);                      \
+               __syscall_regval(a3, "rdx", arg3);                      \
+               __syscall_regval(a4, "r10", arg4);                      \
+                                                                       \
+               __asm__ volatile (                                      \
+               __check("%0%1%2%3%4%5",                                 \
+                       "%%rax%%rax%%rdi%%rsi%%rdx%%r10")               \
+                       "syscall" __comment(name)                       \
+                     : "=a"(__sc_a0)                                   \
+                     : "0"(__sc_a0),                                   \
+                       "r" (__sc_a1), "r"(__sc_a2), "r" (__sc_a3),     \
+                       "r" (__sc_a4)                                   \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_a0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+} 
+
+#define _syscall5(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                             type4, arg4, type5, arg5)                 \
+type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a0, "rax", __NR_##name);               \
+               __syscall_regval(a1, "rdi", arg1);                      \
+               __syscall_regval(a2, "rsi", arg2);                      \
+               __syscall_regval(a3, "rdx", arg3);                      \
+               __syscall_regval(a4, "r10", arg4);                      \
+               __syscall_regval(a5, "r8", arg5);                       \
+                                                                       \
+               __asm__ volatile (                                      \
+               __check("%0%1%2%3%4%5%6",                               \
+                       "%%rax%%rax%%rdi%%rsi%%rdx%%r10%%r8")           \
+                       "syscall" __comment(name)                       \
+                     : "=a"(__sc_a0)                                   \
+                     : "0"(__sc_a0),                                   \
+                       "r" (__sc_a1), "r"(__sc_a2), "r" (__sc_a3),     \
+                       "r" (__sc_a4), "r"(__sc_a5)                     \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_a0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+#define _syscall6(type, name, type1, arg1, type2, arg2, type3, arg3,   \
+                       type4, arg4, type5, arg5, type6, arg6)          \
+type name (type1 arg1, type2 arg2, type3 arg3,                         \
+           type4 arg4, type5 arg5, type6 arg6)                         \
+{                                                                      \
+       long __sc_res;                                                  \
+       {                                                               \
+               __syscall_regval(a0, "rax", __NR_##name);               \
+               __syscall_regval(a1, "rdi", arg1);                      \
+               __syscall_regval(a2, "rsi", arg2);                      \
+               __syscall_regval(a3, "rdx", arg3);                      \
+               __syscall_regval(a4, "r10", arg4);                      \
+               __syscall_regval(a5, "r8", arg5);                       \
+               __syscall_regval(a6, "r9", arg6);                       \
+                                                                       \
+               __asm__ volatile (                                      \
+               __check("%0%1%2%3%4%5%6%7",                             \
+                       "%%rax%%rax%%rdi%%rsi%%rdx%%r10%%r8%%r9")       \
+                       "syscall" __comment(name)                       \
+                     : "=a"(__sc_a0)                                   \
+                     : "0"(__sc_a0),                                   \
+                       "r" (__sc_a1), "r"(__sc_a2), "r" (__sc_a3),     \
+                       "r" (__sc_a4), "r"(__sc_a5), "r" (__sc_a6)      \
+                     : __syscall_clobbers                              \
+               );                                                      \
+               __sc_res = __sc_a0;                                     \
+       }                                                               \
+       __syscall_return(type, __sc_res);                               \
+}
+
+
+#endif
+
index 8bbe9eb..1590057 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: syscall-compat.hc,v 1.1.4.8 2004/02/19 22:56:53 ensc Exp $    --*- c++ -*--
+// $Id: syscall-compat.hc,v 1.11 2004/04/14 23:21:23 ensc Exp $    --*- c++ -*--
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 //  
 #include "compat.h"
 
 #include "safechroot-internal.hc"
-
 #include "vserver.h"
-#include "vserver-internal.h"
 
 #include <unistd.h>
 
-static inline ALWAYSINLINE int
+static inline ALWAYSINLINE xid_t
 vc_new_s_context_compat(xid_t ctx, unsigned int remove_cap, unsigned int flags)
 {
   struct vcmd_new_s_context_v1 msg;
   msg.remove_cap = remove_cap;
   msg.flags      = flags;
 
-  return vserver(VC_CMD(COMPAT, 1, 1), CTX_USER2KERNEL(ctx), &msg);
+  return vserver(VCMD_new_s_context, CTX_USER2KERNEL(ctx), &msg);
 }
 
 static inline ALWAYSINLINE int
@@ -45,23 +43,16 @@ vc_set_ipv4root_compat(uint32_t  bcast, size_t nb, struct vc_ip_mask_pair const
   size_t                       i;
 
   if (nb>NB_IPV4ROOT) {
-    errno = -EINVAL;
+    errno = -EOVERFLOW;
     return -1;
   }
 
   msg.broadcast = bcast;
 
   for (i=0; i<nb; ++i) {
-    msg.ip_mask_pair[i].ip   = ips[i].ip;
-    msg.ip_mask_pair[i].mask = ips[i].mask;
+    msg.nx_mask_pair[i].ip   = ips[i].ip;
+    msg.nx_mask_pair[i].mask = ips[i].mask;
   }
 
-  return vserver(VC_CMD(COMPAT, 2, 3), nb, &msg);
-}
-
-static inline ALWAYSINLINE int
-vc_chrootsafe_compat(char const *dir)
-{
-  vc_tell_unsafe_chroot();
-  return chroot(dir);
+  return vserver(VCMD_set_ipv4root, nb, &msg);
 }
index 4e36a33..5ac294a 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: syscall-legacy.hc,v 1.1.4.6 2004/02/05 03:52:45 ensc Exp $ --*- c -*--
+// $Id: syscall-legacy.hc,v 1.10 2005/05/02 21:41:49 ensc Exp $ --*- c -*--
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 // based on syscall.cc by Jacques Gelinas
 */
 #include "safechroot-internal.hc"
 
-#include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
 #include <errno.h>
-#include <syscall.h>
 #include <asm/unistd.h>
+#include <stdbool.h>
+
+#include "syscall-wrap.h"
 
 // Here is the trick. We keep a copy of the define, then undef it
 // and then later, we try to locate the value reading /proc/self/status
@@ -51,6 +52,10 @@ static int __NR_set_ipv4root_rev3;
 static int rev_ipv4root=0;
 
 #ifdef ENSC_SYSCALL_TRADITIONAL
+#  if defined __dietlibc__
+extern long int syscall (long int __sysno, ...);
+#  endif
+
 inline static int
 set_ipv4root_rev0(unsigned long ip)
 {
@@ -75,83 +80,101 @@ set_ipv4root_rev3(unsigned long *ip, int nb, unsigned long bcast, unsigned long
   return syscall(__NR_set_ipv4root_rev3, ip, nb, bcast, mask);
 }
 
-#else
+#else  // ENSC_SYSCALL_TRADITIONAL
 inline static _syscall1(int, set_ipv4root_rev0, unsigned long, ip)
 inline static _syscall2(int, set_ipv4root_rev1, unsigned long, ip, unsigned long, bcast)
 inline static _syscall3(int, set_ipv4root_rev2, unsigned long *, ip, int, nb, unsigned long, bcast)
 inline static _syscall4(int, set_ipv4root_rev3, unsigned long *, ip, int, nb, unsigned long, bcast, unsigned long *, mask)
-#endif
+#endif // ENSC_SYSCALL_TRADITIONAL
 
 static int def_NR_new_s_context = 273;
 #undef __NR_new_s_context
 static int __NR_new_s_context_rev0;
-  //static int __NR_new_s_context_rev1;
 static int rev_s_context=0;
 
+
 #ifdef ENSC_SYSCALL_TRADITIONAL
-inline static int
+inline static xid_t
 new_s_context_rev0(int newctx, int remove_cap, int flags)
 {
   return syscall(__NR_new_s_context_rev0, newctx, remove_cap, flags);
 }
-#else
+#else  // ENSC_SYSCALL_TRADITIONAL
 inline static _syscall3(int, new_s_context_rev0, int, newctx, int, remove_cap, int, flags)
-    //static _syscall4(int, new_s_context_rev1, int, nbctx, int *, ctxs, int, remove_cap, int, flags)
-#endif
+#endif // ENSC_SYSCALL_TRADITIONAL
+
 
-#if 0
-#undef __NR_set_ctxlimit
-static int __NR_set_ctxlimit=-1;
-static int rev_set_ctxlimit=-1;
+static bool    is_init = false;
 
-static _syscall2 (int, set_ctxlimit, int, resource, long, limit)
+#include "utils-legacy.h"
+
+#ifndef WRITE_MSG
+#  define WRITE_MSG(FD,X)         (void)(write(FD,X,sizeof(X)-1))
 #endif
 
+
+static bool
+getNumRevPair(char const *str, int *num, int *rev)
+{
+  char const * blank_pos = strchr(str, ' ');
+  char const * eol_pos   = strchr(str, '\n');
+  
+  *num = atoi(str);
+  if (*num==0) return false;
+  
+  if (blank_pos!=0 && eol_pos!=0 && blank_pos<eol_pos &&
+      strncmp(blank_pos+1, "rev", 3)==0)
+    *rev = atoi(blank_pos+4);
+
+  return true;
+}
+
+#define SET_TAG_POS(TAG)                       \
+  pos = strstr(buf, (TAG));                    \
+  if (pos) pos+=sizeof(TAG)-1
+
+static bool init_internal()
+{
+  size_t                       bufsize = utilvserver_getProcEntryBufsize();
+  char                         buf[bufsize];
+  char const *                 pos = 0;
+  pid_t                                pid = getpid();
+  int                          num;
+
+  errno = 0;
+
+  pos=utilvserver_getProcEntry(pid, 0, buf, bufsize);
+  if (pos==0 && errno==EAGAIN) return false;
+  
+  SET_TAG_POS("\n__NR_set_ipv4root: ");
+  if ( pos!=0 && getNumRevPair(pos, &num, &rev_ipv4root) ) {
+    __NR_set_ipv4root_rev0 =
+      __NR_set_ipv4root_rev1 =
+      __NR_set_ipv4root_rev2 =
+      __NR_set_ipv4root_rev3 = num;
+  }
+
+  SET_TAG_POS("\n__NR_new_s_context: ");
+  if ( pos!=0 && getNumRevPair(pos, &num, &rev_s_context) )
+    __NR_new_s_context_rev0 = num;
+
+  return true;
+}
+
+#undef SET_TAG_POS
+
 static void init()
 {
-       static int is_init = 0;
        if (!is_init){
-               FILE *fin = fopen ("/proc/self/status","r");
                __NR_set_ipv4root_rev0 = def_NR_set_ipv4root;
                __NR_set_ipv4root_rev1 = def_NR_set_ipv4root;
                __NR_set_ipv4root_rev2 = def_NR_set_ipv4root;
                __NR_set_ipv4root_rev3 = def_NR_set_ipv4root;
                __NR_new_s_context_rev0 = def_NR_new_s_context;
-                 //__NR_new_s_context_rev1 = def_NR_new_s_context;
-               if (fin != NULL){
-                       char line[100];
-                       while (fgets(line,sizeof(line)-1,fin)!=NULL){
-                               int num;
-                               char title[100],rev[100];
-                               rev[0] = '\0';
-                               if (sscanf(line,"%s %d %s",title,&num,rev)>=2){
-                                       if (strcmp(title,"__NR_set_ipv4root:")==0){
-                                               __NR_set_ipv4root_rev0 = num;
-                                               __NR_set_ipv4root_rev1 = num;
-                                               __NR_set_ipv4root_rev2 = num;
-                                               __NR_set_ipv4root_rev3 = num;
-                                               if (strncmp(rev,"rev",3)==0){
-                                                       rev_ipv4root = atoi(rev+3);
-                                               }
-#if 0                                          
-                                       }else if (strcmp(title,"__NR_set_ctxlimit:")==0){
-                                               __NR_set_ctxlimit = num;
-                                               if (strncmp(rev,"rev",3)==0){
-                                                       rev_set_ctxlimit = atoi(rev+3);
-                                               }
-#endif                                         
-                                       }else if (strcmp(title,"__NR_new_s_context:")==0){
-                                               __NR_new_s_context_rev0 = num;
-                                                 //__NR_new_s_context_rev1 = num;
-                                               if (strncmp(rev,"rev",3)==0){
-                                                       rev_s_context = atoi(rev+3);
-                                               }
-                                       }
-                               }
-                       }
-                       fclose (fin);
-               }
-               is_init = 1;
+
+               while (!init_internal() && errno==EAGAIN) {}
+
+               is_init = true;
        }
 }
 
@@ -160,16 +183,31 @@ void vc_init_legacy()
         init();
 }
 
-static ALWAYSINLINE int
+void vc_init_internal_legacy(int ctx_rev, int ctx_number,
+                            int ipv4_rev, int ipv4_number)
+{      
+  rev_s_context           = ctx_rev;
+  __NR_new_s_context_rev0 = ctx_number;
+
+  rev_ipv4root            = ipv4_rev;
+  __NR_set_ipv4root_rev0  = ipv4_number;
+  __NR_set_ipv4root_rev1  = ipv4_number;
+  __NR_set_ipv4root_rev2  = ipv4_number;
+  __NR_set_ipv4root_rev3  = ipv4_number;
+
+  is_init = true;
+}
+
+static ALWAYSINLINE xid_t
 vc_new_s_context_legacy(int ctx, int remove_cap, int flags)
 {
-       int ret = -1;
+        xid_t ret = -1;
        init();
        if (rev_s_context == 0){
                return new_s_context_rev0(ctx, remove_cap, flags);
        }else{
                errno = -ENOSYS;
-               ret   = -1;
+               ret   = VC_NOCTX;
        }
        return ret;
 }
@@ -184,12 +222,12 @@ vc_set_ipv4root_legacy_internal (
        init();
        if (rev_ipv4root == 0){
                if (nb > 1){
-                       fprintf (stderr,"set_ipv4root: Several IP number specified, but this kernel only supports one. Ignored\n");
+                       WRITE_MSG(2,"set_ipv4root: Several IP number specified, but this kernel only supports one. Ignored\n");
                }
                return set_ipv4root_rev0 (ip[0]);
        }else if (rev_ipv4root == 1){
                if (nb > 1){
-                       fprintf (stderr,"set_ipv4root: Several IP number specified, but this kernel only supports one. Ignored\n");
+                       WRITE_MSG(2,"set_ipv4root: Several IP number specified, but this kernel only supports one. Ignored\n");
                }
                return set_ipv4root_rev1 (ip[0],bcast);
        }else if (rev_ipv4root == 2){
@@ -206,7 +244,7 @@ vc_set_ipv4root_legacy(uint32_t  bcast, size_t nb, struct vc_ip_mask_pair const
 {
   unsigned long        ip[nb];
   unsigned long        mask[nb];
-  size_t               i;
+  size_t       i;
 
   for (i=0; i<nb; ++i) {
     ip[i]   = ips[i].ip;
diff --git a/lib/syscall-syscall.c b/lib/syscall-syscall.c
new file mode 100644 (file)
index 0000000..f085329
--- /dev/null
@@ -0,0 +1,34 @@
+// $Id: syscall-syscall.c,v 1.2 2004/08/19 13:57:53 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver-internal.h"
+
+#if 0
+int
+vc_syscall(uint32_t cmd, xid_t xid, void *data) __attribute__((__alias__("vserver")));
+#else
+int
+vc_syscall(uint32_t cmd, xid_t xid, void *data)
+{
+  return vserver(cmd, xid, data);
+}
+#endif
diff --git a/lib/syscall-wrap.h b/lib/syscall-wrap.h
new file mode 100644 (file)
index 0000000..4487bae
--- /dev/null
@@ -0,0 +1,39 @@
+// $Id: syscall-wrap.h,v 1.2 2005/05/02 21:42:05 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_LIB_SYSCALL_WRAP_H
+#define H_UTIL_VSERVER_LIB_SYSCALL_WRAP_H
+
+#include <sys/syscall.h>
+#include <syscall.h>
+#include <unistd.h>
+
+#ifdef ENSC_USE_ALTERNATIVE_SYSCALL_MACROS
+#  undef _syscall0
+#  undef _syscall1
+#  undef _syscall2
+#  undef _syscall3
+#  undef _syscall4
+#  undef _syscall5
+#  undef _syscall6
+#  undef _syscall7
+
+#  include "syscall-alternative.h"
+#endif
+
+#endif //  H_UTIL_VSERVER_LIB_SYSCALL_WRAP_H
index cf14a5e..f099164 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: syscall.c,v 1.1.4.6 2003/12/30 13:45:57 ensc Exp $    --*- c++ -*--
+// $Id: syscall.c,v 1.10 2004/04/08 06:04:41 ensc Exp $    --*- c++ -*--
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 //  
 #ifdef HAVE_CONFIG_H
 #  include <config.h>
 #endif
-#include "compat.h"
 
+#include "compat.h"
 #include "vserver.h"
-#include "vserver-internal.h"
+#include "internal.h"
+
+#define _LINUX_TYPES_H 1
 #include "linuxvirtual.h"
 
+#if defined(VC_ENABLE_API_COMPAT) && defined(VC_ENABLE_API_LEGACY)
+#  define VC_MULTIVERSION_SYSCALL      1
+#endif
+#include "vserver-internal.h"
+
 #ifdef VC_ENABLE_API_COMPAT    
 #  include "syscall-compat.hc"
 #endif
 #include <stdbool.h>
 #include <errno.h>
 
+
 #if defined(VC_ENABLE_API_COMPAT) || defined(VC_ENABLE_API_LEGACY)
 
-int
+xid_t
 vc_new_s_context(xid_t ctx, unsigned int remove_cap, unsigned int flags)
 {
   CALL_VC(CALL_VC_COMPAT(vc_new_s_context, ctx, remove_cap, flags),
@@ -52,4 +60,5 @@ vc_set_ipv4root(uint32_t  bcast, size_t nb, struct vc_ip_mask_pair const *ips)
          CALL_VC_LEGACY(vc_set_ipv4root, bcast, nb, ips));
 }
 
+LINK_WARNING("vc_new_s_context", "warning: vc_new_s_context() is obsoleted; use vc_create_context() instead of");
 #endif
diff --git a/lib/syscall_adddlimit-v13.hc b/lib/syscall_adddlimit-v13.hc
new file mode 100644 (file)
index 0000000..7e44edc
--- /dev/null
@@ -0,0 +1,34 @@
+// $Id: syscall_adddlimit-v13.hc,v 1.3 2005/03/02 01:29:44 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+
+static inline ALWAYSINLINE int
+vc_add_dlimit_v13b(char const *filename, xid_t xid, uint32_t flags)
+{
+  struct vcmd_ctx_dlimit_base_v0       init = {
+    .name   =  filename,
+    .flags  =  flags
+  };
+
+  return vserver(VCMD_add_dlimit, CTX_USER2KERNEL(xid), &init);
+}
diff --git a/lib/syscall_adddlimit.c b/lib/syscall_adddlimit.c
new file mode 100644 (file)
index 0000000..98f132d
--- /dev/null
@@ -0,0 +1,36 @@
+// $Id: syscall_adddlimit.c,v 1.2 2005/03/02 01:27:54 ensc Exp $    --*- c++ -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "linuxvirtual.h"
+
+#include "vserver-internal.h"
+
+#ifdef VC_ENABLE_API_V13
+#  include "syscall_adddlimit-v13.hc"
+#endif
+
+int
+vc_add_dlimit(char const *filename, xid_t xid, uint32_t flags)
+{
+  CALL_VC(CALL_VC_V13B(vc_add_dlimit, filename, xid, flags));
+}
diff --git a/lib/syscall_cleanupnamespace-v13.hc b/lib/syscall_cleanupnamespace-v13.hc
new file mode 100644 (file)
index 0000000..06ebfdd
--- /dev/null
@@ -0,0 +1,29 @@
+// $Id: syscall_cleanupnamespace-v13.hc,v 1.1 2004/02/27 04:39:09 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+
+static inline ALWAYSINLINE int
+vc_cleanup_namespace_v13(int UNUSED tmp)
+{
+  return vserver(VCMD_cleanup_namespace, 0, 0);
+}
diff --git a/lib/syscall_cleanupnamespace.c b/lib/syscall_cleanupnamespace.c
new file mode 100644 (file)
index 0000000..7f8a4d0
--- /dev/null
@@ -0,0 +1,36 @@
+// $Id: syscall_cleanupnamespace.c,v 1.1 2004/02/27 04:39:09 ensc Exp $    --*- c++ -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "linuxvirtual.h"
+
+#include "vserver-internal.h"
+
+#ifdef VC_ENABLE_API_V13
+#  include "syscall_cleanupnamespace-v13.hc"
+#endif
+
+int
+vc_cleanup_namespace()
+{
+  CALL_VC(CALL_VC_V13(vc_cleanup_namespace,0));
+}
diff --git a/lib/syscall_ctxcreate-v13.hc b/lib/syscall_ctxcreate-v13.hc
new file mode 100644 (file)
index 0000000..f29b087
--- /dev/null
@@ -0,0 +1,29 @@
+// $Id: syscall_ctxcreate-v13.hc,v 1.2 2004/04/22 20:45:50 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+static inline ALWAYSINLINE xid_t
+vc_ctx_create_v13(xid_t xid)
+{
+  xid_t                res = vserver(VCMD_ctx_create, CTX_USER2KERNEL(xid), 0);
+
+  return CTX_KERNEL2USER(res);
+}
diff --git a/lib/syscall_ctxcreate.c b/lib/syscall_ctxcreate.c
new file mode 100644 (file)
index 0000000..f367159
--- /dev/null
@@ -0,0 +1,37 @@
+// $Id: syscall_ctxcreate.c,v 1.1 2004/04/14 23:19:51 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "vserver-internal.h"
+#include "linuxvirtual.h"
+
+#if defined(VC_ENABLE_API_V13)
+#  include "syscall_ctxcreate-v13.hc"
+#endif
+
+#if defined(VC_ENABLE_API_V13)
+xid_t
+vc_ctx_create(xid_t xid)
+{
+  CALL_VC(CALL_VC_V13A(vc_ctx_create, xid));
+}
+#endif
diff --git a/lib/syscall_ctxmigrate-v13.hc b/lib/syscall_ctxmigrate-v13.hc
new file mode 100644 (file)
index 0000000..641ee3f
--- /dev/null
@@ -0,0 +1,27 @@
+// $Id: syscall_ctxmigrate-v13.hc,v 1.1 2004/04/14 23:19:51 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+static inline ALWAYSINLINE int
+vc_ctx_migrate_v13(xid_t xid)
+{
+  return vserver(VCMD_ctx_migrate, CTX_USER2KERNEL(xid), 0);
+}
diff --git a/lib/syscall_ctxmigrate.c b/lib/syscall_ctxmigrate.c
new file mode 100644 (file)
index 0000000..29276c6
--- /dev/null
@@ -0,0 +1,37 @@
+// $Id: syscall_ctxmigrate.c,v 1.1 2004/04/14 23:19:51 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "vserver-internal.h"
+#include "linuxvirtual.h"
+
+#if defined(VC_ENABLE_API_V13)
+#  include "syscall_ctxmigrate-v13.hc"
+#endif
+
+#if defined(VC_ENABLE_API_V13)
+int
+vc_ctx_migrate(xid_t xid)
+{
+  CALL_VC(CALL_VC_V13A(vc_ctx_migrate, xid));
+}
+#endif
diff --git a/lib/syscall_enternamespace-v13.hc b/lib/syscall_enternamespace-v13.hc
new file mode 100644 (file)
index 0000000..b4d14f9
--- /dev/null
@@ -0,0 +1,29 @@
+// $Id: syscall_enternamespace-v13.hc,v 1.1 2004/02/20 17:58:43 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+
+static inline ALWAYSINLINE int
+vc_enter_namespace_v13(xid_t xid)
+{
+  return vserver(VCMD_enter_namespace, CTX_USER2KERNEL(xid), 0);
+}
diff --git a/lib/syscall_enternamespace.c b/lib/syscall_enternamespace.c
new file mode 100644 (file)
index 0000000..90be57a
--- /dev/null
@@ -0,0 +1,36 @@
+// $Id: syscall_enternamespace.c,v 1.1 2004/02/20 17:58:43 ensc Exp $    --*- c++ -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "linuxvirtual.h"
+
+#include "vserver-internal.h"
+
+#ifdef VC_ENABLE_API_V13
+#  include "syscall_enternamespace-v13.hc"
+#endif
+
+int
+vc_enter_namespace(xid_t xid)
+{
+  CALL_VC(CALL_VC_V13(vc_enter_namespace, xid));
+}
diff --git a/lib/syscall_getccaps-v13.hc b/lib/syscall_getccaps-v13.hc
new file mode 100644 (file)
index 0000000..3d0f09b
--- /dev/null
@@ -0,0 +1,36 @@
+// $Id: syscall_getccaps-v13.hc,v 1.2 2004/03/24 01:07:11 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+static inline ALWAYSINLINE int
+vc_get_ccaps_v13(xid_t xid, struct vc_ctx_caps *caps)
+{
+  struct vcmd_ctx_caps_v0      k_caps;
+  int                          res;
+  
+  res = vserver(VCMD_get_ccaps, CTX_USER2KERNEL(xid), &k_caps);
+  caps->bcaps = k_caps.bcaps;
+  caps->bmask = ~0ull;
+  caps->ccaps = k_caps.ccaps;
+  caps->cmask = k_caps.cmask;
+
+  return res;
+}
diff --git a/lib/syscall_getccaps.c b/lib/syscall_getccaps.c
new file mode 100644 (file)
index 0000000..a4d002f
--- /dev/null
@@ -0,0 +1,42 @@
+// $Id: syscall_getccaps.c,v 1.1 2004/03/07 19:35:59 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "vserver-internal.h"
+#include "linuxvirtual.h"
+
+#if defined(VC_ENABLE_API_V13)
+#  include "syscall_getccaps-v13.hc"
+#endif
+
+#if defined(VC_ENABLE_API_V13)
+int
+vc_get_ccaps(xid_t xid, struct vc_ctx_caps *caps)
+{
+  if (caps==0) {
+    errno = EFAULT;
+    return -1;
+  }
+
+  CALL_VC(CALL_VC_V13A(vc_get_ccaps, xid, caps));
+}
+#endif
diff --git a/lib/syscall_getcflags-v13.hc b/lib/syscall_getcflags-v13.hc
new file mode 100644 (file)
index 0000000..5cfc579
--- /dev/null
@@ -0,0 +1,39 @@
+// $Id: syscall_getcflags-v13.hc,v 1.1 2004/04/14 23:19:51 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+static inline ALWAYSINLINE int
+vc_get_cflags_v13(xid_t xid, struct vc_ctx_flags *flags)
+{
+  struct vcmd_ctx_flags_v0     k_flags;
+  int                          res;
+
+  if (flags==0) {
+    errno = EFAULT;
+    return -1;
+  }
+  
+  res = vserver(VCMD_get_cflags, CTX_USER2KERNEL(xid), &k_flags);
+  flags->flagword = k_flags.flagword;
+  flags->mask     = k_flags.mask;
+
+  return res;
+}
diff --git a/lib/syscall_getcflags.c b/lib/syscall_getcflags.c
new file mode 100644 (file)
index 0000000..22fc982
--- /dev/null
@@ -0,0 +1,37 @@
+// $Id: syscall_getcflags.c,v 1.1 2004/04/14 23:19:51 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "vserver-internal.h"
+#include "linuxvirtual.h"
+
+#if defined(VC_ENABLE_API_V13)
+#  include "syscall_getcflags-v13.hc"
+#endif
+
+#if defined(VC_ENABLE_API_V13)
+int
+vc_get_cflags(xid_t xid, struct vc_ctx_flags *flags)
+{
+  CALL_VC(CALL_VC_V13A(vc_get_cflags, xid, flags));
+}
+#endif
diff --git a/lib/syscall_getdlimit-v13.hc b/lib/syscall_getdlimit-v13.hc
new file mode 100644 (file)
index 0000000..c6b66fd
--- /dev/null
@@ -0,0 +1,46 @@
+// $Id: syscall_getdlimit-v13.hc,v 1.2 2005/03/02 01:29:44 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+
+static inline ALWAYSINLINE int
+vc_get_dlimit_v13b(char const *filename, xid_t xid,
+                  uint_least32_t flags, struct vc_ctx_dlimit *limits)
+{
+  int                          rc;
+  struct vcmd_ctx_dlimit_v0    attr = {
+    .name   = filename,
+    .flags  = flags
+  };
+  
+  rc = vserver(VCMD_get_dlimit, CTX_USER2KERNEL(xid), &attr);
+
+  if (limits) {
+    limits->space_used   = CDLIM_KERNEL2USER(attr.space_used);
+    limits->space_total  = CDLIM_KERNEL2USER(attr.space_total);
+    limits->inodes_used  = CDLIM_KERNEL2USER(attr.inodes_used);
+    limits->inodes_total = CDLIM_KERNEL2USER(attr.inodes_total);
+    limits->reserved     = CDLIM_KERNEL2USER(attr.reserved);
+  }
+
+  return rc;
+}
diff --git a/lib/syscall_getdlimit.c b/lib/syscall_getdlimit.c
new file mode 100644 (file)
index 0000000..a807e52
--- /dev/null
@@ -0,0 +1,37 @@
+// $Id: syscall_getdlimit.c,v 1.2 2005/03/02 01:27:54 ensc Exp $    --*- c++ -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "linuxvirtual.h"
+
+#include "vserver-internal.h"
+
+#ifdef VC_ENABLE_API_V13
+#  include "syscall_getdlimit-v13.hc"
+#endif
+
+int
+vc_get_dlimit(char const *filename, xid_t xid,
+             uint_least32_t flags, struct vc_ctx_dlimit *limits)
+{
+  CALL_VC(CALL_VC_V13B(vc_get_dlimit, filename, xid, flags, limits));
+}
diff --git a/lib/syscall_getiattr-fscompat.hc b/lib/syscall_getiattr-fscompat.hc
new file mode 100644 (file)
index 0000000..a0c5bc5
--- /dev/null
@@ -0,0 +1,95 @@
+// $Id: syscall_getiattr-fscompat.hc,v 1.2 2005/07/15 18:06:27 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "ioctl-getext2flags.hc"
+#include "ioctl-getfilecontext.hc"
+#include "ioctl-getxflg.hc"
+
+#include <fcntl.h>
+static inline ALWAYSINLINE int
+vc_get_iattr_fscompat(char const *filename,
+                     xid_t    * /*@null@*/ xid,
+                     uint32_t * /*@null@*/ flags,
+                     uint32_t * mask)
+{
+  struct stat          st;
+  int                  stat_rc;
+  int                  fd;
+  int                  old_mask = *mask;
+
+  *mask = 0;
+
+  if (lstat(filename, &st)==-1) return -1;
+  if (!S_ISREG(st.st_mode) && !S_ISDIR(st.st_mode)) return 0;
+
+  fd = open(filename, O_RDONLY|O_NONBLOCK);
+  if (fd==-1) return -1;
+
+  stat_rc = fstat(fd, &st);
+  if (stat_rc==-1) goto err;
+
+  if ( old_mask&VC_IATTR_XID ) {
+    *xid = vc_X_get_filecontext(fd);
+    if (*xid!=VC_NOCTX) *mask |= VC_IATTR_XID;
+  }
+
+  if ( old_mask&VC_IATTR_IUNLINK ) {
+    long               tmp;
+    int                rc = vc_X_get_ext2flags(fd, &tmp);
+
+    if (rc!=-1) {
+      *mask |= VC_IATTR_IUNLINK;
+      if (tmp & (VC_IMMUTABLE_FILE_FL|VC_IMMUTABLE_LINK_FL))
+       *flags |= VC_IATTR_IUNLINK;
+    }
+  }
+
+  if ( (old_mask&VC_IATTR_BARRIER) && S_ISDIR(st.st_mode)) {
+    long               ext2_flags;
+    
+    *mask  |= VC_IATTR_BARRIER;
+    if ((st.st_mode&0777)==0 &&
+       vc_X_get_ext2flags(fd, &ext2_flags)!=-1 &&
+       (ext2_flags & VC_IMMUTABLE_LINK_FL))
+      *flags |= VC_IATTR_BARRIER;
+  }
+
+  if ( (old_mask&(VC_IATTR_WATCH|VC_IATTR_HIDE)) ){
+    long               tmp;
+    int                rc = vc_X_get_xflg(fd, &tmp);
+    if (rc!=-1) {
+      *mask |= (VC_IATTR_WATCH|VC_IATTR_HIDE);
+      if (tmp&1) *flags |= VC_IATTR_HIDE;
+      if (tmp&2) *flags |= VC_IATTR_WATCH;
+    }
+  }
+
+  close(fd);
+  return 0;
+  err:
+  {
+    int        old_errno = errno;
+    close(fd);
+    errno = old_errno;
+    return -1;
+  } 
+}
diff --git a/lib/syscall_getiattr-v13.hc b/lib/syscall_getiattr-v13.hc
new file mode 100644 (file)
index 0000000..9e8b17b
--- /dev/null
@@ -0,0 +1,40 @@
+// $Id: syscall_getiattr-v13.hc,v 1.7 2004/03/12 02:56:46 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+
+static inline ALWAYSINLINE int
+vc_get_iattr_v13(char const *filename,
+                xid_t *xid, uint32_t *flags, uint32_t *mask)
+{
+  struct vcmd_ctx_iattr_v1     attr;
+  int                          rc;
+
+  attr.name = filename;
+  
+  rc = vserver(VCMD_get_iattr, 0, &attr);
+  if (xid)   *xid   = CTX_KERNEL2USER(attr.xid);
+  if (flags) *flags = attr.flags;
+  if (mask)  *mask  = attr.mask;
+
+  return rc;
+}
diff --git a/lib/syscall_getiattr.c b/lib/syscall_getiattr.c
new file mode 100644 (file)
index 0000000..063174c
--- /dev/null
@@ -0,0 +1,52 @@
+// $Id: syscall_getiattr.c,v 1.3 2004/03/05 04:40:59 ensc Exp $    --*- c++ -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "linuxvirtual.h"
+
+#if defined(VC_ENABLE_API_FSCOMPAT) && defined(VC_ENABLE_API_V13)
+#  define VC_MULTIVERSION_SYSCALL      1
+#endif
+#include "vserver-internal.h"
+
+#ifdef VC_ENABLE_API_V13
+#  include "syscall_getiattr-v13.hc"
+#endif
+
+#ifdef VC_ENABLE_API_FSCOMPAT
+#  include "syscall_getiattr-fscompat.hc"
+#endif
+
+int
+vc_get_iattr(char const *filename, xid_t *xid,  uint32_t *flags, uint32_t *mask)
+{
+  if ( (mask==0) ||
+       ((*mask&VC_IATTR_XID)  && xid==0) ||
+       ((*mask&~VC_IATTR_XID) && flags==0) ) {
+    errno = EFAULT;
+    return -1;
+  }
+  if ( flags ) *flags &= ~*mask;
+
+  CALL_VC(CALL_VC_V13     (vc_get_iattr, filename, xid, flags, mask),
+         CALL_VC_FSCOMPAT(vc_get_iattr, filename, xid, flags, mask));
+}
diff --git a/lib/syscall_getncaps-net.hc b/lib/syscall_getncaps-net.hc
new file mode 100644 (file)
index 0000000..91c9448
--- /dev/null
@@ -0,0 +1,34 @@
+// $Id: syscall_getncaps-net.hc,v 1.1 2004/04/22 20:46:43 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+static inline ALWAYSINLINE int
+vc_get_ncaps_net(nid_t nid, struct vc_net_caps *caps)
+{
+  struct vcmd_net_caps_v0      k_caps;
+  int                          res;
+  
+  res = vserver(VCMD_get_ncaps, NID_USER2KERNEL(nid), &k_caps);
+  caps->ncaps = k_caps.ncaps;
+  caps->cmask = k_caps.cmask;
+
+  return res;
+}
diff --git a/lib/syscall_getncaps.c b/lib/syscall_getncaps.c
new file mode 100644 (file)
index 0000000..998594e
--- /dev/null
@@ -0,0 +1,42 @@
+// $Id: syscall_getncaps.c,v 1.1 2004/04/22 20:46:43 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "vserver-internal.h"
+#include "linuxvirtual.h"
+
+#if defined(VC_ENABLE_API_NET)
+#  include "syscall_getncaps-net.hc"
+#endif
+
+#if defined(VC_ENABLE_API_NET)
+int
+vc_get_ncaps(nid_t nid, struct vc_net_caps *caps)
+{
+  if (caps==0) {
+    errno = EFAULT;
+    return -1;
+  }
+
+  CALL_VC(CALL_VC_NET(vc_get_ncaps, nid, caps));
+}
+#endif
diff --git a/lib/syscall_getnflags-net.hc b/lib/syscall_getnflags-net.hc
new file mode 100644 (file)
index 0000000..0cc5fd4
--- /dev/null
@@ -0,0 +1,34 @@
+// $Id: syscall_getnflags-net.hc,v 1.1 2004/04/22 20:46:43 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+static inline ALWAYSINLINE int
+vc_get_nflags_net(nid_t nid, struct vc_net_flags *flags)
+{
+  struct vcmd_net_flags_v0     k_flags;
+  int                          res;
+
+  res = vserver(VCMD_get_nflags, NID_USER2KERNEL(nid), &k_flags);
+  flags->flagword = k_flags.flagword;
+  flags->mask     = k_flags.mask;
+
+  return res;
+}
diff --git a/lib/syscall_getnflags.c b/lib/syscall_getnflags.c
new file mode 100644 (file)
index 0000000..596b374
--- /dev/null
@@ -0,0 +1,42 @@
+// $Id: syscall_getnflags.c,v 1.1 2004/04/22 20:46:43 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "vserver-internal.h"
+#include "linuxvirtual.h"
+
+#if defined(VC_ENABLE_API_NET)
+#  include "syscall_getnflags-net.hc"
+#endif
+
+#if defined(VC_ENABLE_API_NET)
+int
+vc_get_nflags(nid_t nid, struct vc_net_flags *flags)
+{
+  if (flags==0) {
+    errno = EFAULT;
+    return -1;
+  }
+  
+  CALL_VC(CALL_VC_NET(vc_get_nflags, nid, flags));
+}
+#endif
diff --git a/lib/syscall_getnxinfo-net.hc b/lib/syscall_getnxinfo-net.hc
new file mode 100644 (file)
index 0000000..5069f73
--- /dev/null
@@ -0,0 +1,34 @@
+// $Id: syscall_getnxinfo-net.hc,v 1.1 2004/04/22 20:46:43 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+static inline ALWAYSINLINE int
+vc_get_nx_info_net(nid_t nid, struct vc_nx_info *info)
+{
+  struct vcmd_nx_info_v0       res;
+  int                          rc;
+
+  rc = vserver(VCMD_nx_info, NID_USER2KERNEL(nid), &res);
+  if (rc==-1) return -1;
+
+  info->nid     = NID_KERNEL2USER(res.nid);
+  return rc;
+}
diff --git a/lib/syscall_getnxinfo.c b/lib/syscall_getnxinfo.c
new file mode 100644 (file)
index 0000000..a7c517f
--- /dev/null
@@ -0,0 +1,42 @@
+// $Id: syscall_getnxinfo.c,v 1.1 2004/04/22 20:46:43 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "linuxvirtual.h"
+#include "vserver-internal.h"
+
+#ifdef VC_ENABLE_API_NET
+#  include "syscall_getnxinfo-net.hc"
+#endif
+
+#ifdef VC_ENABLE_API_NET
+int
+vc_get_nx_info(nid_t nid, struct vc_nx_info *info)
+{
+  if (info==0) {
+    errno = EFAULT;
+    return -1;
+  }
+  
+  CALL_VC(CALL_VC_NET(vc_get_nx_info, nid, info));
+}
+#endif
diff --git a/lib/syscall_gettasknid-net.hc b/lib/syscall_gettasknid-net.hc
new file mode 100644 (file)
index 0000000..ab0c63c
--- /dev/null
@@ -0,0 +1,28 @@
+// $Id: syscall_gettasknid-net.hc,v 1.1 2004/04/22 20:46:43 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+static inline ALWAYSINLINE nid_t
+vc_get_task_nid_net(pid_t pid)
+{
+  nid_t                res=vserver(VCMD_task_nid, pid, 0);
+  return NID_KERNEL2USER(res);
+}
diff --git a/lib/syscall_gettasknid.c b/lib/syscall_gettasknid.c
new file mode 100644 (file)
index 0000000..145e3ff
--- /dev/null
@@ -0,0 +1,37 @@
+// $Id: syscall_gettasknid.c,v 1.1 2004/04/22 20:46:43 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "linuxvirtual.h"
+#include "vserver-internal.h"
+
+#ifdef VC_ENABLE_API_NET
+#  include "syscall_gettasknid-net.hc"
+#endif
+
+#ifdef VC_ENABLE_API_NET
+nid_t
+vc_get_task_nid(pid_t pid)
+{
+  CALL_VC(CALL_VC_NET(vc_get_task_nid, pid));
+}
+#endif
diff --git a/lib/syscall_gettaskxid-oldproc.hc b/lib/syscall_gettaskxid-oldproc.hc
new file mode 100644 (file)
index 0000000..b7f8239
--- /dev/null
@@ -0,0 +1,47 @@
+// $Id: syscall_gettaskxid-oldproc.hc,v 1.2 2004/02/02 18:58:00 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "utils-legacy.h"
+
+static xid_t
+getctx_legacy_internal(pid_t pid)
+{
+  size_t                       bufsize = utilvserver_getProcEntryBufsize();
+  char                         buf[bufsize];
+  char                         *pos = 0;
+
+  pos = utilvserver_getProcEntry(pid, "\ns_context: ", buf, bufsize);
+
+  if (pos!=0) return atoi(pos);
+  else        return VC_NOCTX;
+}
+
+static inline ALWAYSINLINE xid_t
+vc_get_task_xid_oldproc(pid_t pid)
+{
+  xid_t                res;
+  do {
+    res = getctx_legacy_internal(pid);
+  } while (res==VC_NOCTX && errno==EAGAIN);
+
+  return res;
+}
diff --git a/lib/syscall_gettaskxid-v13.hc b/lib/syscall_gettaskxid-v13.hc
new file mode 100644 (file)
index 0000000..80b5885
--- /dev/null
@@ -0,0 +1,28 @@
+// $Id: syscall_gettaskxid-v13.hc,v 1.4 2004/01/22 21:35:36 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+static inline ALWAYSINLINE xid_t
+vc_get_task_xid_v13(pid_t pid)
+{
+  xid_t                res=vserver(VCMD_task_xid, pid, 0);
+  return CTX_KERNEL2USER(res);
+}
diff --git a/lib/syscall_gettaskxid.c b/lib/syscall_gettaskxid.c
new file mode 100644 (file)
index 0000000..ac797cd
--- /dev/null
@@ -0,0 +1,44 @@
+// $Id: syscall_gettaskxid.c,v 1.1 2004/01/21 18:47:18 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "linuxvirtual.h"
+
+#if defined(VC_ENABLE_API_OLDPROC) && defined(VC_ENABLE_API_V13)
+#  define VC_MULTIVERSION_SYSCALL      1
+#endif
+#include "vserver-internal.h"
+
+#ifdef VC_ENABLE_API_V13
+#  include "syscall_gettaskxid-v13.hc"
+#endif
+
+#ifdef VC_ENABLE_API_OLDPROC
+#  include "syscall_gettaskxid-oldproc.hc"
+#endif
+
+xid_t
+vc_get_task_xid(pid_t pid)
+{
+  CALL_VC(CALL_VC_V13    (vc_get_task_xid, pid),
+         CALL_VC_OLDPROC(vc_get_task_xid, pid));
+}
diff --git a/lib/syscall_getvhiname-olduts.hc b/lib/syscall_getvhiname-olduts.hc
new file mode 100644 (file)
index 0000000..c7ea54c
--- /dev/null
@@ -0,0 +1,38 @@
+// $Id: syscall_getvhiname-olduts.hc,v 1.1 2004/02/02 18:32:53 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+static inline ALWAYSINLINE int
+vc_get_vhi_name_olduts(xid_t xid, vc_uts_type type, char *val, size_t len)
+{
+  if (xid!=VC_SAMECTX) {
+    errno = ESRCH;
+    return -1;
+  }
+  switch (type) {
+    case vcVHI_NODENAME                :  return gethostname  (val, len);
+    case vcVHI_DOMAINNAME      :  return getdomainname(val, len);
+    default                    :
+      errno = ENOENT;
+      return -1;
+  }
+}
diff --git a/lib/syscall_getvhiname-v13.hc b/lib/syscall_getvhiname-v13.hc
new file mode 100644 (file)
index 0000000..e244dcd
--- /dev/null
@@ -0,0 +1,48 @@
+// $Id: syscall_getvhiname-v13.hc,v 1.3 2005/07/03 17:49:56 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <string.h>
+
+  // HACK: workaround naming changes instead of defining yet another interface
+  // version
+#if !defined(VCMD_get_vhi_name) && defined(VCMD_vx_get_vhi_name)
+#  define VCMD_get_vhi_name    VCMD_vx_get_vhi_name
+#  define vcmd_vhi_name_v0     vcmd_vxi_vhi_name_v0
+#endif
+
+
+static inline ALWAYSINLINE int
+vc_get_vhi_name_v13(xid_t xid, vc_uts_type type, char *val, size_t len)
+{
+  struct vcmd_vhi_name_v0      cmd;
+  int                          rc;
+  size_t                       l = sizeof(cmd.name);
+
+  cmd.field = VHI_USER2KERNEL(type);
+  rc = vserver(VCMD_get_vhi_name, CTX_USER2KERNEL(xid), &cmd);
+  ENSC_FIX_IOCTL(rc);
+  if (rc==-1) return -1;
+
+  l = l>len ? len : l;
+  strncpy(val, cmd.name, l);
+  return 0;
+}
diff --git a/lib/syscall_getvhiname.c b/lib/syscall_getvhiname.c
new file mode 100644 (file)
index 0000000..32180d6
--- /dev/null
@@ -0,0 +1,44 @@
+// $Id: syscall_getvhiname.c,v 1.1 2004/02/02 18:32:53 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "linuxvirtual.h"
+
+#if defined(VC_ENABLE_API_OLDUTS) && defined(VC_ENABLE_API_V13)
+#  define VC_MULTIVERSION_SYSCALL      1
+#endif
+#include "vserver-internal.h"
+
+#ifdef VC_ENABLE_API_V13
+#  include "syscall_getvhiname-v13.hc"
+#endif
+
+#ifdef VC_ENABLE_API_OLDUTS
+#  include "syscall_getvhiname-olduts.hc"
+#endif
+
+int
+vc_get_vhi_name(xid_t xid, vc_uts_type type, char *val, size_t len)
+{
+  CALL_VC(CALL_VC_V13   (vc_get_vhi_name, xid, type, val, len),
+         CALL_VC_OLDUTS(vc_get_vhi_name, xid, type, val, len));
+}
diff --git a/lib/syscall_getvxinfo-oldproc.hc b/lib/syscall_getvxinfo-oldproc.hc
new file mode 100644 (file)
index 0000000..e8dc582
--- /dev/null
@@ -0,0 +1,29 @@
+// $Id: syscall_getvxinfo-oldproc.hc,v 1.3 2004/03/05 04:40:59 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+static inline ALWAYSINLINE int
+vc_get_vx_info_oldproc(xid_t UNUSED xid, struct vc_vx_info UNUSED *info)
+{
+  // TODO: ???
+  errno = ENOSYS;
+  return -1;
+}
diff --git a/lib/syscall_getvxinfo-v13.hc b/lib/syscall_getvxinfo-v13.hc
new file mode 100644 (file)
index 0000000..7f0e456
--- /dev/null
@@ -0,0 +1,44 @@
+// $Id: syscall_getvxinfo-v13.hc,v 1.4 2004/02/20 17:04:12 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+static inline ALWAYSINLINE int
+vc_get_vx_info_v13(xid_t xid, struct vc_vx_info *info)
+{
+  if (xid==0 || xid==1) {
+    info->xid     = xid;
+    info->initpid = -1;
+
+    return 0;
+  }
+  else {
+    struct vcmd_vx_info_v0     res;
+    int                                rc;
+
+    rc = vserver(VCMD_vx_info, CTX_USER2KERNEL(xid), &res);
+    if (rc==-1) return -1;
+
+    info->xid     = CTX_KERNEL2USER(res.xid);
+    info->initpid = res.initpid;
+
+    return rc;
+  }
+}
diff --git a/lib/syscall_getvxinfo.c b/lib/syscall_getvxinfo.c
new file mode 100644 (file)
index 0000000..fc1a0a9
--- /dev/null
@@ -0,0 +1,48 @@
+// $Id: syscall_getvxinfo.c,v 1.2 2004/03/05 04:40:59 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "linuxvirtual.h"
+
+#if defined(VC_ENABLE_API_OLDPROC) && defined(VC_ENABLE_API_V13)
+#  define VC_MULTIVERSION_SYSCALL      1
+#endif
+#include "vserver-internal.h"
+
+#ifdef VC_ENABLE_API_V13
+#  include "syscall_getvxinfo-v13.hc"
+#endif
+
+#ifdef VC_ENABLE_API_OLDPROC
+#  include "syscall_getvxinfo-oldproc.hc"
+#endif
+
+int
+vc_get_vx_info(xid_t xid, struct vc_vx_info *info)
+{
+  if (info==0) {
+    errno = EFAULT;
+    return -1;
+  }
+  CALL_VC(CALL_VC_V13    (vc_get_vx_info, xid, info),
+         CALL_VC_OLDPROC(vc_get_vx_info, xid, info));
+}
index 0231998..e3e2f6c 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: syscall_kill-v11.hc,v 1.1.2.5 2004/01/26 18:20:18 ensc Exp $    --*- c++ -*--
+// $Id: syscall_kill-v11.hc,v 1.4 2004/02/02 18:55:52 ensc Exp $    --*- c++ -*--
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 //  
@@ -23,9 +23,9 @@
 static inline ALWAYSINLINE int
 vc_ctx_kill_v11(xid_t ctx, pid_t pid, int sig)
 {
-  struct vcmd_ctx_kill_v0      param = { 0,0 };
+  struct vcmd_ctx_kill_v0      param = { .pid = 0 };
   param.pid = pid;
   param.sig = sig;
 
-  return vserver(VC_CMD(PROCTRL, 1, 0), ctx, &param);
+  return vserver(VCMD_ctx_kill, CTX_USER2KERNEL(ctx), &param);
 }
index 6e573f5..c5358c5 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: syscall_kill.c,v 1.1.2.2 2003/12/30 13:45:57 ensc Exp $    --*- c++ -*--
+// $Id: syscall_kill.c,v 1.3 2004/01/21 18:55:12 ensc Exp $    --*- c++ -*--
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 //  
 #ifdef HAVE_CONFIG_H
 #  include <config.h>
 #endif
-#include "compat.h"
 
 #include "vserver.h"
 #include "vserver-internal.h"
 #include "linuxvirtual.h"
 
-#ifdef VC_ENABLE_API_V11
+#if defined(VC_ENABLE_API_V11) || defined(VC_ENABLE_API_V13)
 #  include "syscall_kill-v11.hc"
 #endif
 
+#ifdef VC_ENABLE_API_V13
+#  define vc_ctx_kill_v13      vc_ctx_kill_v11
+#endif
+
+
+#if defined(VC_ENABLE_API_V11) || defined(VC_ENABLE_API_V13)
+
+  // NOTICE: the reverse order of V11 -> V13 is correct here since these are
+  // the same syscalls
+
 int
 vc_ctx_kill(xid_t ctx, pid_t pid, int sig)
 {
-  CALL_VC(CALL_VC_V11(vc_ctx_kill, ctx, pid, sig));
+  CALL_VC(CALL_VC_V11(vc_ctx_kill, ctx, pid, sig),
+         CALL_VC_V13(vc_ctx_kill, ctx, pid, sig));
 }
 
-#if defined (VC_ENABLE_API_V11)
 #endif
diff --git a/lib/syscall_netadd-net.hc b/lib/syscall_netadd-net.hc
new file mode 100644 (file)
index 0000000..faa4908
--- /dev/null
@@ -0,0 +1,32 @@
+// $Id: syscall_netadd-net.hc,v 1.2 2005/07/15 18:07:24 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+static inline ALWAYSINLINE int
+vc_net_add_net(nid_t nid, struct vc_net_nx const *info)
+{
+  struct vcmd_net_addr_v0              k_info;
+
+  k_info.type  = NETTYPE_USER2KERNEL(info->type);
+  k_info.count = info->count;
+  
+  return vserver(VCMD_net_add, NID_USER2KERNEL(nid), &k_info);
+}
diff --git a/lib/syscall_netadd.c b/lib/syscall_netadd.c
new file mode 100644 (file)
index 0000000..0d13c32
--- /dev/null
@@ -0,0 +1,42 @@
+// $Id: syscall_netadd.c,v 1.1 2004/04/22 20:46:43 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "vserver-internal.h"
+#include "linuxvirtual.h"
+
+#if defined(VC_ENABLE_API_NET)
+#  include "syscall_netadd-net.hc"
+#endif
+
+#if defined(VC_ENABLE_API_NET) && 0
+int
+vc_net_add(nid_t nid, struct vc_net_nx const *info)
+{
+  if (info==0) {
+    errno = EFAULT;
+    return -1;
+  }
+  
+  CALL_VC(CALL_VC_NET(vc_net_add, nid, info));
+}
+#endif
diff --git a/lib/syscall_netcreate-net.hc b/lib/syscall_netcreate-net.hc
new file mode 100644 (file)
index 0000000..32da866
--- /dev/null
@@ -0,0 +1,29 @@
+// $Id: syscall_netcreate-net.hc,v 1.1 2004/04/22 20:46:43 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+static inline ALWAYSINLINE nid_t
+vc_net_create_net(nid_t nid)
+{
+  nid_t                res = vserver(VCMD_net_create, NID_USER2KERNEL(nid), 0);
+
+  return NID_KERNEL2USER(res);
+}
diff --git a/lib/syscall_netcreate.c b/lib/syscall_netcreate.c
new file mode 100644 (file)
index 0000000..fc80de4
--- /dev/null
@@ -0,0 +1,37 @@
+// $Id: syscall_netcreate.c,v 1.1 2004/04/22 20:46:43 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "vserver-internal.h"
+#include "linuxvirtual.h"
+
+#if defined(VC_ENABLE_API_NET)
+#  include "syscall_netcreate-net.hc"
+#endif
+
+#if defined(VC_ENABLE_API_NET)
+nid_t
+vc_net_create(nid_t nid)
+{
+  CALL_VC(CALL_VC_NET(vc_net_create, nid));
+}
+#endif
diff --git a/lib/syscall_netmigrate-net.hc b/lib/syscall_netmigrate-net.hc
new file mode 100644 (file)
index 0000000..1fb4738
--- /dev/null
@@ -0,0 +1,27 @@
+// $Id: syscall_netmigrate-net.hc,v 1.1 2004/04/22 20:46:43 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+static inline ALWAYSINLINE int
+vc_net_migrate_net(nid_t nid)
+{
+  return vserver(VCMD_net_migrate, NID_USER2KERNEL(nid), 0);
+}
diff --git a/lib/syscall_netmigrate.c b/lib/syscall_netmigrate.c
new file mode 100644 (file)
index 0000000..42b2e04
--- /dev/null
@@ -0,0 +1,37 @@
+// $Id: syscall_netmigrate.c,v 1.1 2004/04/22 20:46:43 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "vserver-internal.h"
+#include "linuxvirtual.h"
+
+#if defined(VC_ENABLE_API_NET)
+#  include "syscall_netmigrate-net.hc"
+#endif
+
+#if defined(VC_ENABLE_API_NET)
+int
+vc_net_migrate(nid_t nid)
+{
+  CALL_VC(CALL_VC_NET(vc_net_migrate, nid));
+}
+#endif
diff --git a/lib/syscall_netremove-net.hc b/lib/syscall_netremove-net.hc
new file mode 100644 (file)
index 0000000..4018011
--- /dev/null
@@ -0,0 +1,32 @@
+// $Id: syscall_netremove-net.hc,v 1.2 2005/07/15 18:07:24 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+static inline ALWAYSINLINE int
+vc_net_remove_net(nid_t nid, struct vc_net_nx const *info)
+{
+  struct vcmd_net_addr_v0              k_info;
+
+  k_info.type  = NETTYPE_USER2KERNEL(info->type);
+  k_info.count = info->count;
+  
+  return vserver(VCMD_net_remove, NID_USER2KERNEL(nid), &k_info);
+}
diff --git a/lib/syscall_netremove.c b/lib/syscall_netremove.c
new file mode 100644 (file)
index 0000000..77af245
--- /dev/null
@@ -0,0 +1,42 @@
+// $Id: syscall_netremove.c,v 1.1 2004/04/22 20:46:43 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "vserver-internal.h"
+#include "linuxvirtual.h"
+
+#if defined(VC_ENABLE_API_NET)
+#  include "syscall_netremove-net.hc"
+#endif
+
+#if defined(VC_ENABLE_API_NET) && 0
+int
+vc_net_remove(nid_t nid, struct vc_net_nx const *info)
+{
+  if (info==0) {
+    errno = EFAULT;
+    return -1;
+  }
+  
+  CALL_VC(CALL_VC_NET(vc_net_remove, nid, info));
+}
+#endif
diff --git a/lib/syscall_remdlimit-v13.hc b/lib/syscall_remdlimit-v13.hc
new file mode 100644 (file)
index 0000000..e3de814
--- /dev/null
@@ -0,0 +1,34 @@
+// $Id: syscall_remdlimit-v13.hc,v 1.3 2005/03/02 01:29:44 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+
+static inline ALWAYSINLINE int
+vc_rem_dlimit_v13b(char const *filename, xid_t xid, uint32_t flags)
+{
+  struct vcmd_ctx_dlimit_base_v0       init = {
+    .name  = filename,
+    .flags = flags
+  };
+
+  return vserver(VCMD_rem_dlimit, CTX_USER2KERNEL(xid), &init);
+}
diff --git a/lib/syscall_remdlimit.c b/lib/syscall_remdlimit.c
new file mode 100644 (file)
index 0000000..16f5b00
--- /dev/null
@@ -0,0 +1,36 @@
+// $Id: syscall_remdlimit.c,v 1.2 2005/03/02 01:27:54 ensc Exp $   --*- c++ -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "linuxvirtual.h"
+
+#include "vserver-internal.h"
+
+#ifdef VC_ENABLE_API_V13
+#  include "syscall_remdlimit-v13.hc"
+#endif
+
+int
+vc_rem_dlimit(char const *filename, xid_t xid, uint32_t flags)
+{
+  CALL_VC(CALL_VC_V13B(vc_rem_dlimit, filename, xid, flags));
+}
index 05671e7..c463df5 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: syscall_rlimit-v11.hc,v 1.1.2.7 2004/02/20 19:43:29 ensc Exp $    --*- c++ -*--
+// $Id: syscall_rlimit-v11.hc,v 1.5 2004/02/20 19:03:24 ensc Exp $    --*- c++ -*--
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 //  
@@ -35,7 +35,7 @@ vc_get_rlimit_v11(xid_t ctx, int resource, struct vc_rlimit *lim)
   int                          rc;
 
   vc_lim.id        = resource;
-  rc = vserver(VC_CMD(RLIMIT, 1, 0), CTX_USER2KERNEL(ctx), &vc_lim);
+  rc = vserver(VCMD_get_rlimit, CTX_USER2KERNEL(ctx), &vc_lim);
   lim->min  = KERN2USR(vc_lim.minimum);
   lim->soft = KERN2USR(vc_lim.softlimit);
   lim->hard = KERN2USR(vc_lim.maximum);
@@ -53,18 +53,17 @@ vc_set_rlimit_v11(xid_t ctx, int resource, struct vc_rlimit const *lim)
   vc_lim.softlimit = USR2KERN(lim->soft);
   vc_lim.maximum   = USR2KERN(lim->hard);
 
-  return vserver(VC_CMD(RLIMIT, 2, 0), CTX_USER2KERNEL(ctx), &vc_lim);
+  return vserver(VCMD_set_rlimit, CTX_USER2KERNEL(ctx), &vc_lim);
 }
 
 static inline ALWAYSINLINE int
-vc_get_rlimit_mask_v11(xid_t ctx, int tmp, struct vc_rlimit_mask *lim)
+vc_get_rlimit_mask_v11(xid_t ctx, int UNUSED tmp, struct vc_rlimit_mask *lim)
 {
   struct vcmd_ctx_rlimit_mask_v0       vc_lim;
   int                                  rc;
 
-  (void)tmp;
+  rc = vserver(VCMD_get_rlimit_mask, CTX_USER2KERNEL(ctx), &vc_lim);
 
-  rc = vserver(VC_CMD(RLIMIT, 3, 0), CTX_USER2KERNEL(ctx), &vc_lim);
   lim->min  = vc_lim.minimum;
   lim->soft = vc_lim.softlimit;
   lim->hard = vc_lim.maximum;
index 445878c..9a468fb 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: syscall_rlimit.c,v 1.1.2.2 2003/12/30 13:45:56 ensc Exp $    --*- c++ -*--
+// $Id: syscall_rlimit.c,v 1.4 2004/01/21 18:55:12 ensc Exp $    --*- c++ -*--
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 //  
 #include "compat.h"
 
 #include "vserver.h"
-#include "vserver-internal.h"
+#include "internal.h"
 #include "linuxvirtual.h"
 
-#ifdef VC_ENABLE_API_V11
+
+#include "vserver-internal.h"
+
+#if defined(VC_ENABLE_API_V11) || defined(VC_ENABLE_API_V13)
 #  include "syscall_rlimit-v11.hc"
 #endif
 
-#if defined (VC_ENABLE_API_V11)
+#ifdef VC_ENABLE_API_V13
+#  define vc_get_rlimit_v13            vc_get_rlimit_v11
+#  define vc_set_rlimit_v13            vc_set_rlimit_v11
+#  define vc_get_rlimit_mask_v13       vc_get_rlimit_mask_v11
+#endif
+
+
+#if defined(VC_ENABLE_API_V11) || defined(VC_ENABLE_API_V13)
+
+  // NOTICE: the reverse order of V11 -> V13 is correct here since these are
+  // the same syscalls
 
 int
 vc_get_rlimit(xid_t ctx, int resource, struct vc_rlimit *lim)
 {
-  CALL_VC(CALL_VC_V11(vc_get_rlimit, ctx, resource, lim));
+  CALL_VC(CALL_VC_V11(vc_get_rlimit, ctx, resource, lim),
+         CALL_VC_V13(vc_get_rlimit, ctx, resource, lim));
 }
 
 int
 vc_set_rlimit(xid_t ctx, int resource, struct vc_rlimit const *lim)
 {
-  CALL_VC(CALL_VC_V11(vc_set_rlimit, ctx, resource, lim));
+  CALL_VC(CALL_VC_V11(vc_set_rlimit, ctx, resource, lim),
+         CALL_VC_V13(vc_set_rlimit, ctx, resource, lim));
 }
 
 int
 vc_get_rlimit_mask(xid_t ctx, struct vc_rlimit_mask *lim)
 {
-  CALL_VC(CALL_VC_V11(vc_get_rlimit_mask, ctx, 0, lim));
+  CALL_VC(CALL_VC_V11(vc_get_rlimit_mask, ctx, 0, lim),
+         CALL_VC_V13(vc_get_rlimit_mask, ctx, 0, lim));
 }
     
 
diff --git a/lib/syscall_setccaps-v13.hc b/lib/syscall_setccaps-v13.hc
new file mode 100644 (file)
index 0000000..a2b082a
--- /dev/null
@@ -0,0 +1,33 @@
+// $Id: syscall_setccaps-v13.hc,v 1.2 2004/03/24 01:07:11 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+static inline ALWAYSINLINE int
+vc_set_ccaps_v13(xid_t xid, struct vc_ctx_caps const *caps)
+{
+  struct vcmd_ctx_caps_v0      k_caps;
+
+  k_caps.bcaps = caps->bcaps & caps->bmask;
+  k_caps.ccaps = caps->ccaps;
+  k_caps.cmask = caps->cmask;
+  
+  return vserver(VCMD_set_ccaps, CTX_USER2KERNEL(xid), &k_caps);
+}
diff --git a/lib/syscall_setccaps.c b/lib/syscall_setccaps.c
new file mode 100644 (file)
index 0000000..354c6fa
--- /dev/null
@@ -0,0 +1,42 @@
+// $Id: syscall_setccaps.c,v 1.1 2004/03/07 19:35:59 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "vserver-internal.h"
+#include "linuxvirtual.h"
+
+#if defined(VC_ENABLE_API_V13)
+#  include "syscall_setccaps-v13.hc"
+#endif
+
+#if defined(VC_ENABLE_API_V13)
+int
+vc_set_ccaps(xid_t xid, struct vc_ctx_caps const *caps)
+{
+  if (caps==0) {
+    errno = EFAULT;
+    return -1;
+  }
+  
+  CALL_VC(CALL_VC_V13A(vc_set_ccaps, xid, caps));
+}
+#endif
diff --git a/lib/syscall_setcflags-v13.hc b/lib/syscall_setcflags-v13.hc
new file mode 100644 (file)
index 0000000..45385cf
--- /dev/null
@@ -0,0 +1,37 @@
+// $Id: syscall_setcflags-v13.hc,v 1.1 2004/04/14 23:19:51 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+static inline ALWAYSINLINE int
+vc_set_cflags_v13(xid_t xid, struct vc_ctx_flags const *flags)
+{
+  struct vcmd_ctx_flags_v0     k_flags;
+
+  if (flags==0) {
+    errno = EFAULT;
+    return -1;
+  }
+
+  k_flags.flagword = flags->flagword;
+  k_flags.mask     = flags->mask;
+  
+  return vserver(VCMD_set_cflags, CTX_USER2KERNEL(xid), &k_flags);
+}
diff --git a/lib/syscall_setcflags.c b/lib/syscall_setcflags.c
new file mode 100644 (file)
index 0000000..05b3b14
--- /dev/null
@@ -0,0 +1,42 @@
+// $Id: syscall_setcflags.c,v 1.1 2004/04/14 23:19:51 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "vserver-internal.h"
+#include "linuxvirtual.h"
+
+#if defined(VC_ENABLE_API_V13)
+#  include "syscall_setcflags-v13.hc"
+#endif
+
+#if defined(VC_ENABLE_API_V13)
+int
+vc_set_cflags(xid_t xid, struct vc_ctx_flags const *flags)
+{
+  if (flags==0) {
+    errno = EFAULT;
+    return -1;
+  }
+  
+  CALL_VC(CALL_VC_V13A(vc_set_cflags, xid, flags));
+}
+#endif
diff --git a/lib/syscall_setdlimit-v13.hc b/lib/syscall_setdlimit-v13.hc
new file mode 100644 (file)
index 0000000..f4df0b7
--- /dev/null
@@ -0,0 +1,40 @@
+// $Id: syscall_setdlimit-v13.hc,v 1.2 2005/03/02 01:29:44 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+
+static inline ALWAYSINLINE int
+vc_set_dlimit_v13b(char const *filename, xid_t xid,
+                  uint_least32_t flags, struct vc_ctx_dlimit const *limits)
+{
+  struct vcmd_ctx_dlimit_v0    attr = {
+    .name              = filename,
+    .flags             = flags,
+    .space_used                = CDLIM_USER2KERNEL(limits->space_used),
+    .space_total       = CDLIM_USER2KERNEL(limits->space_total),
+    .inodes_used       = CDLIM_USER2KERNEL(limits->inodes_used),
+    .inodes_total      = CDLIM_USER2KERNEL(limits->inodes_total),
+    .reserved          = CDLIM_USER2KERNEL(limits->reserved),
+  };
+  
+  return vserver(VCMD_set_dlimit, CTX_USER2KERNEL(xid), &attr);
+}
diff --git a/lib/syscall_setdlimit.c b/lib/syscall_setdlimit.c
new file mode 100644 (file)
index 0000000..a08bc7b
--- /dev/null
@@ -0,0 +1,37 @@
+// $Id: syscall_setdlimit.c,v 1.2 2005/03/02 01:27:54 ensc Exp $    --*- c++ -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "linuxvirtual.h"
+
+#include "vserver-internal.h"
+
+#ifdef VC_ENABLE_API_V13
+#  include "syscall_setdlimit-v13.hc"
+#endif
+
+int
+vc_set_dlimit(char const *filename, xid_t xid,
+             uint_least32_t flags, struct vc_ctx_dlimit const *limits)
+{
+  CALL_VC(CALL_VC_V13B(vc_set_dlimit, filename, xid, flags, limits));
+}
diff --git a/lib/syscall_setiattr-fscompat.hc b/lib/syscall_setiattr-fscompat.hc
new file mode 100644 (file)
index 0000000..422ec80
--- /dev/null
@@ -0,0 +1,91 @@
+// $Id: syscall_setiattr-fscompat.hc,v 1.3 2005/07/15 18:06:27 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "ioctl-setext2flags.hc"
+#include "ioctl-setfilecontext.hc"
+#include "ioctl-setxflg.hc"
+#include "ioctl-getxflg.hc"
+
+#include <fcntl.h>
+
+static inline ALWAYSINLINE int
+vc_set_iattr_fscompat(char const *filename,
+                     xid_t xid,
+                     uint32_t flags, uint32_t mask)
+{
+  int                  fd;
+  struct stat          st;
+  int                  stat_rc;
+
+  fd = open(filename, O_RDONLY|O_NONBLOCK);
+  if (fd==-1) return -1;
+    
+  stat_rc = fstat(fd, &st);
+  if (stat_rc==-1) goto err;
+
+  if ( (mask&VC_IATTR_IUNLINK) ) {
+    unsigned int const tmp = VC_IMMUTABLE_FILE_FL|VC_IMMUTABLE_LINK_FL;
+    if (vc_X_set_ext2flags(fd,
+                          (flags&VC_IATTR_IUNLINK) ? tmp : 0,
+                          (flags&VC_IATTR_IUNLINK) ? 0   : tmp)==-1)
+      goto err;
+  }
+
+  if ( (mask&VC_IATTR_BARRIER) ) {
+    if ((flags&VC_IATTR_BARRIER)) {
+      if (vc_X_set_ext2flags(fd, VC_IMMUTABLE_LINK_FL, 0)==-1 ||
+         fchmod(fd, 0))
+       goto err;
+    }
+    else {
+      if (vc_X_set_ext2flags(fd, 0, VC_IMMUTABLE_LINK_FL)==-1 ||
+         fchmod(fd, 0500))
+       goto err;
+    }      
+  }
+
+  if ( (mask&VC_IATTR_XID) &&
+       vc_X_set_filecontext(fd, xid)==-1)
+    goto err;
+
+  if ( (mask&(VC_IATTR_HIDE|VC_IATTR_WATCH)) ) {
+    long               tmp;
+    if (vc_X_get_xflg(fd, &tmp)==-1) goto err;
+
+    tmp &= ~( ((mask&VC_IATTR_HIDE)   ? 1 : 0) |
+             ((mask&VC_IATTR_WATCH) ? 2 : 0) );
+    tmp |= ( ((flags&VC_IATTR_HIDE)  ? 1 : 0) |
+            ((flags&VC_IATTR_WATCH) ? 2 : 0) );
+
+    if (vc_X_set_xflg(fd, tmp)==-1) goto err;
+  }
+
+  close(fd);
+  return 0;
+  err:
+  {
+    int        old_errno = errno;
+    close(fd);
+    errno = old_errno;
+    return -1;
+  }
+}
diff --git a/lib/syscall_setiattr-v13.hc b/lib/syscall_setiattr-v13.hc
new file mode 100644 (file)
index 0000000..06ec42a
--- /dev/null
@@ -0,0 +1,35 @@
+// $Id: syscall_setiattr-v13.hc,v 1.7 2004/03/12 02:56:46 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+
+static inline ALWAYSINLINE int
+vc_set_iattr_v13(char const *filename, xid_t xid,  uint32_t flags, uint32_t mask)
+{
+  struct vcmd_ctx_iattr_v1     attr;
+
+  attr.name  = filename;
+  attr.xid   = CTX_USER2KERNEL(xid);
+  attr.flags = flags;
+  attr.mask  = mask;
+  return vserver(VCMD_set_iattr, 0, &attr);
+}
diff --git a/lib/syscall_setiattr.c b/lib/syscall_setiattr.c
new file mode 100644 (file)
index 0000000..6fb32dd
--- /dev/null
@@ -0,0 +1,44 @@
+// $Id: syscall_setiattr.c,v 1.2 2004/02/19 22:22:43 ensc Exp $    --*- c++ -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "linuxvirtual.h"
+
+#if defined(VC_ENABLE_API_FSCOMPAT) && defined(VC_ENABLE_API_V13)
+#  define VC_MULTIVERSION_SYSCALL      1
+#endif
+#include "vserver-internal.h"
+
+#ifdef VC_ENABLE_API_V13
+#  include "syscall_setiattr-v13.hc"
+#endif
+
+#ifdef VC_ENABLE_API_FSCOMPAT
+#  include "syscall_setiattr-fscompat.hc"
+#endif
+
+int
+vc_set_iattr(char const *filename, xid_t xid,  uint32_t flags, uint32_t mask)
+{
+  CALL_VC(CALL_VC_V13     (vc_set_iattr, filename, xid, flags, mask),
+         CALL_VC_FSCOMPAT(vc_set_iattr, filename, xid, flags, mask));
+}
diff --git a/lib/syscall_setnamespace-v13.hc b/lib/syscall_setnamespace-v13.hc
new file mode 100644 (file)
index 0000000..1646eac
--- /dev/null
@@ -0,0 +1,29 @@
+// $Id: syscall_setnamespace-v13.hc,v 1.1 2004/02/27 04:39:09 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+
+static inline ALWAYSINLINE int
+vc_set_namespace_v13(int UNUSED tmp)
+{
+  return vserver(VCMD_set_namespace, 0, 0);
+}
diff --git a/lib/syscall_setnamespace.c b/lib/syscall_setnamespace.c
new file mode 100644 (file)
index 0000000..fef66d0
--- /dev/null
@@ -0,0 +1,36 @@
+// $Id: syscall_setnamespace.c,v 1.1 2004/02/27 04:39:09 ensc Exp $    --*- c++ -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "linuxvirtual.h"
+
+#include "vserver-internal.h"
+
+#ifdef VC_ENABLE_API_V13
+#  include "syscall_setnamespace-v13.hc"
+#endif
+
+int
+vc_set_namespace()
+{
+  CALL_VC(CALL_VC_V13(vc_set_namespace,0));
+}
diff --git a/lib/syscall_setncaps-net.hc b/lib/syscall_setncaps-net.hc
new file mode 100644 (file)
index 0000000..12a4af8
--- /dev/null
@@ -0,0 +1,32 @@
+// $Id: syscall_setncaps-net.hc,v 1.1 2004/04/22 20:46:43 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+static inline ALWAYSINLINE int
+vc_set_ncaps_net(nid_t nid, struct vc_net_caps const *caps)
+{
+  struct vcmd_net_caps_v0      k_caps;
+
+  k_caps.ncaps = caps->ncaps;
+  k_caps.cmask = caps->cmask;
+  
+  return vserver(VCMD_set_ncaps, NID_USER2KERNEL(nid), &k_caps);
+}
diff --git a/lib/syscall_setncaps.c b/lib/syscall_setncaps.c
new file mode 100644 (file)
index 0000000..c3ac419
--- /dev/null
@@ -0,0 +1,42 @@
+// $Id: syscall_setncaps.c,v 1.1 2004/04/22 20:46:43 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "vserver-internal.h"
+#include "linuxvirtual.h"
+
+#if defined(VC_ENABLE_API_NET)
+#  include "syscall_setncaps-net.hc"
+#endif
+
+#if defined(VC_ENABLE_API_NET)
+int
+vc_set_ncaps(nid_t nid, struct vc_net_caps const *caps)
+{
+  if (caps==0) {
+    errno = EFAULT;
+    return -1;
+  }
+  
+  CALL_VC(CALL_VC_NET(vc_set_ncaps, nid, caps));
+}
+#endif
diff --git a/lib/syscall_setnflags-net.hc b/lib/syscall_setnflags-net.hc
new file mode 100644 (file)
index 0000000..e327c5e
--- /dev/null
@@ -0,0 +1,37 @@
+// $Id: syscall_setnflags-net.hc,v 1.1 2004/04/22 20:46:43 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+static inline ALWAYSINLINE int
+vc_set_nflags_net(nid_t nid, struct vc_net_flags const *flags)
+{
+  struct vcmd_net_flags_v0     k_flags;
+
+  if (flags==0) {
+    errno = EFAULT;
+    return -1;
+  }
+
+  k_flags.flagword = flags->flagword;
+  k_flags.mask     = flags->mask;
+  
+  return vserver(VCMD_set_nflags, NID_USER2KERNEL(nid), &k_flags);
+}
diff --git a/lib/syscall_setnflags.c b/lib/syscall_setnflags.c
new file mode 100644 (file)
index 0000000..cdceb51
--- /dev/null
@@ -0,0 +1,42 @@
+// $Id: syscall_setnflags.c,v 1.1 2004/04/22 20:46:43 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "vserver-internal.h"
+#include "linuxvirtual.h"
+
+#if defined(VC_ENABLE_API_NET)
+#  include "syscall_setnflags-net.hc"
+#endif
+
+#if defined(VC_ENABLE_API_NET)
+int
+vc_set_nflags(nid_t nid, struct vc_net_flags const *flags)
+{
+  if (flags==0) {
+    errno = EFAULT;
+    return -1;
+  }
+  
+  CALL_VC(CALL_VC_NET(vc_set_nflags, nid, flags));
+}
+#endif
index 02284e0..4cf56f4 100644 (file)
 #endif
 
 #include "vserver.h"
-#include "sched_cmd.h"
+#include <lib_internal/util.h>
 
 #define VCGET(MASK,VAL)                ((data->set_mask & (MASK)) ? (VAL) : SCHED_KEEP);
 
-
 static inline ALWAYSINLINE int
 vc_set_sched_v13obs(xid_t xid, struct vc_set_sched const *data)
 {
@@ -55,7 +54,7 @@ vc_set_sched_v13b(xid_t xid, struct vc_set_sched const *data)
       X(set_mask)   && X(fill_rate)  && X(interval)   && X(tokens) &&
       X(tokens_min) && X(tokens_max) && X(priority_bias))
     return vserver(VCMD_set_sched, CTX_USER2KERNEL(xid),
-                  (struct vc_set_sched *)(data));
+                  const_cast(struct vc_set_sched *)(data));
   else {
     k_data.set_mask      = data->set_mask;
     k_data.fill_rate     = data->fill_rate;
index 5884fc0..8f410d0 100644 (file)
 #ifdef HAVE_CONFIG_H
 #  include <config.h>
 #endif
-#include "compat.h"
 
 #include "vserver.h"
+#include "linuxvirtual.h"
 
 #define VC_MULTIVERSION_SYSCALL        1
 #include "vserver-internal.h"
 
-#include "linuxvirtual.h"
-
-#define VC_ENABLE_API_V13
-
 #ifdef VC_ENABLE_API_V13
 #  include "syscall_setsched-v13.hc"
 #endif
diff --git a/lib/syscall_setvhiname-olduts.hc b/lib/syscall_setvhiname-olduts.hc
new file mode 100644 (file)
index 0000000..6b67011
--- /dev/null
@@ -0,0 +1,38 @@
+// $Id: syscall_setvhiname-olduts.hc,v 1.1 2004/02/02 18:32:53 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+static inline ALWAYSINLINE int
+vc_set_vhi_name_olduts(xid_t xid, vc_uts_type type, char const *val, size_t len)
+{
+  if (xid!=VC_SAMECTX) {
+    errno = ESRCH;
+    return -1;
+  }
+  
+  switch (type) {
+    case vcVHI_NODENAME                :  return sethostname  (val, len);
+    case vcVHI_DOMAINNAME      :  return setdomainname(val, len);
+    default                    :
+      errno = ENOENT;
+      return -1;
+  }
+}
diff --git a/lib/syscall_setvhiname-v13.hc b/lib/syscall_setvhiname-v13.hc
new file mode 100644 (file)
index 0000000..b493e54
--- /dev/null
@@ -0,0 +1,51 @@
+// $Id: syscall_setvhiname-v13.hc,v 1.4 2005/07/03 17:49:57 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <string.h>
+
+  // HACK: workaround naming changes instead of defining yet another interface
+  // version
+#if !defined(VCMD_set_vhi_name) && defined(VCMD_vx_set_vhi_name)
+#  define VCMD_set_vhi_name    VCMD_vx_set_vhi_name
+#  define vcmd_vhi_name_v0     vcmd_vxi_vhi_name_v0
+#endif
+
+static inline ALWAYSINLINE int
+vc_set_vhi_name_v13(xid_t xid, vc_uts_type type, char const *val, size_t len)
+{
+  struct vcmd_vhi_name_v0      cmd;
+  int                          rc;
+
+  if (len>=sizeof(cmd.name)) {
+    errno = E2BIG;
+    return -1;
+  }
+
+  cmd.field = VHI_USER2KERNEL(type);
+  memcpy(cmd.name, val, len);
+  cmd.name[len] = '\0';
+
+  rc = vserver(VCMD_set_vhi_name, CTX_USER2KERNEL(xid), &cmd);
+  ENSC_FIX_IOCTL(rc);
+
+  return rc;
+}
diff --git a/lib/syscall_setvhiname.c b/lib/syscall_setvhiname.c
new file mode 100644 (file)
index 0000000..a5ab1f7
--- /dev/null
@@ -0,0 +1,46 @@
+// $Id: syscall_setvhiname.c,v 1.1 2004/02/02 18:32:53 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "linuxvirtual.h"
+
+#if defined(VC_ENABLE_API_OLDUTS) && defined(VC_ENABLE_API_V13)
+#  define VC_MULTIVERSION_SYSCALL      1
+#endif
+#include "vserver-internal.h"
+
+#ifdef VC_ENABLE_API_V13
+#  include "syscall_setvhiname-v13.hc"
+#endif
+
+#ifdef VC_ENABLE_API_OLDUTS
+#  include "syscall_setvhiname-olduts.hc"
+#endif
+
+int
+vc_set_vhi_name(xid_t xid, vc_uts_type type, char const *val, size_t len)
+{
+  if (len==(size_t)(-1)) len=strlen(val);
+  
+  CALL_VC(CALL_VC_V13   (vc_set_vhi_name, xid, type, val, len),
+         CALL_VC_OLDUTS(vc_set_vhi_name, xid, type, val, len));
+}
diff --git a/lib/syscall_waitexit-v13.hc b/lib/syscall_waitexit-v13.hc
new file mode 100644 (file)
index 0000000..f772c6b
--- /dev/null
@@ -0,0 +1,29 @@
+// $Id: syscall_waitexit-v13.hc,v 1.1 2005/05/05 09:17:25 ensc Exp $    --*- c++ -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+static inline ALWAYSINLINE int
+vc_wait_exit_v13b(xid_t ctx)
+{
+  struct vcmd_wait_exit_v0     param = { .a = 0, .b = 0 };
+
+  return vserver(VCMD_wait_exit, CTX_USER2KERNEL(ctx), &param);
+}
diff --git a/lib/syscall_waitexit.c b/lib/syscall_waitexit.c
new file mode 100644 (file)
index 0000000..e23df1b
--- /dev/null
@@ -0,0 +1,39 @@
+// $Id: syscall_waitexit.c,v 1.1 2005/05/05 09:17:25 ensc Exp $    --*- c++ -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "vserver-internal.h"
+#include "linuxvirtual.h"
+
+#if defined(VC_ENABLE_API_V13)
+#  include "syscall_waitexit-v13.hc"
+#endif
+
+#if defined(VC_ENABLE_API_V13)
+
+int
+vc_wait_exit(xid_t ctx)
+{
+  CALL_VC(CALL_VC_V13B(vc_wait_exit, ctx));
+}
+
+#endif
diff --git a/lib/testsuite/Makefile-files b/lib/testsuite/Makefile-files
new file mode 100644 (file)
index 0000000..ee8b213
--- /dev/null
@@ -0,0 +1,49 @@
+## $Id: Makefile-files,v 1.9 2005/04/28 17:54:57 ensc Exp $            --*- makefile -*--
+
+## Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+##  
+## 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; version 2 of the License.
+##  
+## 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.
+
+DIETPROGS +=                   lib/testsuite/cflags \
+                               lib/testsuite/personality \
+                               lib/testsuite/fmt
+
+check_PROGRAMS +=              lib/testsuite/cflags \
+                               lib/testsuite/personality \
+                               lib/testsuite/fmt \
+                               lib/testsuite/parselimit
+TESTS +=                       lib/testsuite/cflags \
+                               lib/testsuite/personality \
+                               lib/testsuite/fmt \
+                               lib/testsuite/parselimit
+
+lib_testsuite_cflags_SOURCES =         lib/testsuite/cflags.c
+lib_testsuite_cflags_LDADD =           $(LIBVSERVER)
+lib_testsuite_cflags_LDFLAGS =         $(VSERVER_LDFLGS)
+lib_testsuite_cflags_CPPFLAGS =                $(AM_CPPFLAGS) -DENSC_TESTSUITE
+
+lib_testsuite_personality_SOURCES =    lib/testsuite/personality.c
+lib_testsuite_personality_LDADD =      $(LIBVSERVER)
+lib_testsuite_personality_LDFLAGS =    $(VSERVER_LDFLGS)
+lib_testsuite_personality_CPPFLAGS =   $(AM_CPPFLAGS) -DENSC_TESTSUITE
+
+lib_testsuite_fmt_SOURCES =            lib/testsuite/fmt.c
+lib_testsuite_fmt_LDADD =              $(LIBVSERVER)
+lib_testsuite_fmt_LDFLAGS =            $(VSERVER_LDFLGS)
+lib_testsuite_fmt_CPPFLAGS =           $(AM_CPPFLAGS) -DENSC_TESTSUITE
+
+lib_testsuite_parselimit_SOURCES =     lib/testsuite/parselimit.c
+lib_testsuite_parselimit_LDADD =       $(LIBVSERVER)
+lib_testsuite_parselimit_LDFLAGS =     $(VSERVER_LDFLGS)
+lib_testsuite_parselimit_CPPFLAGS =    $(AM_CPPFLAGS) -DENSC_TESTSUITE
diff --git a/lib/testsuite/cflags.c b/lib/testsuite/cflags.c
new file mode 100644 (file)
index 0000000..9e5dcc0
--- /dev/null
@@ -0,0 +1,204 @@
+// $Id: cflags.c,v 1.6 2005/03/02 01:24:25 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <ensc@delenn.intern.sigma-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "lib_internal/coreassert.h"
+#include "vserver.h"
+
+#include <string.h>
+#include <unistd.h>
+
+
+#define TEST_T2F_C(X,Y,Z) assert(vc_text2cflag_compat(X,Y)==Z)
+#define TEST_F2T_C(Y,X) {                              \
+    char const *x=vc_hicflag2text_compat(X);           \
+    assert((x==0 && Y==0) || (x!=0 && Y!=0));          \
+    if (x!=0 && Y!=0) assert(strcmp(x, Y ? Y : "")==0);        \
+  }
+
+#define TEST_LIST_C(STR,LEN,EXP,ERR_POS,ERR_LEN) {     \
+    struct vc_err_listparser   err;                    \
+    char                       buf[] = STR;            \
+    uint32_t                   res;                    \
+    res = vc_list2cflag_compat(buf, LEN, &err);                \
+    assert(res==(EXP));                                        \
+    assert(err.len==ERR_LEN);                          \
+    if (ERR_POS==-1) assert(err.ptr==0);               \
+    else             assert(err.ptr==buf+(ERR_POS));   \
+  }
+
+//----
+
+#define TEST_T2F(X,Y,Z) assert(vc_text2cflag(X,Y)==Z)
+#define TEST_F2T(Y,X) {                                                \
+    uint_least64_t x = (X);                                    \
+    char const *rc=vc_locflag2text(&x);                                \
+    assert((rc==0 && Y==0) || (rc!=0 && Y!=0));                        \
+    if (rc!=0 && Y!=0) assert(strcmp(rc, Y ? Y : "")==0);      \
+  }
+#define TEST_LIST(STR,LEN,EXP_RES,EXP_FLAG,EXP_MASK,ERR_POS,ERR_LEN) { \
+    struct vc_err_listparser   err;                                    \
+    char                       buf[] = STR;                            \
+    volatile int               res;                                    \
+    struct vc_ctx_flags                flags = {0,0};                          \
+    res = vc_list2cflag(buf, LEN, &err, &flags);                       \
+    assert(res==(EXP_RES));                                            \
+    assert(flags.flagword==(uint_least64_t)(EXP_FLAG));                        \
+    assert(flags.mask    ==(uint_least64_t)(EXP_MASK));                        \
+    assert(err.len==ERR_LEN);                                          \
+    if (ERR_POS==-1) assert(err.ptr==0);                               \
+    else             assert(err.ptr==buf+(ERR_POS));                   \
+  }
+
+#define ALL64          (~(uint_least64_t)(0))
+
+int main()
+{
+  TEST_T2F_C("lock",     0, S_CTX_INFO_LOCK);
+  TEST_T2F_C("lockXXXX", 4, S_CTX_INFO_LOCK);
+  TEST_T2F_C("locXXXXX", 3, 0);
+  TEST_T2F_C("sched",    0, S_CTX_INFO_SCHED);
+  TEST_T2F_C("nproc",    0, S_CTX_INFO_NPROC);
+  TEST_T2F_C("private",  0, S_CTX_INFO_PRIVATE);
+  TEST_T2F_C("fakeinit", 0, S_CTX_INFO_INIT);
+  TEST_T2F_C("hideinfo", 0, S_CTX_INFO_HIDEINFO);
+  TEST_T2F_C("ulimit",   0, S_CTX_INFO_ULIMIT);
+  TEST_T2F_C("XXX",      0, 0);
+  TEST_T2F_C("",         0, 0);
+
+  TEST_F2T_C("lock",     S_CTX_INFO_LOCK);
+  TEST_F2T_C("sched",    S_CTX_INFO_SCHED);
+  TEST_F2T_C("nproc",    S_CTX_INFO_NPROC);
+  TEST_F2T_C("private",  S_CTX_INFO_PRIVATE);
+  TEST_F2T_C("fakeinit", S_CTX_INFO_INIT);
+  TEST_F2T_C("hideinfo", S_CTX_INFO_HIDEINFO);
+  TEST_F2T_C("ulimit",   S_CTX_INFO_ULIMIT);
+  TEST_F2T_C(0,          0);
+  TEST_F2T_C("ulimit",   64 | 128 | 23 );
+  TEST_F2T_C("fakeinit", 23);
+
+  TEST_LIST_C("lock",         0, S_CTX_INFO_LOCK,                  -1,0);
+  TEST_LIST_C("lock,sched,",  0, S_CTX_INFO_LOCK|S_CTX_INFO_SCHED, -1,0);
+  TEST_LIST_C("lock,XXX",     0, S_CTX_INFO_LOCK,                   5,3);
+  TEST_LIST_C("",             0, 0,                                -1,0);
+  TEST_LIST_C("X",            0, 0,                                 0,1);
+  TEST_LIST_C("lock,sched,", 10, S_CTX_INFO_LOCK|S_CTX_INFO_SCHED, -1,0);
+
+  //-------
+
+  TEST_T2F("fakeinit", 0, VC_VXF_INFO_INIT);
+  TEST_T2F("XXX",      0, 0);
+  TEST_T2F("",         0, 0);
+  
+  TEST_F2T("fakeinit", VC_VXF_INFO_INIT);
+  TEST_F2T(0,          0);
+
+  TEST_LIST("fakeinit",     0,  0, VC_VXF_INFO_INIT, VC_VXF_INFO_INIT,-1,0);
+  TEST_LIST("FaKeInIt",     0,  0, VC_VXF_INFO_INIT, VC_VXF_INFO_INIT,-1,0);
+  TEST_LIST("~fakeinit",    0,  0, 0,               VC_VXF_INFO_INIT,-1,0);
+  TEST_LIST("!fakeinit",    0,  0, 0,               VC_VXF_INFO_INIT,-1,0);
+  TEST_LIST("fakeinit,XXX", 0, -1, VC_VXF_INFO_INIT, VC_VXF_INFO_INIT, 9,3);
+  TEST_LIST("",             0,  0, 0,               0,              -1,0);
+  TEST_LIST("0",            0,  0, 0,               0,              -1,0);
+  TEST_LIST("00",           0,  0, 0,               0,              -1,0);
+  TEST_LIST("X",            0, -1, 0,               0,               0,1);
+  TEST_LIST("all",          0,  0, ALL64,           ALL64,          -1,0);
+  TEST_LIST("ALL",          0,  0, ALL64,           ALL64,          -1,0);
+  TEST_LIST("any",          0,  0, ALL64,           ALL64,          -1,0);
+  TEST_LIST("ANY",          0,  0, ALL64,           ALL64,          -1,0);
+  TEST_LIST("~all",         0,  0, 0,               ALL64,          -1,0);
+  TEST_LIST("~ALL",         0,  0, 0,               ALL64,          -1,0);
+  TEST_LIST("none",         0,  0, 0,               0,              -1,0);
+  TEST_LIST("NONE",         0,  0, 0,               0,              -1,0);
+  TEST_LIST("~none",        0,  0, 0,               0,              -1,0);
+  TEST_LIST("~NONE",        0,  0, 0,               0,              -1,0);
+  TEST_LIST("all,~fakeinit",0,  0, ~VC_VXF_INFO_INIT,ALL64,         -1,0);
+  TEST_LIST("~all,fakeinit",0,  0, VC_VXF_INFO_INIT, ALL64,         -1,0);
+  TEST_LIST("fakeinit,~all",0,  0, 0,               ALL64,          -1,0);
+  TEST_LIST("none,~lock",   0,  0, 0,               VC_VXF_INFO_LOCK,-1,0);
+  TEST_LIST("~none,lock",   0,  0, VC_VXF_INFO_LOCK,VC_VXF_INFO_LOCK,-1,0);
+  TEST_LIST("lock,none",    0,  0, VC_VXF_INFO_LOCK,VC_VXF_INFO_LOCK,-1,0);
+  TEST_LIST("lock,~none",   0,  0, VC_VXF_INFO_LOCK,VC_VXF_INFO_LOCK,-1,0);
+  TEST_LIST("~",            0, -1, 0,               0,               1,0);
+  TEST_LIST("~~",           0, -1, 0,               0,               2,0);
+  TEST_LIST("!",            0, -1, 0,               0,               1,0);
+  TEST_LIST("^",            0, -1, 0,               0,               1,0);
+  TEST_LIST("fakeinit,~",   0, -1, VC_VXF_INFO_INIT, VC_VXF_INFO_INIT,10,0);
+  TEST_LIST("1",            0,  0, 1,               1,              -1,0);
+  TEST_LIST("1,23,42",      0,  0, 1|23|42,         1|23|42,        -1,0);
+  TEST_LIST("~1",           0,  0, 0,               1,              -1,0);
+  TEST_LIST("!1",           0,  0, 0,               1,              -1,0);
+  TEST_LIST("~~1",          0,  0, 1,               1,              -1,0);
+  TEST_LIST("~~~1",         0,  0, 0,               1,              -1,0);
+  TEST_LIST("~!~1",         0,  0, 0,               1,              -1,0);
+  TEST_LIST("42,fakeinit",  0,  0, VC_VXF_INFO_INIT|42, VC_VXF_INFO_INIT|42, -1,0);
+  TEST_LIST("42x,1",        0, -1, 0,               0,               0,3);
+
+  TEST_LIST("^4,~^2",       0,  0, 0x10,            0x14,           -1,0);
+  TEST_LIST("^4,~~^2",      0,  0, 0x14,            0x14,           -1,0);
+  TEST_LIST("^4,~~~^2",     0,  0, 0x10,            0x14,           -1,0);
+  TEST_LIST("~^2,^4",       0,  0, 0x10,            0x14,           -1,0);
+  TEST_LIST("1,^1,~^2,8",   0,  0, 0x0b,            0x0f,           -1,0);
+
+  TEST_LIST("lock,nproc,private,fakeinit,hideinfo,ulimit,namespace,"
+           "sched_hard,sched_prio,sched_pause,"
+           "virt_mem,virt_uptime,virt_cpu,virt_load,"
+           "hide_mount,hide_netif,state_setup,state_init,"
+           "fork_rss,prolific,igneg_nice",
+           0, 0,
+           VC_VXF_INFO_LOCK|VC_VXF_INFO_NPROC|VC_VXF_INFO_PRIVATE|VC_VXF_INFO_INIT|
+           VC_VXF_INFO_HIDEINFO|VC_VXF_INFO_ULIMIT|VC_VXF_INFO_NAMESPACE|
+           VC_VXF_SCHED_HARD|VC_VXF_SCHED_PRIO|VC_VXF_SCHED_PAUSE|
+           VC_VXF_VIRT_MEM|VC_VXF_VIRT_UPTIME|VC_VXF_VIRT_CPU|VC_VXF_VIRT_LOAD|
+           VC_VXF_HIDE_MOUNT|VC_VXF_HIDE_NETIF|
+           VC_VXF_STATE_SETUP|VC_VXF_STATE_INIT|
+           VC_VXF_FORK_RSS|VC_VXF_PROLIFIC|VC_VXF_IGNEG_NICE,
+
+           VC_VXF_INFO_LOCK|VC_VXF_INFO_NPROC|VC_VXF_INFO_PRIVATE|VC_VXF_INFO_INIT|
+           VC_VXF_INFO_HIDEINFO|VC_VXF_INFO_ULIMIT|VC_VXF_INFO_NAMESPACE|
+           VC_VXF_SCHED_HARD|VC_VXF_SCHED_PRIO|VC_VXF_SCHED_PAUSE|
+           VC_VXF_VIRT_MEM|VC_VXF_VIRT_UPTIME|VC_VXF_VIRT_CPU|VC_VXF_VIRT_LOAD|
+           VC_VXF_HIDE_MOUNT|VC_VXF_HIDE_NETIF|
+           VC_VXF_STATE_SETUP|VC_VXF_STATE_INIT|
+           VC_VXF_FORK_RSS|VC_VXF_PROLIFIC|VC_VXF_IGNEG_NICE,
+
+           -1,0);
+
+  TEST_LIST("~lock,~nproc,~private,~fakeinit,~hideinfo,~ulimit,~namespace,"
+           "~sched_hard,~sched_prio,~sched_pause,"
+           "~virt_mem,~virt_uptime,~virt_cpu,~virt_load,"
+           "~hide_mount,~hide_netif,~state_setup,~state_init,"
+           "~fork_rss,~prolific,~igneg_nice",
+           0, 0,
+           0,
+           VC_VXF_INFO_LOCK|VC_VXF_INFO_NPROC|VC_VXF_INFO_PRIVATE|VC_VXF_INFO_INIT|
+           VC_VXF_INFO_HIDEINFO|VC_VXF_INFO_ULIMIT|VC_VXF_INFO_NAMESPACE|
+           VC_VXF_SCHED_HARD|VC_VXF_SCHED_PRIO|VC_VXF_SCHED_PAUSE|
+           VC_VXF_VIRT_MEM|VC_VXF_VIRT_UPTIME|VC_VXF_VIRT_CPU|VC_VXF_VIRT_LOAD|
+           VC_VXF_HIDE_MOUNT|VC_VXF_HIDE_NETIF|
+           VC_VXF_STATE_SETUP|VC_VXF_STATE_INIT|
+           VC_VXF_FORK_RSS|VC_VXF_PROLIFIC|VC_VXF_IGNEG_NICE,
+
+           -1,0);
+  
+           
+  return 0;
+}
diff --git a/lib/testsuite/fmt.c b/lib/testsuite/fmt.c
new file mode 100644 (file)
index 0000000..bb800bd
--- /dev/null
@@ -0,0 +1,52 @@
+// $Id: fmt.c,v 1.4 2004/04/28 18:07:41 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "lib_internal/coreassert.h"
+
+#include "lib/fmt.h"
+#include <string.h>
+
+#define TEST(VAL, EXP) {                       \
+    char       buf[512];                       \
+    size_t     l;                              \
+    memset(buf, '\23', sizeof buf);            \
+    l = FUNC(buf+1, VAL);                      \
+    assert(l==sizeof(EXP)-1);                  \
+    assert(memcmp(buf+1, EXP, l)==0);          \
+    assert(buf[l+1]=='\23');                   \
+  }
+
+int main()
+{
+  #define FUNC utilvserver_fmt_xuint64
+  TEST(0,  "0");
+  TEST(1,   "1");
+  TEST(15,  "f");
+  TEST(16,  "10");
+  TEST(100, "64");
+  TEST(1000, "3e8");
+  TEST(65535, "ffff");
+  TEST(65536, "10000");
+  TEST(68719476736ul, "1000000000");
+
+  return 0;
+}
diff --git a/lib/testsuite/parselimit.c b/lib/testsuite/parselimit.c
new file mode 100644 (file)
index 0000000..399f84d
--- /dev/null
@@ -0,0 +1,54 @@
+// $Id: parselimit.c,v 1.2 2004/04/28 18:07:41 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "lib_internal/coreassert.h"
+#include "vserver.h"
+
+#define TEST(BUF, RES, VAL)                    \
+  do {                                         \
+    vc_limit_t         res = 0xdeadbeaf;       \
+    assert(vc_parseLimit(BUF, &res)==(RES));   \
+    assert(res==(VAL));                                \
+  } while (0)
+
+#define TESTT(BUF,VAL)  TEST(BUF, true,  VAL)
+#define TESTF(BUF,VAL)  TEST(BUF, false, VAL)
+
+int main()
+{
+  TESTT("0", 0);
+  TESTT("1", 1);
+  TESTT("1k",     1000);
+  TESTT("1K",     1024);
+  TESTT("1m",     1000000);
+  TESTT("1M",     1048576);
+  TESTT("1234",   1234);
+  TESTT("1234\n", 1234);
+  TESTT("inf",    VC_LIM_INFINITY);
+
+  TESTF("x", 0);
+  TESTF("k", 0);
+  TESTF("1kX", 1000);
+  TESTF("",    0);
+
+  return EXIT_SUCCESS;
+}
diff --git a/lib/testsuite/personality.c b/lib/testsuite/personality.c
new file mode 100644 (file)
index 0000000..aa84772
--- /dev/null
@@ -0,0 +1,145 @@
+// $Id: personality.c,v 1.1 2005/04/28 17:54:57 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "lib_internal/coreassert.h"
+#include "vserver.h"
+
+#include <string.h>
+#include <unistd.h>
+#include <linux/personality.h>
+
+
+#define TEST_T2PF(X,Y,Z) assert(vc_text2personalityflag(X,Y)==Z)
+#define TEST_PF2T(Y,X) {                                       \
+    uint_least32_t x = (X);                                    \
+    char const *rc=vc_lopersonality2text(&x);                  \
+    assert((rc==0 && Y==0) || (rc!=0 && Y!=0));                        \
+    if (rc!=0 && Y!=0) assert(strcmp(rc, Y ? Y : "")==0);      \
+  }
+
+#define TEST_LIST(STR,LEN,EXP_RES,EXP_PERS,ERR_POS,ERR_LEN) {          \
+    struct vc_err_listparser   err;                                    \
+    char                       buf[] = STR;                            \
+    volatile int               res;                                    \
+    uint_least32_t             personality = 0;                        \
+    res = vc_list2personalityflag(buf, LEN, &personality, &err);       \
+    assert(res==(EXP_RES));                                            \
+    assert(personality==(uint_least32_t)(EXP_PERS));                   \
+    assert(err.len==ERR_LEN);                                          \
+    if (ERR_POS==-1) assert(err.ptr==0);                               \
+    else             assert(err.ptr==buf+(ERR_POS));                   \
+  }
+    
+
+
+#define TEST_T2PT(X,Y,Z) assert(vc_str2personalitytype(X,Y)==Z)
+
+
+
+int main()
+{
+  TEST_T2PF("mmap_page_zero",      0, MMAP_PAGE_ZERO);
+  TEST_T2PF("MMAP_PAGE_ZERO",      0, MMAP_PAGE_ZERO);
+  TEST_T2PF("MmAp_PaGe_ZeRo",      0, MMAP_PAGE_ZERO);
+  TEST_T2PF("mmap_page_zero",     14, MMAP_PAGE_ZERO);
+  TEST_T2PF("MMAP_PAGE_ZERO",     14, MMAP_PAGE_ZERO);
+  TEST_T2PF("MMAP_PAGE_ZEROXXXX", 14, MMAP_PAGE_ZERO);
+  TEST_T2PF("MMAP_PAGE_ZEROXXXX", 13, 0);
+  TEST_T2PF("MMAP_PAGE_ZERO",     13, 0);
+  TEST_T2PF("MMAP_PAGE_ZERXXX",   13, 0);
+  TEST_T2PF("XXX",                 0, 0);
+  TEST_T2PF("",                    0, 0);
+  
+  TEST_T2PF("ADDR_LIMIT_32BIT",    0, ADDR_LIMIT_32BIT);
+  TEST_T2PF("SHORT_INODE",         0, SHORT_INODE);
+  TEST_T2PF("WHOLE_SECONDS",       0, WHOLE_SECONDS);
+  TEST_T2PF("STICKY_TIMEOUTS",     0, STICKY_TIMEOUTS);
+  TEST_T2PF("ADDR_LIMIT_3GB",      0, ADDR_LIMIT_3GB);
+
+
+    // the  _loc* tests
+  TEST_PF2T("MMAP_PAGE_ZERO",      MMAP_PAGE_ZERO);
+  TEST_PF2T("ADDR_LIMIT_32BIT",    ADDR_LIMIT_32BIT);
+  TEST_PF2T("SHORT_INODE",         SHORT_INODE);
+  TEST_PF2T("WHOLE_SECONDS",       WHOLE_SECONDS);
+  TEST_PF2T("STICKY_TIMEOUTS",     STICKY_TIMEOUTS);
+  TEST_PF2T("ADDR_LIMIT_3GB",      ADDR_LIMIT_3GB);
+
+
+
+  TEST_LIST("mmap_page_zero",      14,  0, MMAP_PAGE_ZERO, -1, 0);
+  TEST_LIST("mmap_page_zero,XXX",  14,  0, MMAP_PAGE_ZERO, -1, 0);
+  TEST_LIST("mmap_page_zero",       0,  0, MMAP_PAGE_ZERO, -1, 0);
+  TEST_LIST("MmAp_pAgE_ZeRo",       0,  0, MMAP_PAGE_ZERO, -1, 0);
+  TEST_LIST("mmap_page_zero,XXX",   0, -1, MMAP_PAGE_ZERO, 15, 3);
+  TEST_LIST("~mmap_page_zero",      0, -1,              0,  0,15);
+  TEST_LIST("!mmap_page_zero",      0, -1,              0,  0,15);
+  TEST_LIST("",                     0,  0,              0, -1, 0);
+  TEST_LIST("0",                    0,  0,              0, -1, 0);
+  TEST_LIST("00",                   0,  0,              0, -1, 0);
+  TEST_LIST("1",                    0,  0,              1, -1, 0);
+  TEST_LIST("1,23,42",              0,  0,        1|23|42, -1, 0);
+  TEST_LIST("^1",                   0,  0,              2, -1, 0);
+  TEST_LIST("^4,^2",                0,  0,           0x14, -1, 0);
+  TEST_LIST("^2,^3",                0,  0,           0x0c, -1, 0);
+  TEST_LIST("^2,~^3",               0, -1,           0x04,  3, 3);
+  TEST_LIST("~0",                   0, -1,              0,  0, 2);
+  TEST_LIST("^",                    0, -1,              0,  1, 0);
+  TEST_LIST("~",                    0, -1,              0,  0, 1);
+  TEST_LIST("!",                    0, -1,              0,  0, 1);
+  TEST_LIST("X",                    0, -1,              0,  0, 1);
+  TEST_LIST("all",                  0, -1,              0,  0, 3);
+  TEST_LIST("ALL",                  0, -1,              0,  0, 3);
+  TEST_LIST("~all",                 0, -1,              0,  0, 4);
+  TEST_LIST("~ALL",                 0, -1,              0,  0, 4);
+  TEST_LIST("any",                  0, -1,              0,  0, 3);
+  TEST_LIST("ANY",                  0, -1,              0,  0, 3);
+  TEST_LIST("~any",                 0, -1,              0,  0, 4);
+  TEST_LIST("~ANY",                 0, -1,              0,  0, 4);
+  TEST_LIST("none",                 0, -1,              0,  0, 4);
+  TEST_LIST("NONE",                 0, -1,              0,  0, 4);
+  TEST_LIST("~none",                0, -1,              0,  0, 5);
+  TEST_LIST("~NONE",                0, -1,              0,  0, 5);
+  TEST_LIST("mmap_page_zero,all",   0, -1, MMAP_PAGE_ZERO, 15, 3);
+  TEST_LIST("mmap_page_zero,any",   0, -1, MMAP_PAGE_ZERO, 15, 3);
+
+  TEST_LIST("mmap_page_zero,addr_limit_32bit,short_inode,whole_seconds,"
+           "sticky_timeouts,addr_limit_3gb",
+           0, 0,
+           MMAP_PAGE_ZERO|ADDR_LIMIT_32BIT|SHORT_INODE|WHOLE_SECONDS|
+           STICKY_TIMEOUTS|ADDR_LIMIT_3GB,
+           -1, 0);
+
+  TEST_T2PT("linux",     0, PER_LINUX);
+  TEST_T2PT("LINUX",     0, PER_LINUX);
+  TEST_T2PT("LiNuX",     0, PER_LINUX);
+  TEST_T2PT("LiNuX",     5, PER_LINUX);
+  TEST_T2PT("LiNuX",     4, VC_BAD_PERSONALITY);
+  TEST_T2PT("LiNuXAAA",  5, PER_LINUX);
+  TEST_T2PT("LiNuXAAA",  4, VC_BAD_PERSONALITY);
+  TEST_T2PT("LiNuAAA",   4, VC_BAD_PERSONALITY);
+  TEST_T2PT("XXX",       0, VC_BAD_PERSONALITY);
+  TEST_T2PT("",          0, VC_BAD_PERSONALITY);
+
+  
+  return 0;
+}
diff --git a/lib/util-vserver.pc.subst b/lib/util-vserver.pc.subst
new file mode 100644 (file)
index 0000000..fcb5ae8
--- /dev/null
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name:          @PACKAGE@
+Description:   vserver libraries
+Version:       @VERSION@
+Requires:
+Libs:          @libflags@-lvserver
+Cflags:                @incflags@
diff --git a/lib/utils-legacy.h b/lib/utils-legacy.h
new file mode 100644 (file)
index 0000000..79bf768
--- /dev/null
@@ -0,0 +1,39 @@
+// $Id: utils-legacy.h,v 1.1 2003/10/16 14:02:54 ensc Exp $    --*- c++ -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_LIB_UTILS_COMPAT_H
+#define H_UTIL_VSERVER_LIB_UTILS_COMPAT_H
+
+#include <stdlib.h>
+#include <sys/types.h>
+
+  // read /proc/<pid>/status into 'buf' which has the size bufsize. When 'str'
+  // is non-null, search this string and return a pointer *after* it. When no
+  // such string could be found, return 0.  When 'str' is null return 'buf'.
+  //
+  // When this function fails (result==0) and errno is EAGAIN, the buffersize
+  // was too small and this function should be called again with a larger
+  // buffer.
+char *         utilvserver_getProcEntry(pid_t pid, char *str,
+                                        char *buf, size_t bufsize);
+
+  // Returns the suggested buffersize for reading a /proc/.../status
+  // file. Return-value can change when utilvserver_getProcEntry() was called.
+size_t         utilvserver_getProcEntryBufsize();
+
+#endif //  H_UTIL_VSERVER_LIB_UTILS_COMPAT_H
diff --git a/lib/val2text-t2v-uint32.c b/lib/val2text-t2v-uint32.c
new file mode 100644 (file)
index 0000000..e83a702
--- /dev/null
@@ -0,0 +1,26 @@
+// $Id: val2text-t2v-uint32.c,v 1.1 2004/03/07 19:35:59 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "internal.h"
+#include "val2text.hc"
+
+TEXT2VAL(uint_least32_t, uint32)
diff --git a/lib/val2text-t2v-uint64.c b/lib/val2text-t2v-uint64.c
new file mode 100644 (file)
index 0000000..47d9e1b
--- /dev/null
@@ -0,0 +1,26 @@
+// $Id: val2text-t2v-uint64.c,v 1.1 2004/03/07 19:35:59 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "internal.h"
+#include "val2text.hc"
+
+TEXT2VAL(uint_least64_t, uint64)
diff --git a/lib/val2text-v2t-uint32.c b/lib/val2text-v2t-uint32.c
new file mode 100644 (file)
index 0000000..b9ec84f
--- /dev/null
@@ -0,0 +1,26 @@
+// $Id: val2text-v2t-uint32.c,v 1.1 2004/03/07 19:35:59 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "internal.h"
+#include "val2text.hc"
+
+VAL2TEXT(uint_least32_t, uint32)
diff --git a/lib/val2text-v2t-uint64.c b/lib/val2text-v2t-uint64.c
new file mode 100644 (file)
index 0000000..42c7bba
--- /dev/null
@@ -0,0 +1,26 @@
+// $Id: val2text-v2t-uint64.c,v 1.1 2004/03/07 19:35:59 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "internal.h"
+#include "val2text.hc"
+
+VAL2TEXT(uint_least64_t, uint64)
diff --git a/lib/val2text.hc b/lib/val2text.hc
new file mode 100644 (file)
index 0000000..0b4c299
--- /dev/null
@@ -0,0 +1,76 @@
+// $Id: val2text.hc,v 1.3 2004/05/08 01:27:48 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#include <strings.h>
+
+#define VAL2TEXT(TYPE,SHORT)                                           \
+  ssize_t                                                              \
+  utilvserver_value2text_##SHORT(char const *str, size_t len,          \
+                                struct Mapping_ ##SHORT const *map,    \
+                                size_t map_len)                        \
+  {                                                                    \
+    size_t     i;                                                      \
+    if (len==0) len=strlen(str);                                       \
+                                                                       \
+    for (i=0; i<map_len; ++i)                                          \
+      if (len==map[i].len &&                                           \
+         strncasecmp(map[i].id, str, len)==0)                          \
+       return i;                                                       \
+                                                                       \
+    return -1;                                                         \
+  }
+
+#define TEXT2VAL(TYPE,SHORT)                                           \
+  static ssize_t                                                       \
+  searchValue(TYPE val,                                                        \
+             struct Mapping_##SHORT const *map,  size_t map_len)       \
+  {                                                                    \
+    size_t             i;                                              \
+    for (i=0; i<map_len; ++i)                                          \
+      if (val == map[i].val) return i;                                 \
+    return -1;                                                         \
+  }                                                                    \
+                                                                       \
+  ssize_t                                                              \
+  utilvserver_text2value_##SHORT(TYPE *val,                            \
+                                struct Mapping_##SHORT const *map,     \
+                                size_t map_len)                        \
+  {                                                                    \
+    ssize_t    idx;                                                    \
+    TYPE       del_val;                                                \
+    if (*val==0)                                                       \
+      return -1;                                                       \
+                                                                       \
+    del_val = *val;                                                    \
+    idx     = searchValue(del_val, map, map_len);                      \
+                                                                       \
+    if (idx==-1) {                                                     \
+      size_t   i;                                                      \
+      for (i=0; i<sizeof(*val)*8 && (*val&(1<<i))==0; ++i) {}          \
+      del_val = (1<<i);                                                        \
+      idx     = searchValue(del_val, map, map_len);                    \
+    }                                                                  \
+    *val &= ~del_val;                                                  \
+    return idx;                                                                \
+  }
index f55e6dd..f52484c 100644 (file)
-#ifndef _LINUX_VIRTUAL_H
-#define _LINUX_VIRTUAL_H
-
-#define VC_CATEGORY(c)         (((c) >> 24) & 0x3F)
-#define VC_COMMAND(c)          (((c) >> 16) & 0xFF)
-#define VC_VERSION(c)          ((c) & 0xFFF)
-
-#define VC_CMD(c,i,v)          ((((VC_CAT_ ## c) & 0x3F) << 24) \
-                               | (((i) & 0xFF) << 16) | ((v) & 0xFFF))
-
-/*
-
-  Syscall Matrix V2.2
-
-         |VERSION|CREATE |MODIFY |MIGRATE|CONTROL|EXPERIM| |SPECIAL|SPECIAL|
-         |STATS  |DESTROY|ALTER  |CHANGE |LIMIT  |TEST   | |       |       |
-         |INFO   |SETUP  |       |MOVE   |       |       | |       |       |
-  -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
-  SYSTEM |VERSION|       |       |       |       |       | |DEVICES|       |
-  HOST   |     00|     01|     02|     03|     04|     05| |     06|     07|
-  -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
-  CPU    |       |       |       |       |       |       | |SCHED. |       |
-  PROCESS|     08|     09|     10|     11|     12|     13| |     14|     15|
-  -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
-  MEMORY |       |       |       |       |       |       | |SWAP   |       |
-         |     16|     17|     18|     19|     20|     21| |     22|     23|
-  -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
-  NETWORK|       |       |       |       |       |       | |SERIAL |       |
-         |     24|     25|     26|     27|     28|     29| |     30|     31|
-  -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
-  DISK   |       |       |       |       |       |       | |       |       |
-  VFS    |     32|     33|     34|     35|     36|     37| |     38|     39|
-  -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
-  OTHER  |       |       |       |       |       |       | |       |       |
-         |     40|     41|     42|     43|     44|     45| |     46|     47|
-  =======+=======+=======+=======+=======+=======+=======+ +=======+=======+
-  SPECIAL|       |       |       |       |       |       | |       |       |
-         |     48|     49|     50|     51|     52|     53| |     54|     55|
-  -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
-  SPECIAL|       |       |       |       |RLIMIT |SYSCALL| |       |COMPAT |
-         |     56|     57|     58|     59|     60|TEST 61| |     62|     63|
-  -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
-
-*/
-
-#define        VC_CAT_VERSION          0
-
-#define VC_CAT_PROCTRL         12
-
-#define VC_CAT_RLIMIT          60
-
-#define VC_CAT_SYSTEST         61
-#define        VC_CAT_COMPAT           63
-       
-/*  interface version */
-
-#define VCI_VERSION            0x00010001
-
-
-
-/*  query version */
-
-#define VCMD_get_version       VC_CMD(VERSION, 0, 0)
-
-
-/*  compatibiliy vserver commands */
-
-#define VCMD_new_s_context     VC_CMD(COMPAT, 1, 1)
-#define VCMD_set_ipv4root      VC_CMD(COMPAT, 2, 3)
-
-/*  compatibiliy vserver arguments */
-
-struct  vcmd_new_s_context_v1 {
-       uint32_t remove_cap;
-       uint32_t flags;
-};
-
-#define        NB_IPV4ROOT 16
-
-struct  vcmd_set_ipv4root_v3 {
-       /* number of pairs in id */
-       uint32_t broadcast;
-       struct {
-               uint32_t ip;
-               uint32_t mask;
-       } ip_mask_pair[NB_IPV4ROOT];
-};
-
-/*  context signalling */
-
-#define VCMD_ctx_kill          VC_CMD(PROCTRL, 1, 0)
-
-struct  vcmd_ctx_kill_v0 {
-       int32_t pid;
-       int32_t sig;
-};
-
-/*  rlimit vserver commands */
-
-#define VCMD_get_rlimit                VC_CMD(RLIMIT, 1, 0)
-#define VCMD_set_rlimit                VC_CMD(RLIMIT, 2, 0)
-#define VCMD_get_rlimit_mask   VC_CMD(RLIMIT, 3, 0)
-
-struct  vcmd_ctx_rlimit_v0 {
-       uint32_t id;
-       uint64_t minimum;
-       uint64_t softlimit;
-       uint64_t maximum;
-};
-
-struct  vcmd_ctx_rlimit_mask_v0 {
-       uint32_t minimum;
-       uint32_t softlimit;
-       uint32_t maximum;
-};
-
-#define CRLIM_INFINITY         (~0ULL)
-#define CRLIM_KEEP             (~1ULL)
-
-
-#endif /* _LINUX_VIRTUAL_H */
+// $Id: virtual.h,v 1.24 2005/07/03 17:51:00 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_LIB_VIRTUAL_H
+#define H_UTIL_VSERVER_LIB_VIRTUAL_H
+
+#include <kernel/context.h>
+#include <kernel/context_cmd.h>
+#include <kernel/cvirt_cmd.h>
+#include <kernel/cvirt_cmd.h>
+#include <kernel/dlimit.h>
+#include <kernel/dlimit_cmd.h>
+#include <kernel/inode_cmd.h>
+#include <kernel/limit_cmd.h>
+#include <kernel/namespace_cmd.h>
+#include <kernel/network_cmd.h>
+#include <kernel/sched_cmd.h>
+#include <kernel/signal_cmd.h>
+
+#include <kernel/network.h>
+#include <kernel/legacy.h>
+
+#endif //  H_UTIL_VSERVER_LIB_VIRTUAL_H
index bb9b7db..ceb5d46 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: vserver-internal.h,v 1.1.4.14 2004/02/14 00:25:34 ensc Exp $    --*- c++ -*--
+// $Id: vserver-internal.h,v 1.25 2005/05/02 21:42:37 ensc Exp $    --*- c++ -*--
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 //  
 // along with this program; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
+#ifdef H_VSERVER_SYSCALL_INTERNAL_H
+#  error vserver-internal.h must not be included more than once
+#endif
 
 #ifndef H_VSERVER_SYSCALL_INTERNAL_H
 #define H_VSERVER_SYSCALL_INTERNAL_H
 
-#include <stdint.h>
-#include <stdlib.h>
-#include <syscall.h>
-#include <unistd.h>
 #include <asm/unistd.h>
 #include <errno.h>
+#include <stdint.h>
+#include <unistd.h>
+
+#include "internal.h"
+#include "syscall-wrap.h"
 
 #if !defined(__NR_vserver) && defined(ENSC_SYSCALL__NR_vserver)
 #  define __NR_vserver ENSC_SYSCALL__NR_vserver
 #endif
 
+inline static ALWAYSINLINE void vc_noop0() {}
+
 #define VC_PREFIX      0)
-#define VC_SUFFIX      else (void)((void)0
-#define CALL_VC_NOOP   (void)0
+#define VC_SUFFIX      else (void)(vc_noop0()
+#define CALL_VC_NOOP   vc_noop0()
 #define CALL_VC_GENERAL(ID, SUFFIX, FUNC, ...)                         \
   VC_PREFIX; VC_SELECT(ID) return FUNC ## _ ## SUFFIX(__VA_ARGS__); VC_SUFFIX
 
-#if 1
-#  define VC_SELECT(ID)        case ID: if(1)
+#ifdef VC_MULTIVERSION_SYSCALL
+#  define VC_SELECT(ID)        if (ver>=(ID))
 #  define CALL_VC(...)                                 \
-  switch (utilvserver_checkCompatVersion()&~0xff) {    \
-    case -1 & 0xff     :  if (1) break;                \
-      VC_SUFFIX, __VA_ARGS__ , VC_PREFIX;              \
-    default    :  errno = EINVAL;                      \
-  }                                                    \
-  return -1
+  do {                                                 \
+    int        ver = utilvserver_checkCompatVersion();         \
+    if (ver==-1) return -1;                            \
+    VC_SUFFIX, __VA_ARGS__, VC_PREFIX;                 \
+    errno = ENOSYS;                                    \
+    return -1;                                         \
+  } while (0)
 #else
 #  define VC_SELECT(ID) if (1)
-#  define CALL_VC(...)                         \
-  if (1) {} VC_SUFFIX, __VA_ARGS__, VC_PREFIX; \
-  errno = ENOSYS; return -1
+#  define CALL_VC(...)                                 \
+  do {                                                 \
+    if (1) {} VC_SUFFIX, __VA_ARGS__, VC_PREFIX;       \
+    errno = ENOSYS; return -1;                         \
+  } while (0)
 #endif
 
 #ifdef VC_ENABLE_API_COMPAT
 #  define CALL_VC_V11(F,...)   CALL_VC_NOOP
 #endif
 
+#ifdef VC_ENABLE_API_V13
+#  define CALL_VC_V13(F,...)   CALL_VC_GENERAL(0x00010011, v13, F, __VA_ARGS__)
+#else
+#  define CALL_VC_V13(F,...)   CALL_VC_NOOP
+#endif
+
+#ifdef VC_ENABLE_API_V13
+#  define CALL_VC_V13A(F,...)  CALL_VC_GENERAL(0x00010012, v13, F, __VA_ARGS__)
+#else
+#  define CALL_VC_V13A(F,...)  CALL_VC_NOOP
+#endif
+
+#ifdef VC_ENABLE_API_V13
+#  define CALL_VC_V13B(F,...)  CALL_VC_GENERAL(0x00010021, v13b, F, __VA_ARGS__)
+#else
+#  define CALL_VC_V13B(F,...)  CALL_VC_NOOP
+#endif
+
+#ifdef VC_ENABLE_API_V13
+#  define CALL_VC_V13OBS(F,...)        CALL_VC_GENERAL(0x00010011, v13obs, F, __VA_ARGS__)
+#else
+#  define CALL_VC_V13OBS(F,...)        CALL_VC_NOOP
+#endif
+
+
+#ifdef VC_ENABLE_API_NET
+#  define CALL_VC_NET(F,...)   CALL_VC_GENERAL(0x00010016, net, F, __VA_ARGS__)
+#else
+#  define CALL_VC_NET(F,...)   CALL_VC_NOOP
+#endif
+
+#ifdef VC_ENABLE_API_FSCOMPAT
+#  define CALL_VC_FSCOMPAT(F,...)      CALL_VC_GENERAL(0x00010000, fscompat, F, __VA_ARGS__)
+#else
+#  define CALL_VC_FSCOMPAT(F,...)      CALL_VC_NOOP
+#endif
+
+#ifdef VC_ENABLE_API_OLDPROC
+#  define CALL_VC_OLDPROC(F,...)       CALL_VC_GENERAL(0x00000000, oldproc, F, __VA_ARGS__)
+#else
+#  define CALL_VC_OLDPROC(F,...)       CALL_VC_NOOP
+#endif
+
+#ifdef VC_ENABLE_API_OLDUTS
+#  define CALL_VC_OLDUTS(F,...)                CALL_VC_GENERAL(0x00000000, olduts, F, __VA_ARGS__)
+#else
+#  define CALL_VC_OLDUTS(F,...)                CALL_VC_NOOP
+#endif
+
+
+  // Some  kernel <-> userspace wrappers; they should be noops in most cases
+
 #if 1
 #  define CTX_KERNEL2USER(X)   (((X)==(uint32_t)(-1)) ? VC_NOCTX   : \
                                 ((X)==(uint32_t)(-2)) ? VC_SAMECTX : \
                                 (xid_t)(X))
 
-#  define CTX_USER2KERNEL(X)   (((X)==VC_RANDCTX) ? (uint32_t)(-1) : \
-                                ((X)==VC_SAMECTX) ? (uint32_t)(-2) : \
+#  define CTX_USER2KERNEL(X)   (((X)==VC_DYNAMIC_XID) ? (uint32_t)(-1) : \
+                                ((X)==VC_SAMECTX)     ? (uint32_t)(-2) : \
                                 (uint32_t)(X))
 #else
 #  define CTX_USER2KERNEL(X)   (X)
 #  define CTX_KERNEL2USER(X)   (X)
 #endif
 
-#ifdef __cplusplus
-extern "C" {
+#if 1
+#  define EXT2FLAGS_USER2KERNEL(X)     (((X) & ~(VC_IMMUTABLE_FILE_FL|VC_IMMUTABLE_LINK_FL)) | \
+                                        ((X) & VC_IMMUTABLE_FILE_FL ? EXT2_IMMUTABLE_FILE_FL : 0) | \
+                                        ((X) & VC_IMMUTABLE_LINK_FL ? EXT2_IMMUTABLE_LINK_FL : 0))
+#  define EXT2FLAGS_KERNEL2USER(X)     (((X) & ~(EXT2_IMMUTABLE_FILE_FL|EXT2_IMMUTABLE_LINK_FL)) | \
+                                        ((X) & EXT2_IMMUTABLE_FILE_FL ? VC_IMMUTABLE_FILE_FL : 0) | \
+                                        ((X) & EXT2_IMMUTABLE_LINK_FL ? VC_IMMUTABLE_LINK_FL : 0))
+#else
+#  define EXT2FLAGS_KERNEL2USER(X)     (X)
+#  define EXT2FLAGS_USER2KERNEL(X)     (X)
+#endif
+
+#if 1
+#  define VHI_USER2KERNEL(X)           ((((X)==vcVHI_CONTEXT)    ? VHIN_CONTEXT    : \
+                                         ((X)==vcVHI_SYSNAME)    ? VHIN_SYSNAME    : \
+                                         ((X)==vcVHI_NODENAME)   ? VHIN_NODENAME   : \
+                                         ((X)==vcVHI_RELEASE)    ? VHIN_RELEASE    : \
+                                         ((X)==vcVHI_VERSION)    ? VHIN_VERSION    : \
+                                         ((X)==vcVHI_MACHINE)    ? VHIN_MACHINE    : \
+                                         ((X)==vcVHI_DOMAINNAME) ? VHIN_DOMAINNAME : \
+                                         (X)))
+#  define VHI_KERNEL2USER(X)           ((((X)==VHIN_CONTEXT)     ? vcVHI_CONTEXT    : \
+                                         ((X)==VHIN_SYSNAME)     ? vcVHI_SYSNAME    : \
+                                         ((X)==VHIN_NODENAME)    ? vcVHI_NODENAME   : \
+                                         ((X)==VHIN_RELEASE)     ? vcVHI_RELEASE    : \
+                                         ((X)==VHIN_VERSION)     ? vcVHI_VERSION    : \
+                                         ((X)==VHIN_MACHINE)     ? vcVHI_MACHINE    : \
+                                         ((X)==VHIN_DOMAINNAME)  ? vcVHI_DOMAINNAME : \
+                                         (X)))
+#else
+#  define VHI_USER2KERNEL(X)           (X)
+#  define VHI_KERNEL2USER(X)           (X)
+#endif
+
+#if 1
+#  define NID_KERNEL2USER(X)   (((X)==(uint32_t)(-1)) ? VC_NONID   : \
+                                (xid_t)(X))
+
+#  define NID_USER2KERNEL(X)   (((X)==VC_DYNAMIC_NID) ? (uint32_t)(-1) : \
+                                (uint32_t)(X))
+#else
+#  define NID_USER2KERNEL(X)   (X)
+#  define NID_KERNEL2USER(X)   (X)
+#endif
+
+#if 1
+#  define NETTYPE_USER2KERNEL(X)       ((X)==vcNET_IPV4   ? 0 : \
+                                        (X)==vcNET_IPV6   ? 1 : \
+                                        (X)==vcNET_IPV4R  ? 2 : \
+                                        (X)==vcNET_IPV6R  ? 3 : \
+                                        (X))
+#  define NETTYPE_KERNEL2USER(X)       ((X)==0 ? vcNET_IPV4   ? : \
+                                        (X)==1 ? vcNET_IPV6   ? : \
+                                        (X)==2 ? vcNET_IPV4R  ? : \
+                                        (X)==3 ? vcNET_IPV6R  ? : \
+                                        (vc_net_nx_type)(X))
+#else
+#  define NETTYPE_USER2KERNEL(X)       (X)
+#  define NETTYPE_KERNEL2USER(X)       (X)
 #endif
 
+#define CDLIM_USER2KERNEL(X)           ((X)==VC_CDLIM_UNSET    ? CDLIM_UNSET    : \
+                                        (X)==VC_CDLIM_INFINITY ? CDLIM_INFINITY : \
+                                        (X)==VC_CDLIM_KEEP     ? CDLIM_KEEP     : \
+                                        (X))
+
+  /// the __typeof__ thing is a hack to deal with the kernel interface
+  /// using an unsigned long long value for a uint32_t type
+#define CDLIM_KERNEL2USER(X)           ((X)==(__typeof__(X))CDLIM_UNSET       ? VC_CDLIM_UNSET    : \
+                                        (X)==(__typeof__(X))CDLIM_INFINITY    ? VC_CDLIM_INFINITY : \
+                                        (X)==(__typeof__(X))CDLIM_KEEP        ? VC_CDLIM_KEEP     : \
+                                        (X))
+
+
+#define ENSC_STRUCT_IDX(STRUCT,ATTR)                   \
+  ((char*)(&(STRUCT).ATTR) - (char*)(&(STRUCT)))
+#define ENSC_SAME_STRUCT_IDX(LHS,RHS,ATTR)                     \
+  (ENSC_STRUCT_IDX(LHS,ATTR) == ENSC_STRUCT_IDX(RHS,ATTR))
+#define ENSC_SAME_STRUCT_ITEM(LHS,RHS,ATTR)    \
+  (ENSC_SAME_STRUCT_IDX(LHS,RHS,ATTR) &&       \
+   sizeof((LHS).ATTR)==sizeof((RHS).ATTR) &&   \
+   sizeof(LHS)==sizeof(RHS))
+
+#define EXT2_IOC_GETCONTEXT            _IOR('x', 1, long)
+#define EXT2_IOC_SETCONTEXT            _IOW('x', 2, long)
+
 #ifndef HAVE_VSERVER
 #ifdef ENSC_SYSCALL_TRADITIONAL
 inline static UNUSED ALWAYSINLINE
 int vserver(uint32_t cmd, uint32_t id, void *data)
 {
+#if defined __dietlibc__
+  extern long int syscall (long int __sysno, ...);
+#endif
   return syscall(__NR_vserver, cmd, id, data);
 }
 #else
@@ -101,13 +248,4 @@ _syscall3(int, vserver,
 #endif
 #endif
 
-size_t         utilvserver_uint2str(char *buf, size_t len,
-                                    unsigned int val, unsigned char base);
-int            utilvserver_checkCompatVersion();
-
-#ifdef __cplusplus
-}
-#endif
-
-
 #endif //  H_VSERVER_SYSCALL_INTERNAL_H
index 284f4a4..417ead2 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: vserver.h,v 1.1.4.11 2004/01/26 18:19:41 ensc Exp $
+/* $Id: vserver.h,v 1.66 2005/07/15 16:27:02 ensc Exp $
 
 *  Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 *   
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */
 
+/** \file vserver.h
+ *  \brief The public interface of the the libvserver library.
+ */
+
 #ifndef H_VSERVER_SYSCALL_H
 #define H_VSERVER_SYSCALL_H
 
 #include <stdint.h>
 #include <stdlib.h>
+#include <stdbool.h>
 #include <sys/types.h>
 
+#ifndef IS_DOXYGEN
+#if defined(__GNUC__)
+#  define VC_ATTR_UNUSED                __attribute__((__unused__))
+#  define VC_ATTR_NORETURN              __attribute__((__noreturn__))
+#  define VC_ATTR_CONST                        __attribute__((__const__))
+#  define VC_ATTR_DEPRECATED           __attribute__((__deprecated__))
+#  if __GNUC__*0x10000 + __GNUC_MINOR__*0x100 + __GNUC_PATCHLEVEL__ >= 0x30300
+#    define VC_ATTR_NONNULL(ARGS)      __attribute__((__nonnull__ ARGS))
+#    define VC_ATTR_ALWAYSINLINE        __attribute__((__always_inline__))
+#  else
+#    define VC_ATTR_NONNULL(ARGS)
+#    define VC_ATTR_ALWAYSINLINE
+#  endif
+#  if __GNUC__*0x10000 + __GNUC_MINOR__*0x100 + __GNUC_PATCHLEVEL__ >= 0x30303
+#    define VC_ATTR_PURE               __attribute__((__pure__))
+#  else
+#    define VC_ATTR_PURE
+#  endif
+#else
+#  define VC_ATTR_NONNULL(ARGS)
+#  define VC_ATTR_UNUSED
+#  define VC_ATTR_NORETURN
+#  define VC_ATTR_ALWAYSINLINE
+#  define VC_ATTR_DEPRECATED
+#  define VC_ATTR_PURE
+#  define VC_ATTR_CONST
+#endif
+#endif // IS_DOXYGEN
+
 /** the value which is returned in error-case (no ctx found) */
 #define VC_NOCTX               ((xid_t)(-1))
+#define VC_NOXID               ((xid_t)(-1))
 /** the value which means a random (the next free) ctx */
-#define VC_RANDCTX             ((xid_t)(-1))
+#define VC_DYNAMIC_XID         ((xid_t)(-1))
 /** the value which means the current ctx */
 #define VC_SAMECTX             ((xid_t)(-2))
 
+#define VC_NONID               ((nid_t)(-1))
+#define VC_DYNAMIC_NID         ((nid_t)(-1))
+
 #define VC_LIM_INFINITY                (~0ULL)
 #define VC_LIM_KEEP            (~1ULL)
 
+#define VC_CDLIM_UNSET         (0U)
+#define VC_CDLIM_INFINITY      (~0U)
+#define VC_CDLIM_KEEP          (~1U)
+  
+#ifndef S_CTX_INFO_LOCK
+#  define S_CTX_INFO_LOCK      1
+#endif
+
+#ifndef S_CTX_INFO_SCHED
+#  define S_CTX_INFO_SCHED     2
+#endif
+
+#ifndef S_CTX_INFO_NPROC
+#  define S_CTX_INFO_NPROC     4
+#endif
+
+#ifndef S_CTX_INFO_PRIVATE
+#  define S_CTX_INFO_PRIVATE   8
+#endif
+
+#ifndef S_CTX_INFO_INIT
+#  define S_CTX_INFO_INIT      16
+#endif
+
+#ifndef S_CTX_INFO_HIDEINFO
+#  define S_CTX_INFO_HIDEINFO  32
+#endif
+
+#ifndef S_CTX_INFO_ULIMIT
+#  define S_CTX_INFO_ULIMIT    64
+#endif
+
+#ifndef S_CTX_INFO_NAMESPACE
+#  define S_CTX_INFO_NAMESPACE 128
+#endif
+
+#define VC_CAP_CHOWN                    0
+#define VC_CAP_DAC_OVERRIDE             1
+#define VC_CAP_DAC_READ_SEARCH          2
+#define VC_CAP_FOWNER                   3
+#define VC_CAP_FSETID                   4
+#define VC_CAP_KILL                     5
+#define VC_CAP_SETGID                   6
+#define VC_CAP_SETUID                   7
+#define VC_CAP_SETPCAP                  8
+#define VC_CAP_LINUX_IMMUTABLE          9
+#define VC_CAP_NET_BIND_SERVICE        10
+#define VC_CAP_NET_BROADCAST           11
+#define VC_CAP_NET_ADMIN               12
+#define VC_CAP_NET_RAW                 13
+#define VC_CAP_IPC_LOCK                14
+#define VC_CAP_IPC_OWNER               15
+#define VC_CAP_SYS_MODULE              16
+#define VC_CAP_SYS_RAWIO               17
+#define VC_CAP_SYS_CHROOT              18
+#define VC_CAP_SYS_PTRACE              19
+#define VC_CAP_SYS_PACCT               20
+#define VC_CAP_SYS_ADMIN               21
+#define VC_CAP_SYS_BOOT                22
+#define VC_CAP_SYS_NICE                23
+#define VC_CAP_SYS_RESOURCE            24
+#define VC_CAP_SYS_TIME                25
+#define VC_CAP_SYS_TTY_CONFIG          26
+#define VC_CAP_MKNOD                   27
+#define VC_CAP_LEASE                   28
+#define VC_CAP_AUDIT_WRITE             29
+#define VC_CAP_AUDIT_CONTROL           30
+
+#define VC_IMMUTABLE_FILE_FL           0x0000010lu
+#define VC_IMMUTABLE_LINK_FL           0x0008000lu
+#define VC_IMMUTABLE_ALL               (VC_IMMUTABLE_LINK_FL|VC_IMMUTABLE_FILE_FL)
+
+#define VC_IATTR_XID                   0x01000000u
+
+#define VC_IATTR_ADMIN                 0x00000001u
+#define VC_IATTR_WATCH                 0x00000002u
+#define VC_IATTR_HIDE                  0x00000004u
+#define VC_IATTR_FLAGS                 0x00000007u
+
+#define VC_IATTR_BARRIER               0x00010000u
+#define        VC_IATTR_IUNLINK                0x00020000u
+#define VC_IATTR_IMMUTABLE             0x00040000u
+
+
+// the flags
+#define VC_VXF_INFO_LOCK               0x00000001ull
+#define VC_VXF_INFO_NPROC              0x00000004ull
+#define VC_VXF_INFO_PRIVATE            0x00000008ull
+#define VC_VXF_INFO_INIT               0x00000010ull
+
+#define VC_VXF_INFO_HIDEINFO           0x00000020ull
+#define VC_VXF_INFO_ULIMIT             0x00000040ull
+#define VC_VXF_INFO_NAMESPACE          0x00000080ull
+
+#define        VC_VXF_SCHED_HARD               0x00000100ull
+#define        VC_VXF_SCHED_PRIO               0x00000200ull
+#define        VC_VXF_SCHED_PAUSE              0x00000400ull
+
+#define VC_VXF_VIRT_MEM                        0x00010000ull
+#define VC_VXF_VIRT_UPTIME             0x00020000ull
+#define VC_VXF_VIRT_CPU                        0x00040000ull
+#define VC_VXF_VIRT_LOAD               0x00080000ull
+
+#define VC_VXF_HIDE_MOUNT              0x01000000ull
+#define VC_VXF_HIDE_NETIF              0x02000000ull
+
+#define        VC_VXF_STATE_SETUP              (1ULL<<32)
+#define        VC_VXF_STATE_INIT               (1ULL<<33)
+
+#define VC_VXF_FORK_RSS                        (1ULL<<48)
+#define VC_VXF_PROLIFIC                        (1ULL<<49)
+
+#define VC_VXF_IGNEG_NICE              (1ULL<<52)
+
+
+// the ccapabilities
+#define VC_VXC_SET_UTSNAME             0x00000001ull
+#define VC_VXC_SET_RLIMIT              0x00000002ull
+
+#define VC_VXC_RAW_ICMP                        0x00000100ull
+#define VC_VXC_SYSLOG                  0x00001000ull
+
+#define VC_VXC_SECURE_MOUNT            0x00010000ull
+#define VC_VXC_SECURE_REMOUNT          0x00020000ull
+#define VC_VXC_BINARY_MOUNT            0x00040000ull
+
+#define VC_VXC_QUOTA_CTL               0x00100000ull
+
+
+#define VC_VXSM_FILL_RATE              0x0001
+#define VC_VXSM_INTERVAL               0x0002
+#define VC_VXSM_TOKENS                 0x0010
+#define VC_VXSM_TOKENS_MIN             0x0020
+#define VC_VXSM_TOKENS_MAX             0x0040
+#define VC_VXSM_PRIO_BIAS              0x0100
+
+
+#define VC_BAD_PERSONALITY             ((uint_least32_t)(-1))
+
+
+/** \defgroup  syscalls Syscall wrappers
+ *  Functions which are calling the vserver syscall directly. */
+
+/** \defgroup  helper   Helper functions
+ *  Functions which are doing general helper tasks like parameter parsing. */
+
+/** \typedef  an_unsigned_integer_type  xid_t
+ *  The identifier of a context. */
+
+#ifdef IS_DOXYGEN
+typedef an_unsigned_integer_type       xid_t;
+typedef an_unsigned_integer_type       nid_t;
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
   struct vc_ip_mask_pair {
-    uint32_t   ip;
-    uint32_t   mask;
+      uint32_t ip;
+      uint32_t mask;
   };
 
-    /** Returns version of the current kernel API */
+    /** \brief   The generic vserver syscall
+     *  \ingroup syscalls
+     *
+     *  This function executes the generic vserver syscall. It uses the
+     *  correct syscallnumber (which may differ between the different
+     *  architectures).
+     *
+     *  \param   cmd  the command to be executed
+     *  \param   xid  the xid on which the cmd shall be applied
+     *  \param   data additional arguments; depends on \c cmd
+     *  \returns depends on \c cmd; usually, -1 stands for an error
+     */
+  int  vc_syscall(uint32_t cmd, xid_t xid, void *data);
+
+    /** \brief   Returns the version of the current kernel API.
+     *  \ingroup syscalls
+     * \returns The versionnumber of the kernel API
+     */
   int  vc_get_version();
   
-    /** Puts current process into context <ctx>, removes the given caps and
-     *  sets flags.
-     *  Special values for ctx are
-     *  - VC_SAMECTX  which means the current context (just for changing caps and flags)
-     *  - VC_RANDCTX  which means the next free context; this value can be used by
-     *                ordinary users also */
-  int  vc_new_s_context(xid_t ctx, unsigned int remove_cap, unsigned int flags);
+    /** \brief   Moves current process into a context
+     *  \ingroup syscalls
+     *
+     *  Puts current process into context \a ctx, removes the capabilities
+     *  given in \a remove_cap and sets \a flags.
+     *
+     *  \param ctx         The new context; special values for are
+     *  - VC_SAMECTX      which means the current context (just for changing caps and flags)
+     *  - VC_DYNAMIC_XID  which means the next free context; this value can be used by
+     *                    ordinary users also
+     *  \param remove_cap  The linux capabilities which will be \b removed.
+     *  \param flags       Special flags which will be set.
+     *
+     *  \returns  The new context-id, or VC_NOCTX on errors; \c errno
+     *           will be set appropriately
+     *
+     *  See http://vserver.13thfloor.at/Stuff/Logic.txt for details */
+  xid_t        vc_new_s_context(xid_t ctx, unsigned int remove_cap, unsigned int flags);
 
-    /** Sets the ipv4root information.
-     *  \precondition: nb<16 */
-  int  vc_set_ipv4root(uint32_t  bcast, size_t nb, struct vc_ip_mask_pair const *ips);
-  
+    /** \brief  Sets the ipv4root information.
+     *  \ingroup syscalls
+     *  \pre    \a nb < NB_IPV4ROOT && \a ips != 0 */
+  int  vc_set_ipv4root(uint32_t  bcast, size_t nb,
+                       struct vc_ip_mask_pair const *ips) VC_ATTR_NONNULL((3));
+
+    /** \brief  Returns the value of NB_IPV4ROOT.
+     *  \ingroup helper
+     *
+     *  This function returns the value of NB_IPV4ROOT which was used when the
+     *  library was built, but \b not the value which is used by the currently
+     *  running kernel. */
+  size_t       vc_get_nb_ipv4root() VC_ATTR_CONST VC_ATTR_PURE;
+
+    /** \brief   Creates a context without starting it.
+     *  \ingroup syscalls
+     *
+     *  This functions initializes a new context. When already in a freshly
+     *  created context, this old context will be discarded.
+     *
+     *  \param xid  The new context; special values are:
+     * - VC_DYNAMIC_XID which means to create a dynamic context
+     *
+     * \returns the xid of the created context, or VC_NOCTX on errors. \c errno
+     *          will be set appropriately. */
+  xid_t        vc_ctx_create(xid_t xid);
 
-  /* rlimit related functions */
-  typedef uint64_t     vc_limit_t;
+    /** \brief   Moves the current process into the specified context.
+     *  \ingroup syscalls
+     *
+     *  \param   xid  The new context
+     *  \returns 0 on success, -1 on errors */
+  int  vc_ctx_migrate(xid_t xid);
   
+    /* rlimit related functions */
   
-  struct vc_rlimit
-  {
-      vc_limit_t min;
-      vc_limit_t soft;
-      vc_limit_t hard;      
+    /** \brief  The type which is used for a single limit value.
+     *
+     *  Special values are
+     *  - VC_LIM_INFINITY ... which is the infinite value
+     *  - VC_LIM_KEEP     ... which is used to mark values which shall not be
+     *                        modified by the vc_set_rlimit() operation.
+     *
+     *  Else, the interpretation of the value depends on the corresponding
+     *  resource; it might be bytes, pages, seconds or litres of beer. */
+  typedef uint_least64_t       vc_limit_t;
+
+    /** \brief  The limits of a resources.
+     *
+     *  This is a triple consisting of a minimum, soft and hardlimit. */
+  struct vc_rlimit {
+      vc_limit_t       min;    ///< the guaranted minimum of a resources
+      vc_limit_t       soft;   ///< the softlimit of a resource
+      vc_limit_t       hard;   ///< the absolute hardlimit of a resource
   };
 
+    /** \brief  Masks describing the supported limits. */
   struct  vc_rlimit_mask {
-      uint32_t min;
-      uint32_t soft;
-      uint32_t hard;
+      uint_least32_t   min;    ///< masks the resources supporting a minimum limit
+      uint_least32_t   soft;   ///< masks the resources supporting a soft limit
+      uint_least32_t   hard;   ///< masks the resources supporting a hard limit
   };
 
-  int  vc_get_rlimit(xid_t ctx, int resource, struct vc_rlimit *lim);
-  int  vc_set_rlimit(xid_t ctx, int resource, struct vc_rlimit const *lim);
-  int  vc_get_rlimit_mask(xid_t ctx, struct vc_rlimit_mask *lim);
+    /** \brief   Returns the limits of \a resource.
+     *  \ingroup syscalls
+     *
+     *  \param  xid       The id of the context
+     *  \param  resource  The resource which will be queried
+     *  \param  lim       The result which will be filled with the limits
+     *
+     *  \returns 0 on success, and -1 on errors. */
+  int  vc_get_rlimit(xid_t xid, int resource,
+                     struct vc_rlimit       /*@out@*/ *lim) VC_ATTR_NONNULL((3));
+    /** \brief   Sets the limits of \a resource.
+     *  \ingroup syscalls
+     *
+     *  \param  xid       The id of the context
+     *  \param  resource  The resource which will be queried
+     *  \param  lim       The new limits
+     *
+     *  \returns 0 on success, and -1 on errors. */
+  int  vc_set_rlimit(xid_t xid, int resource,
+                     struct vc_rlimit const /*@in@*/  *lim) VC_ATTR_NONNULL((3));
+  int  vc_get_rlimit_mask(xid_t xid,
+                          struct vc_rlimit_mask *lim)       VC_ATTR_NONNULL((2));
+    /** \brief   Parses a string describing a limit
+     *  \ingroup helper
+     *
+     *  This function parses \a str and interprets special words like \p "inf"
+     *  or suffixes. Valid suffixes are
+     *  - \p k ... 1000
+     *  - \p m ... 1000000
+     *  - \p K ... 1024
+     *  - \p M ... 1048576
+     *
+     *  \param str  The string which shall be parsed
+     *  \param res  Will be filled with the interpreted value; in errorcase,
+     *              this value is undefined.
+     *
+     *  \returns \a true, iff the string \a str could be parsed. \a res will
+     *  be filled with the interpreted value in this case. 
+     *
+     *  \pre \a str!=0 && \a res!=0
+     */
+  bool vc_parseLimit(char const /*@in@*/ *str, vc_limit_t /*@out@*/ *res)      VC_ATTR_NONNULL((1,2));
 
 
-  /** sends a signal to a context/pid
-      Special values for pid are:
-      * -1   which means every process in ctx except the init-process
-      *  0   which means every process in ctx inclusive the init-process */
+  /** \brief    Sends a signal to a context/pid
+   *  \ingroup  syscalls
+   *
+   *  Special values for \a pid are:
+   *  - -1   which means every process in ctx except the init-process
+   *  -  0   which means every process in ctx inclusive the init-process */
   int  vc_ctx_kill(xid_t ctx, pid_t pid, int sig);
+
+
+  struct vc_nx_info {
+      nid_t    nid;
+  };
+
+  nid_t                vc_get_task_nid(pid_t pid);
+  int          vc_get_nx_info(nid_t nid, struct vc_nx_info *) VC_ATTR_NONNULL((2));
+
+  typedef enum { vcNET_IPV4, vcNET_IPV6, vcNET_IPV4R, vcNET_IPV6R }    vc_net_nx_type;
   
-    /** Returns the context of the given process. pid==0 means the current process. */
-  xid_t        vc_X_getctx(pid_t pid);
+  struct vc_net_nx {
+      vc_net_nx_type   type;
+      size_t           count;
+      uint32_t         ip;
+      uint32_t         mask;
+  };
+
+  nid_t                vc_net_create(nid_t nid);
+  int          vc_net_migrate(nid_t nid);
+
+  int          vc_net_add(nid_t nid, struct vc_net_nx const *info);
+  int          vc_net_remove(nid_t nid, struct vc_net_nx const *info);
+
+  struct vc_net_flags {
+      uint_least64_t   flagword;
+      uint_least64_t   mask;
+  };
+  
+  int          vc_get_nflags(nid_t, struct vc_net_flags *);
+  int          vc_set_nflags(nid_t, struct vc_net_flags const *);
+
+  
+  struct vc_net_caps {
+      uint_least64_t   ncaps;
+      uint_least64_t   cmask;
+  };
+
+  int          vc_get_ncaps(nid_t, struct vc_net_caps *);
+  int          vc_set_ncaps(nid_t, struct vc_net_caps const *);
+
+
+  
+
+  int          vc_set_iattr(char const *filename, xid_t xid,
+                            uint_least32_t flags, uint_least32_t mask) VC_ATTR_NONNULL((1));
+
+    /** \brief   Returns information about attributes and assigned context of a file.
+     *  \ingroup syscalls
+     *
+     *  This function returns the VC_IATTR_XXX flags and about the assigned
+     *  context of a file. To request an information, the appropriate bit in
+     *  \c mask must be set and the corresponding parameter (\a xid or \a
+     *  flags) must not be NULL.
+     *
+     *  E.g. to receive the assigned context, the \c VC_IATTR_XID bit must be
+     *  set in \a mask, and \a xid must point to valid memory.
+     *
+     *  Possible flags are \c VC_IATTR_ADMIN, \c VC_IATTR_WATCH , \c VC_IATTR_HIDE,
+     *  \c VC_IATTR_BARRIER, \c VC_IATTR_IUNLINK and \c VC_IATTR_IMMUTABLE.
+     *
+     *  \param filename  The name of the file whose attributes shall be determined.
+
+     *  \param xid       When non-zero and the VC_IATTR_XID bit is set in \a mask,
+     *                   the assigned context of \a filename will be stored there.
+     *  \param flags     When non-zero, a bitmask of current attributes will be
+     *                   stored there. These attributes must be requested explicitly
+     *                   by setting the appropriate bit in \a mask
+     *  \param mask      Points to a bitmask which tells which attributes shall be
+     *                   determined. On return, it will masquerade the attributes
+     *                   which were determined.
+     *
+     *  \pre  mask!=0 && !((*mask&VC_IATTR_XID) && xid==0) && !((*mask&~VC_IATTR_XID) && flags==0) */
+  int          vc_get_iattr(char const *filename, xid_t * /*@null@*/ xid,
+                            uint_least32_t * /*@null@*/ flags,
+                            uint_least32_t * /*@null@*/ mask) VC_ATTR_NONNULL((1));
+
+  struct vc_vx_info {
+      xid_t    xid;
+      pid_t    initpid;
+  };
+  
+    /** \brief   Returns the context of the given process.
+     *  \ingroup syscalls
+     *
+     *  \param  pid  the process-id whose xid shall be determined;
+     *               pid==0 means the current process.
+     *  \returns     the xid of process \c pid or -1 on errors
+     */
+  xid_t                vc_get_task_xid(pid_t pid);
+  int          vc_get_vx_info(xid_t xid, struct vc_vx_info *info) VC_ATTR_NONNULL((2));
+
+
+  typedef enum { vcVHI_CONTEXT, vcVHI_SYSNAME, vcVHI_NODENAME,
+                vcVHI_RELEASE, vcVHI_VERSION, vcVHI_MACHINE,
+                vcVHI_DOMAINNAME }             vc_uts_type;
+  
+  int          vc_set_vhi_name(xid_t xid, vc_uts_type type,
+                               char const *val, size_t len) VC_ATTR_NONNULL((3));
+  int          vc_get_vhi_name(xid_t xid, vc_uts_type type,
+                               char *val, size_t len)       VC_ATTR_NONNULL((3));
+
+    /** Returns true iff \a xid is a dynamic xid */
+  bool         vc_is_dynamic_xid(xid_t xid);
+
+  int          vc_enter_namespace(xid_t xid);
+  int          vc_set_namespace();
+  int          vc_cleanup_namespace();
+
+  
+  /** \brief    Flags of process-contexts
+   */
+  struct  vc_ctx_flags {
+      /** \brief Mask of set context flags */
+      uint_least64_t   flagword;
+      /** \brief Mask of set and unset context flags when used by set
+       *         operations, or modifiable flags when used by get
+       *         operations */
+      uint_least64_t   mask;
+  };
+
+  /** \brief    Capabilities of process-contexts */
+  struct  vc_ctx_caps {
+      /** \brief  Mask of set common system capabilities */
+      uint_least64_t   bcaps;
+      /** \brief Mask of set and unset common system capabilities when used by
+       *         set operations, or the modifiable capabilities when used by
+       *         get operations */
+      uint_least64_t   bmask;
+      /** \brief Mask of set process context capabilities */
+      uint_least64_t   ccaps;
+      /** \brief Mask of set and unset process context capabilities when used
+       *         by set operations, or the modifiable capabilities when used
+       *         by get operations */
+      uint_least64_t   cmask;
+  };
+
+  /** \brief    Information about parsing errors
+   *  \ingroup  helper
+   */
+  struct vc_err_listparser {
+      char const       *ptr;           ///< Pointer to the first character of an erroneous string
+      size_t           len;            ///< Length of the erroneous string
+  };
+  int                  vc_get_cflags(xid_t xid, struct vc_ctx_flags *)       VC_ATTR_NONNULL((2));
+  int                  vc_set_cflags(xid_t xid, struct vc_ctx_flags const *) VC_ATTR_NONNULL((2));
+
+  int                  vc_get_ccaps(xid_t xid, struct vc_ctx_caps *);
+  int                  vc_set_ccaps(xid_t xid, struct vc_ctx_caps const *);
+
+  /** \brief   Converts a single string into bcapability
+   *  \ingroup helper
+   *
+   *  \param   str   The string to be parsed;
+   *                 both "CAP_xxx" and "xxx" will be accepted
+   *  \param   len   The length of the string, or \c 0 for automatic detection
+   *
+   *  \returns 0 on error; a bitmask on success
+   *  \pre     \a str != 0
+   */
+  uint_least64_t       vc_text2bcap(char const *str, size_t len);
+
+  /** \brief   Converts the lowest bit of a bcapability or the entire value
+   *           (when possible) to a textual representation
+   *  \ingroup helper
+   *
+   *  \param   val  The string to be converted; on success, the detected bit(s)
+   *                will be unset, in errorcase only the lowest set bit
+   *
+   *  \returns A textual representation of \a val resp. of its lowest set bit;
+   *           or \c NULL in errorcase.
+   *  \pre     \a val!=0
+   *  \post    \a *val<sub>old</sub> \c != 0  \c <-->
+   *               \a *val<sub>old</sub> > \a *val<sub>new</sub>
+   *  \post    \a *val<sub>old</sub> \c == 0  \c --->  \a result == 0
+   */
+  char const * vc_lobcap2text(uint_least64_t *val) VC_ATTR_NONNULL((1));
+
+  /** \brief   Converts a string into a bcapability-bitmask
+   *  \ingroup helper
+   *
+   *  Syntax of \a str: \verbinclude list2xxx.syntax
+   *
+   *  When the \c `~' prefix is used, the bits will be unset and a `~' after
+   *  another `~' will cancel both ones. The \c `^' prefix specifies a
+   *  bitnumber instead of a bitmask.
+   *
+   *  "literal name" is everything which will be accepted by the
+   *  vc_text2bcap() function. The special values for \c NAME will be
+   *  recognized case insensitively
+   *
+   *  \param  str   The string to be parsed
+   *  \param  len   The length of the string, or \c 0 for automatic detection
+   *  \param  err   Pointer to a structure for error-information, or \c NULL.
+   *  \param  cap   Pointer to a vc_ctx_caps structure holding the results;
+   *                only the \a bcaps and \a bmask fields will be changed and
+   *                already set values will not be honored. When an error
+   *                occured, \a cap will have the value of all processed valid
+   *                \c BCAP parts.
+   *
+   *  \returns 0 on success, -1 on error. In error case, \a err will hold
+   *           position and length of the first not understood BCAP part
+   *  \pre     \a str != 0 && \a cap != 0;
+   *           \a cap->bcaps and \a cap->bmask must be initialized
+   */
+  int                  vc_list2bcap(char const *str, size_t len,
+                                    struct vc_err_listparser *err,
+                                    struct vc_ctx_caps *cap) VC_ATTR_NONNULL((1,4));
+
+  uint_least64_t       vc_text2ccap(char const *, size_t len);
+  char const *         vc_loccap2text(uint_least64_t *);
+  int                  vc_list2ccap(char const *, size_t len,
+                                    struct vc_err_listparser *err,
+                                    struct vc_ctx_caps *);
+
+  int                  vc_list2cflag(char const *, size_t len,
+                                    struct vc_err_listparser *err,
+                                    struct vc_ctx_flags *flags);
+  uint_least64_t       vc_text2cflag(char const *, size_t len);
+  char const *         vc_locflag2text(uint_least64_t *);
+  
+  uint_least32_t       vc_list2cflag_compat(char const *, size_t len,
+                                           struct vc_err_listparser *err);
+  uint_least32_t       vc_text2cflag_compat(char const *, size_t len);
+  char const *         vc_hicflag2text_compat(uint_least32_t);
+
+  int                  vc_text2cap(char const *);
+  char const *         vc_cap2text(unsigned int);
+
+  
+  int                  vc_list2nflag(char const *, size_t len,
+                                    struct vc_err_listparser *err,
+                                    struct vc_net_flags *flags);
+  uint_least64_t       vc_text2nflag(char const *, size_t len);
+  char const *         vc_lonflag2text(uint_least64_t *);
+
+  uint_least64_t       vc_text2ncap(char const *, size_t len);
+  char const *         vc_loncap2text(uint_least64_t *);
+  int                  vc_list2ncap(char const *, size_t len,
+                                    struct vc_err_listparser *err,
+                                    struct vc_net_caps *);
+
+  uint_least64_t               vc_get_insecurebcaps() VC_ATTR_CONST;
+  inline static uint_least64_t vc_get_insecureccaps() {
+    return ~(VC_VXC_SET_UTSNAME|VC_VXC_RAW_ICMP);
+  }
+  
+  inline static int    vc_setfilecontext(char const *filename, xid_t xid) {
+    return vc_set_iattr(filename, xid, 0, VC_IATTR_XID);
+  }
+
+
+  uint_least32_t       vc_text2personalityflag(char const *str,
+                                               size_t len) VC_ATTR_NONNULL((1));
+
+  char const *         vc_lopersonality2text(uint_least32_t *) VC_ATTR_NONNULL((1));
+  
+  int                  vc_list2personalityflag(char const /*@in@*/ *,
+                                               size_t len,
+                                               uint_least32_t /*@out@*/ *personality,
+                                               struct vc_err_listparser /*@out@*/ *err) VC_ATTR_NONNULL((1,3));
+
+  uint_least32_t       vc_str2personalitytype(char const /*@in@*/*,
+                                              size_t len) VC_ATTR_NONNULL((1));
+  
+  /** \brief   Returns the context of \c filename
+   *  \ingroup syscalls
+   *
+   *  This function calls vc_get_iattr() with appropriate arguments to
+   *  determine the context of \c filename. In error-case or when no context
+   *  is assigned, \c VC_NOCTX will be returned. To differ between both cases,
+   *  \c errno must be examined.
+   *
+   *  \b WARNING: this function can modify \c errno although no error happened.
+   *
+   *  \param   filename  The file to check
+   *  \returns The assigned context, or VC_NOCTX when an error occured or no
+   *           such assignment exists. \c errno will be 0 in the latter case */
+  xid_t                vc_getfilecontext(char const *filename) VC_ATTR_NONNULL((1));
+
+
+  struct vc_set_sched {
+      uint_least32_t   set_mask;
+      int_least32_t    fill_rate;
+      int_least32_t    interval;
+      int_least32_t    tokens;
+      int_least32_t    tokens_min;
+      int_least32_t    tokens_max;
+      int_least32_t    priority_bias;
+  };
+
+  int          vc_set_sched(xid_t xid, struct vc_set_sched const *);
+
+
+  struct vc_ctx_dlimit {
+      uint_least32_t   space_used;
+      uint_least32_t   space_total;
+      uint_least32_t   inodes_used;
+      uint_least32_t   inodes_total;
+      uint_least32_t   reserved;
+  };
+  
+
+  /** Add a disk limit to a file system. */
+  int          vc_add_dlimit(char const *filename, xid_t xid,
+                             uint_least32_t flags) VC_ATTR_NONNULL((1));
+  /** Remove a disk limit from a file system. */
+  int          vc_rem_dlimit(char const *filename, xid_t xid,
+                             uint_least32_t flags) VC_ATTR_NONNULL((1));
+
+  /** Set a disk limit. */
+  int          vc_set_dlimit(char const *filename, xid_t xid,
+                             uint_least32_t flags,
+                             struct vc_ctx_dlimit const *limits) VC_ATTR_NONNULL((1,4));
+  /** Get a disk limit. */
+  int          vc_get_dlimit(char const *filename, xid_t xid,
+                             uint_least32_t flags,
+                             struct vc_ctx_dlimit *limits) VC_ATTR_NONNULL((1));
+
+  /** \brief   Waits for the end of a context
+   *  \ingroup syscalls
+   */
+  int          vc_wait_exit(xid_t xid);
     
+  typedef enum { vcFEATURE_VKILL,  vcFEATURE_IATTR,   vcFEATURE_RLIMIT,
+                vcFEATURE_COMPAT, vcFEATURE_MIGRATE, vcFEATURE_NAMESPACE,
+                vcFEATURE_SCHED,  vcFEATURE_VINFO,   vcFEATURE_VHI,
+                 vcFEATURE_VSHELPER0, vcFEATURE_VSHELPER, vcFEATURE_VWAIT }
+    vcFeatureSet;
+
+  bool         vc_isSupported(vcFeatureSet) VC_ATTR_CONST;
+  bool         vc_isSupportedString(char const *);
+
+  
+  typedef enum { vcTYPE_INVALID, vcTYPE_MAIN, vcTYPE_WATCH,
+                vcTYPE_STATIC, vcTYPE_DYNAMIC }
+    vcXidType;
+  
+  vcXidType    vc_getXIDType(xid_t xid) VC_ATTR_CONST;
+
+  /* The management part */
+
+#define VC_LIMIT_VSERVER_NAME_LEN      1024
+  
+  typedef enum { vcCFG_NONE, vcCFG_AUTO,
+                vcCFG_LEGACY,
+                vcCFG_RECENT_SHORT,
+                vcCFG_RECENT_FULL }            vcCfgStyle;
+
+
+  /** Maps an xid given at '--xid' options to an xid_t */
+  xid_t                vc_xidopt2xid(char const *, bool honor_static, char const **err_info);
+
+  vcCfgStyle   vc_getVserverCfgStyle(char const *id);
+  
+  /** Resolves the name of the vserver. The result will be allocated and must
+      be freed by the caller. */
+  char *       vc_getVserverName(char const *id, vcCfgStyle style);
+
+  /** Returns the path of the vserver configuration directory. When the given
+   *  vserver does not exist, or when it does not have such a directory, NULL
+   *  will be returned. Else, the result will be allocated and must be freed
+   *  by the caller. */
+  char *       vc_getVserverCfgDir(char const *id, vcCfgStyle style);
+
+  /** Returns the path of the configuration directory for the given
+   *  application. The result will be allocated and must be freed by the
+   *  caller. */
+  char *       vc_getVserverAppDir(char const *id, vcCfgStyle style, char const *app);
+
+  /** Returns the path to the vserver root-directory. The result will be
+   *  allocated and must be freed by the caller. */
+  char *       vc_getVserverVdir(char const *id, vcCfgStyle style, bool physical);
+
+  /** Returns the ctx of the given vserver. When vserver is not running and
+   *  'honor_static' is false, VC_NOCTX will be returned. Else, when
+   *  'honor_static' is true and a static assignment exists, those value will
+   *  be returned. Else, the result will be VC_NOCTX.
+   *
+   *  When 'is_running' is not null, the status of the vserver will be
+   *  assigned to this variable. */
+  xid_t                vc_getVserverCtx(char const *id, vcCfgStyle style,
+                                bool honor_static, bool /*@null@*/ *is_running);
+
+  /** Resolves the cfg-path of the vserver owning the given ctx. 'revdir' will
+      be used as the directory holding the mapping-links; when NULL, the
+      default value will be assumed.  The result will be allocated and must be
+      freed by the caller. */
+  char *       vc_getVserverByCtx(xid_t ctx, /*@null@*/vcCfgStyle *style,
+                                  /*@null@*/char const *revdir);
+#define vcSKEL_INTERFACES      1u
+#define vcSKEL_PKGMGMT         2u
+#define vcSKEL_FILESYSTEM      4u
+
+  /** Create a basic configuration skeleton for a vserver plus toplevel
+   *  directories for pkgmanagemt and filesystem (when requested). */
+  int          vc_createSkeleton(char const *id, vcCfgStyle style, int flags);
+
+
 #ifdef __cplusplus
 }
 #endif
 
+#undef VC_ATTR_PURE
+#undef VC_ATTR_ALWAYSINLINE
+#undef VC_ATTR_NORETURN
+#undef VC_ATTR_UNUSED
+#undef VC_ATTR_NONNULL
+
 #endif
diff --git a/lib/xidopt2xid.c b/lib/xidopt2xid.c
new file mode 100644 (file)
index 0000000..5724ba9
--- /dev/null
@@ -0,0 +1,56 @@
+// $Id: xidopt2xid.c,v 1.2 2004/08/19 13:58:40 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include <string.h>
+#include <stdlib.h>
+
+static xid_t
+getVserverXid(char const *id, bool honor_static, char const **err)
+{
+  *err = "vc_getVserverCtx";
+  return vc_getVserverCtx(id, vcCFG_AUTO, honor_static, 0);
+}
+
+xid_t
+vc_xidopt2xid(char const *str, bool honor_static, char const **err_info)
+{
+  char const *         err;
+  xid_t                        res = VC_NOCTX;
+
+  err = "vc_get_task_xid()";
+  if (strcmp(str,"self")==0) res = vc_get_task_xid(0);
+  else if (str[0]==':')      res = getVserverXid(str+1, honor_static, &err);
+  else {
+    char *     endptr;
+    xid_t      xid = strtol(str, &endptr, 10);
+
+    if (endptr!=str && (*endptr=='\0' || *endptr=='\n'))
+      res = xid;
+    else
+      res = getVserverXid(str, honor_static, &err);
+  }
+
+  if (res==VC_NOCTX && err_info) *err_info = err;
+
+  return res;
+}
diff --git a/lib_internal/Makefile-files b/lib_internal/Makefile-files
new file mode 100644 (file)
index 0000000..e6bb64b
--- /dev/null
@@ -0,0 +1,119 @@
+## $Id: Makefile-files,v 1.18 2005/07/04 22:35:47 ensc Exp $  -*- makefile -*-
+
+## Copyright (C) 2003,2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+##  
+## 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, 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.
+##  
+
+
+LIBINTERNAL_GLIBC =            lib_internal/libinternal-glibc.a
+noinst_LIBRARIES +=            $(LIBINTERNAL_GLIBC)
+
+if USE_DIETLIBC
+LIBINTERNAL_DIET =             lib_internal/libinternal-diet.a
+LIBINTERNAL =                  $(LIBINTERNAL_DIET)
+noinst_LIBRARIES +=            $(LIBINTERNAL_DIET)
+else
+LIBINTERNAL_DIET =             lib-dietlibc-not-enabled-error.a
+LIBINTERNAL =                  $(LIBINTERNAL_GLIBC)
+endif
+
+
+command_SRCS =                 lib_internal/command-appendparameter.c \
+                               lib_internal/command-setparams.c \
+                               lib_internal/command-exec.c\
+                               lib_internal/command-free.c \
+                               lib_internal/command-init.c \
+                               lib_internal/command-reset.c \
+                               lib_internal/command-wait.c \
+                               lib_internal/command.h
+
+if ENSC_HAVE_C99_COMPILER
+filecfg_SRCS =                 lib_internal/filecfg.h \
+                               lib_internal/filecfg-iteratemultiline.c \
+                               lib_internal/filecfg-readentryflag.c \
+                               lib_internal/filecfg-readentrystr.c \
+                               lib_internal/matchlist-initbyvserver.c \
+                               lib_internal/matchvserverinfo-init.c \
+                               lib_internal/unify-copy.c
+endif
+
+noinst_HEADERS += \
+                               lib_internal/coreassert.h \
+                               lib_internal/errinfo.h \
+                               lib_internal/jail.h \
+                               lib_internal/matchlist.h \
+                               lib_internal/pathinfo.h \
+                               lib_internal/string.h \
+                               lib_internal/sys_clone.h \
+                               lib_internal/sys_personality.h \
+                               lib_internal/unify.h \
+                               lib_internal/util.h \
+                               lib_internal/util-cast.h \
+                               lib_internal/util-commonstrings.h \
+                               lib_internal/util-debug.h \
+                               lib_internal/util-declarecmd.h \
+                               lib_internal/util-dimof.h \
+                               lib_internal/util-dotfile.h \
+                               lib_internal/util-exitlikeprocess.h \
+                               lib_internal/util-io.h \
+                               lib_internal/util-lockfile.h \
+                               lib_internal/util-mem.h \
+                               lib_internal/util-perror.h \
+                               lib_internal/util-safechdir.h \
+                               lib_internal/util-unixsock.h \
+                               lib_internal/string.hc
+
+lib_internal_libinternal_common_SRCS = \
+                               lib_internal/errinfo-writeerrno.c \
+                               lib_internal/jailintotempdir.c \
+                               lib_internal/matchlist-appendfiles.c \
+                               lib_internal/matchlist-compare.c \
+                               lib_internal/matchlist-destroy.c \
+                               lib_internal/matchlist-init.c \
+                               lib_internal/matchlist-initmanually.c \
+                               lib_internal/matchlist-initrefserverlist.c \
+                               lib_internal/matchlist-printid.c \
+                               lib_internal/matchvserverinfo-free.c \
+                               lib_internal/pathinfo-append.c \
+                               lib_internal/pathinfo-test.c \
+                               lib_internal/switchtowatchxid.c \
+                               lib_internal/unify-deunify.c \
+                               lib_internal/unify-settime.c \
+                               lib_internal/unify-unify.c \
+                               lib_internal/unify-isiunlinkable.c \
+                               lib_internal/util-canonify.c \
+                               lib_internal/util-exitlikeprocess.c \
+                               lib_internal/util-isnumber.c \
+                               lib_internal/util-lockfile.c \
+                               lib_internal/util-safechdir.c \
+                               $(command_SRCS) \
+                               $(filecfg_SRCS)
+
+lib_internal_libinternal_diet_a_SOURCES =      \
+                               $(lib_internal_libinternal_common_SRCS)
+
+lib_internal_libinternal_glibc_a_SOURCES =     \
+                               $(lib_internal_libinternal_common_SRCS)
+
+lib_internal_libinternal_diet_a_CPPFLAGS =     $(AM_CPPFLAGS) $(LIB_DEBUG_CPPFLAGS)
+lib_internal_libinternal_glibc_a_CPPFLAGS =    $(AM_CPPFLAGS) $(LIB_DEBUG_CPPFLAGS)
+
+DIETPROGS +=                   lib_internal/libinternal-diet.a
+
+CLEANFILES +=                  lib_internal/libinternal-diet.a \
+                               lib_internal/libinternal-glibc.a
+
+include $(top_srcdir)/lib_internal/testsuite/Makefile-files
diff --git a/lib_internal/command-appendparameter.c b/lib_internal/command-appendparameter.c
new file mode 100644 (file)
index 0000000..9ee1ec8
--- /dev/null
@@ -0,0 +1,44 @@
+// $Id: command-appendparameter.c,v 1.2 2004/08/19 14:09:02 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "command.h"
+#include "util.h"
+
+void
+Command_appendParameter(struct Command *cmd, char const *param)
+{
+  switch (cmd->params_style_) {
+    case parNONE       :
+      Vector_init(&cmd->params.v, 10);
+      cmd->params_style_ = parVEC;
+       /*@fallthrough@*/
+    case parVEC                : {
+      char const **p = Vector_pushback(&cmd->params.v);
+      *p = param;
+      break;
+    }
+
+    default            :
+      WRITE_MSG(2, "internal error: conflicting functions Command_appendParameter() and Command_setParams() used together; aborting...\n");
+      abort();
+  }
+}
diff --git a/lib_internal/command-exec.c b/lib_internal/command-exec.c
new file mode 100644 (file)
index 0000000..9669f67
--- /dev/null
@@ -0,0 +1,86 @@
+// $Id: command-exec.c,v 1.3 2005/03/22 15:25:54 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "command.h"
+#include "util.h"
+
+#include <unistd.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <assert.h>
+
+static inline bool
+initPipes(int p[2])
+{
+  return (pipe(p)!=-1 &&
+         fcntl(p[1], F_SETFD, FD_CLOEXEC)!=-1);
+}
+
+bool
+Command_exec(struct Command *cmd, bool do_fork)
+{
+  int          p[2];
+
+  if (cmd->params_style_==parVEC)
+    Vector_zeroEnd(&cmd->params.v);
+
+  if (!do_fork)
+    cmd->pid = 0;
+  else if (!initPipes(p) ||
+          (cmd->pid = fork())==-1) {
+    cmd->err = errno;
+    return false;
+  }
+  
+  if (cmd->pid==0) {
+    char const **      argv = { 0 };
+    
+    if (do_fork) close(p[0]);
+
+    switch (cmd->params_style_) {
+      case parVEC      :  argv = cmd->params.v.data; break;
+      case parDATA     :  argv = cmd->params.d;      break;
+      default          :  break;
+    }
+
+    execv(cmd->filename ? cmd->filename : argv[0],
+         reinterpret_cast(char **const)(argv));
+    cmd->err = errno;
+    assert(cmd->err != 0);
+
+    if (do_fork) {
+      TEMP_FAILURE_RETRY(write(p[1], &cmd->err, sizeof(cmd->err)));
+      _exit(1);        // implicates 'close(p[1])'
+    }
+  }
+  else {
+    close(p[1]);
+    if (read(p[0], &cmd->err, sizeof(cmd->err))==0)
+      cmd->err = 0;
+    else       // cleanup zombies
+      while (wait4(cmd->pid, 0,0,0)==-1 &&
+            (errno==EINTR || errno==EAGAIN)) {};
+    close(p[0]);
+  }
+
+  return cmd->err==0;
+}
diff --git a/lib_internal/command-free.c b/lib_internal/command-free.c
new file mode 100644 (file)
index 0000000..70f16d0
--- /dev/null
@@ -0,0 +1,30 @@
+// $Id: command-free.c,v 1.2 2004/08/19 14:09:22 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "command.h"
+
+void
+Command_free(struct Command *cmd)
+{
+  if (cmd->params_style_==parVEC)
+    Vector_free(&cmd->params.v);
+}
diff --git a/lib_internal/command-init.c b/lib_internal/command-init.c
new file mode 100644 (file)
index 0000000..8b2265d
--- /dev/null
@@ -0,0 +1,33 @@
+// $Id: command-init.c,v 1.2 2004/08/19 14:09:34 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "command.h"
+
+void
+Command_init(struct Command *cmd)
+{
+  cmd->filename      =  0;
+  cmd->pid           = -1;
+  cmd->rc            = -1;
+  cmd->err           =  0;
+  cmd->params_style_ =  parNONE;
+}
diff --git a/lib_internal/command-reset.c b/lib_internal/command-reset.c
new file mode 100644 (file)
index 0000000..ec6f8ad
--- /dev/null
@@ -0,0 +1,31 @@
+// $Id: command-reset.c,v 1.1 2004/06/27 14:38:06 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "command.h"
+
+void
+Command_reset(struct Command *cmd)
+{
+  cmd->pid = -1;
+  cmd->rc  = -1;
+  cmd->err =  0;
+}
diff --git a/lib_internal/command-setparams.c b/lib_internal/command-setparams.c
new file mode 100644 (file)
index 0000000..732c975
--- /dev/null
@@ -0,0 +1,40 @@
+// $Id: command-setparams.c,v 1.1 2004/08/19 14:08:17 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "command.h"
+#include "util.h"
+
+void
+Command_setParams(struct Command *cmd, char const **par)
+{
+  switch (cmd->params_style_) {
+    case parNONE       :
+      cmd->params_style_ = parDATA;
+       /*@fallthrough@*/
+    case parDATA       :
+      cmd->params.d      = par;
+      break;
+    default            :
+      WRITE_MSG(2, "internal error: conflicting functions Command_appendParameter() and Command_setParams() used together; aborting...\n");
+      abort();
+  }
+}
diff --git a/lib_internal/command-wait.c b/lib_internal/command-wait.c
new file mode 100644 (file)
index 0000000..44cf611
--- /dev/null
@@ -0,0 +1,40 @@
+// $Id: command-wait.c,v 1.2 2004/07/02 23:44:33 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "command.h"
+#include <errno.h>
+
+bool
+Command_wait(struct Command *cmd, bool do_block)
+{
+  int          rc;
+  
+  if (cmd->rc!=-1) return true;
+
+  switch (wait4(cmd->pid, &rc, (!do_block ? WNOHANG : 0), &cmd->rusage)) {
+    case  0    :  break;
+    case -1    :  cmd->err = errno; break;
+    default    :  cmd->rc  = rc;    return true;
+  }
+
+  return false;
+}
diff --git a/lib_internal/command.h b/lib_internal/command.h
new file mode 100644 (file)
index 0000000..ea0c9ed
--- /dev/null
@@ -0,0 +1,56 @@
+// $Id: command.h,v 1.2 2004/08/19 14:09:49 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_LIB_INTERNAL_COMMAND_H
+#define H_UTIL_VSERVER_LIB_INTERNAL_COMMAND_H
+
+#include <ensc_vector/vector.h>
+#include <sys/resource.h>
+#include <sys/wait.h>
+#include <stdbool.h>
+
+struct Command
+{
+    char const *       filename;
+    union {
+       struct Vector   v;
+       char const **   d;
+    }                  params;
+    pid_t              pid;
+    int                        rc;
+    int                        err;
+    struct rusage      rusage;
+
+    enum { parNONE, parVEC, parDATA }  params_style_;
+};
+
+void   Command_init(struct Command *);
+void   Command_free(struct Command *);
+void   Command_reset(struct Command *);
+bool   Command_exec(struct Command *, bool do_fork);
+void   Command_appendParameter(struct Command *, char const *);
+void   Command_setParams(struct Command *, char const **);
+/**
+ *  \args do_hang  when true, do not return before command exited, or
+ *                 an error (e.g. signal) occured
+ *  \returns       \c true iff command/processes exited; in this case,
+ *                 exitcode is available in the \c rc member
+ */
+bool   Command_wait(struct Command *, bool do_block);
+
+#endif //  H_UTIL_VSERVER_LIB_INTERNAL_COMMAND_H
diff --git a/lib_internal/coreassert.h b/lib_internal/coreassert.h
new file mode 100644 (file)
index 0000000..d52ac9b
--- /dev/null
@@ -0,0 +1,42 @@
+// $Id: coreassert.h,v 1.2 2005/03/22 14:59:46 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTILVSERVER_LIB_INTERNAL_COREASSERT_H
+#define H_UTILVSERVER_LIB_INTERNAL_COREASSERT_H
+
+#ifndef ENSC_TESTSUITE
+#  error Do not use <coreassert.h> outside of testenvironemnts!
+#endif
+
+#include "lib_internal/util-io.h"
+
+#include <assert.h>
+#include <unistd.h>
+
+#undef assert
+#define ASSERT_STRX(X) #X
+#define ASSERT_STR(X)  ASSERT_STRX(X)
+#define ASSERT_WRITE(X)        Vwrite(2, (X), sizeof(X)-1)
+#define assert(X)                                      \
+  (!(X)) ?                                             \
+  ASSERT_WRITE(__FILE__ ":" ASSERT_STR(__LINE__)       \
+              " Assertion: '" #X "' failed\n"),        \
+  *(char *)(0)=0 : 0
+
+
+#endif //  H_UTILVSERVER_LIB_INTERNAL_COREASSERT_H
diff --git a/lib_internal/errinfo-writeerrno.c b/lib_internal/errinfo-writeerrno.c
new file mode 100644 (file)
index 0000000..37d6bca
--- /dev/null
@@ -0,0 +1,44 @@
+// $Id: errinfo-writeerrno.c,v 1.1 2004/07/02 23:34:51 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "errinfo.h"
+#include "util.h"
+
+void
+ErrInfo_writeErrno(struct ErrorInformation const *info)
+{
+  if (info->app) {
+    WRITE_STR(2, info->app);
+    WRITE_MSG(2, ": ");
+  }
+
+  if (info->pos) {
+    WRITE_STR(2, info->pos);
+    if (info->id!=0) WRITE_MSG(2, ": ");
+  }
+
+  if (info->id!=0) {
+    WRITE_STR(2, strerror(info->id));
+  }
+
+  WRITE_MSG(2, "\n");
+}
diff --git a/lib_internal/errinfo.h b/lib_internal/errinfo.h
new file mode 100644 (file)
index 0000000..651bbba
--- /dev/null
@@ -0,0 +1,31 @@
+// $Id: errinfo.h,v 1.1 2004/07/02 23:34:52 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_LIB_INTERNAL_ERRINFO_H
+#define H_UTIL_VSERVER_LIB_INTERNAL_ERRINFO_H
+
+struct ErrorInformation
+{
+    char const *       app;    // the application-name
+    char const *       pos;    // the detailed position of the error
+    int                        id;     // usually errno
+};
+
+void   ErrInfo_writeErrno(struct ErrorInformation const *);
+
+#endif //  H_UTIL_VSERVER_LIB_INTERNAL_ERRINFO_H
diff --git a/lib_internal/filecfg-iteratemultiline.c b/lib_internal/filecfg-iteratemultiline.c
new file mode 100644 (file)
index 0000000..84cc8a8
--- /dev/null
@@ -0,0 +1,56 @@
+// $Id: filecfg-iteratemultiline.c,v 1.2 2004/12/07 11:13:29 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "filecfg.h"
+#include <string.h>
+
+bool
+FileCfg_iterateOverMultiLine(char const *str,
+                            FileCfg_MultiLineHandler handler,
+                            void *data)
+{
+  char const   *ptr    = str;
+  size_t       line_nr = 1;
+  
+  while (*ptr!='\0') {
+    while (*ptr==' ' || *ptr=='\t') ++ptr;     // left-trim line
+    
+    char const *eol = strchr(ptr, '\n');
+    if (eol==0) eol=ptr+strlen(ptr);   // handle unterminated lines
+
+    if (*ptr!='#') {   // skip commented lines
+      size_t   len = eol-ptr;
+      while (len>0 && (ptr[len-1]==' ' || ptr[len-1]=='\t'))
+       --len;          // right-trim line
+
+       // handle only non-empty lines
+      if (len>0 && !(*handler)(data, ptr, len))
+       return false;   // some parsing-error occured...
+    }
+    
+    ++line_nr;
+    ptr = eol;
+    if (*ptr) ++ptr;
+  }
+
+  return true;
+}
diff --git a/lib_internal/filecfg-readentryflag.c b/lib_internal/filecfg-readentryflag.c
new file mode 100644 (file)
index 0000000..e73edd5
--- /dev/null
@@ -0,0 +1,39 @@
+// $Id: filecfg-readentryflag.c,v 1.1 2004/07/02 23:34:52 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "filecfg.h"
+
+#include <sys/stat.h>
+#include <unistd.h>
+#include <string.h>
+
+bool
+FileCfg_readEntryFlag(PathInfo const *base, char const *file, bool dflt)
+{
+  PathInfo             filepath = { .d = file, .l = strlen(file) };
+  PathInfo             path     = *base;
+  char                 path_buf[ENSC_PI_APPSZ(path, filepath)];
+  struct stat          st;
+
+  PathInfo_append(&path, &filepath, path_buf);
+  return stat(path.d, &st)!=-1 || dflt;
+}
diff --git a/lib_internal/filecfg-readentrystr.c b/lib_internal/filecfg-readentrystr.c
new file mode 100644 (file)
index 0000000..f79b876
--- /dev/null
@@ -0,0 +1,74 @@
+// $Id: filecfg-readentrystr.c,v 1.1 2004/07/02 23:34:52 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "filecfg.h"
+#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
+
+char *
+FileCfg_readEntryStr (PathInfo const *base, char const *file,
+                     bool allow_multiline, char const *dflt)
+{
+  PathInfo             filepath = { .d = file, .l = strlen(file) };
+  PathInfo             path     = *base;
+  char                 path_buf[ENSC_PI_APPSZ(path, filepath)];
+  int                  fd  = -1;
+  off_t                        sz;
+  char *               res = 0;
+
+  PathInfo_append(&path, &filepath, path_buf);
+  fd = open(path.d, O_RDONLY);
+  if (fd==-1) goto err;
+
+  sz = lseek(fd, 0, SEEK_END);
+  if (sz==-1 ||
+      lseek(fd, 0, SEEK_SET)==-1) goto err;
+  
+  
+  if (sz>0 && sz<FILECFG_MAX_FILESIZE) {
+    char               buf[sz+1];
+    
+    if (read(fd, buf, sz+1)!=sz) goto err;
+
+    if (!allow_multiline) {
+      char *           pos;
+      
+      buf[sz] = '\0';
+      pos     = strchr(buf, '\n');
+      if (pos) *pos = '\0';
+    }
+    else {
+      while (sz>0 && buf[sz-1]=='\n') --sz;
+      buf[sz] = '\0';
+    }
+
+    res = strdup(buf);
+  }
+
+  err:
+  if (res==0 && dflt)
+    res = strdup(dflt);
+  
+  if (fd!=-1) close(fd);
+  return res;
+}
diff --git a/lib_internal/filecfg.h b/lib_internal/filecfg.h
new file mode 100644 (file)
index 0000000..ee86a6f
--- /dev/null
@@ -0,0 +1,36 @@
+// $Id: filecfg.h,v 1.2 2004/10/19 21:05:15 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_LIB_INTERNAL_FILECFG_H
+#define H_UTIL_VSERVER_LIB_INTERNAL_FILECFG_H
+
+#include "pathinfo.h"
+#include <stdbool.h>
+
+// 1MiB should be enough for all applications
+#define FILECFG_MAX_FILESIZE   0x100000
+
+char * FileCfg_readEntryStr (PathInfo const *base, char const *file, bool allow_multiline, char const *dflt);
+bool   FileCfg_readEntryFlag(PathInfo const *base, char const *file, bool dflt);
+
+typedef bool   (*FileCfg_MultiLineHandler)(void *res, char const *data, size_t len);
+
+bool   FileCfg_iterateOverMultiLine(char const *str, FileCfg_MultiLineHandler handler,
+                                    void *data);
+
+#endif //  H_UTIL_VSERVER_LIB_INTERNAL_FILECFG_H
diff --git a/lib_internal/jail.h b/lib_internal/jail.h
new file mode 100644 (file)
index 0000000..5c6f582
--- /dev/null
@@ -0,0 +1,26 @@
+// $Id: jail.h,v 1.2 2004/03/15 21:37:06 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_LIB_INTERNAL_JAIL_H
+#define H_UTIL_VSERVER_LIB_INTERNAL_JAIL_H
+
+#include <stdbool.h>
+
+bool   jailIntoTempDir(char const **err_pos);
+
+#endif //  H_UTIL_VSERVER_LIB_INTERNAL_JAIL_H
diff --git a/lib_internal/jailintotempdir.c b/lib_internal/jailintotempdir.c
new file mode 100644 (file)
index 0000000..ef21118
--- /dev/null
@@ -0,0 +1,51 @@
+// $Id: jailintotempdir.c,v 1.2 2004/03/15 21:37:06 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "jail.h"
+
+#include <stdlib.h>
+#include <grp.h>
+#include <unistd.h>
+
+bool
+jailIntoTempDir(char const **err_pos)
+{
+  gid_t const  id    = 1;
+  char         buf[] = "/tmp/jaildir.XXXXXX";
+  char const * d     = mkdtemp(buf);
+  char const * err   = "mkdtemp()";
+
+  if (d==0 ||
+      (err="chdir()",    chdir(d)==-1) ||
+      (err="rmdir()",    rmdir(d)==-1) ||
+      (err="chroot()",   chroot(".")==-1) ||
+      (err="setgroups()",setgroups(1, &id)==-1) ||
+      (err="setgid()",   setgid(id)==-1) ||
+      (err="setuid()",   setuid(id)==-1) ||
+      (err="getgid()",   getgid()!=id) ||
+      (err="getuid()",   getuid()!=id)) {
+    if (err_pos!=0) *err_pos = err;
+    return false;
+  }
+
+  return true;
+}
diff --git a/lib_internal/matchlist-appendfiles.c b/lib_internal/matchlist-appendfiles.c
new file mode 100644 (file)
index 0000000..9e36a11
--- /dev/null
@@ -0,0 +1,71 @@
+// $Id: matchlist-appendfiles.c,v 1.2 2004/04/06 08:42:46 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "matchlist.h"
+#include <fnmatch.h>
+#include <assert.h>
+
+static int
+fnmatchWrap(char const *a, char const *b)
+{
+  return fnmatch(a, b, 0);
+}
+
+static MatchItemCompareFunc
+determineCompareFunc(char const UNUSED *fname)
+{
+  return fnmatchWrap;
+}
+
+void
+MatchList_appendFiles(struct MatchList *list, size_t idx,
+                     char **files, size_t count,
+                     bool auto_type)
+{
+  struct MatchItem     *ptr = list->data + idx;
+  size_t               i;
+  
+  assert(idx+count <= list->count);
+
+  if (auto_type) {
+    for (i=0; i<count; ++i) {
+      char     *file = files[i];
+      switch (file[0]) {
+       case '+'        :  ptr->type = stINCLUDE; ++file; break;
+       case '~'        :  ptr->type = stSKIP;    ++file; break;
+       case '-'        :  ++file; /*@fallthrough@*/
+       default         :  ptr->type = stEXCLUDE; break;
+      }
+      ptr->cmp  = determineCompareFunc(file);
+      ptr->name = file;
+      ++ptr;
+    }
+  }
+  else {
+    for (i=0; i<count; ++i) {
+      ptr->type = stEXCLUDE;
+      ptr->name = files[i];
+      ptr->cmp  = 0;
+      ++ptr;
+    }
+  }
+}
diff --git a/lib_internal/matchlist-compare.c b/lib_internal/matchlist-compare.c
new file mode 100644 (file)
index 0000000..516af60
--- /dev/null
@@ -0,0 +1,41 @@
+// $Id: matchlist-compare.c,v 1.2 2004/04/06 08:43:02 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "matchlist.h"
+#include <string.h>
+
+MatchType
+MatchList_compare(struct MatchList const *list, char const *path)
+{
+  struct MatchItem const *             ptr = list->data;
+  struct MatchItem const * const       end_ptr = list->data + list->count;
+  
+  //write(1, path, strlen(path));
+  //write(1, "\n", 1);
+  for (; ptr<end_ptr; ++ptr) {
+    if ((ptr->cmp==0 && strcmp(ptr->name, path)==0) ||
+       (ptr->cmp!=0 && (ptr->cmp)(ptr->name, path)==0))
+      return ptr->type;
+  }
+
+  return stINCLUDE;
+}
diff --git a/lib_internal/matchlist-destroy.c b/lib_internal/matchlist-destroy.c
new file mode 100644 (file)
index 0000000..5187f8d
--- /dev/null
@@ -0,0 +1,37 @@
+// $Id: matchlist-destroy.c,v 1.2 2005/03/18 00:18:38 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "matchlist.h"
+
+void
+MatchList_destroy(struct MatchList *list)
+{
+  size_t               i;
+
+  String_free(&list->id);
+  free(list->data);
+
+  for (i=0; i<list->buf_count; ++i)
+    free((void *)(list->buf[i]));
+
+  free(list->buf);
+}
diff --git a/lib_internal/matchlist-init.c b/lib_internal/matchlist-init.c
new file mode 100644 (file)
index 0000000..44f96e3
--- /dev/null
@@ -0,0 +1,41 @@
+// $Id: matchlist-init.c,v 1.1 2004/02/17 02:33:20 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "matchlist.h"
+#include <string.h>
+#include <stdlib.h>
+
+#define ENSC_WRAPPERS_STDLIB   1
+#include <wrappers.h>
+void
+MatchList_init(struct MatchList *list, char const *root, size_t count)
+{
+  list->skip_depth = 0;
+  list->root.d     = root;
+  list->root.l     = strlen(root);
+  list->data       = Emalloc(sizeof(struct MatchItem) * count);
+  list->count      = count;
+  list->buf        = 0;
+  list->buf_count  = 0;
+
+  String_init(&list->id);
+}
diff --git a/lib_internal/matchlist-initbyvserver.c b/lib_internal/matchlist-initbyvserver.c
new file mode 100644 (file)
index 0000000..dc08d9c
--- /dev/null
@@ -0,0 +1,52 @@
+// $Id: matchlist-initbyvserver.c,v 1.3 2005/03/18 00:20:02 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+#include "pathconfig.h"
+
+#include "matchlist.h"
+#include "util-io.h"
+
+#include "vserver.h"
+
+#include <assert.h>
+
+bool
+MatchList_initByVserver(struct MatchList *list,
+                       struct MatchVserverInfo const *vserver)
+{
+  assert(vserver->appdir!=0 && vserver->vdir!=0);
+  
+  size_t const l = vserver->appdir.l;
+  char         tmp[l + sizeof("/exclude")];
+  char const * excl_list;
+
+  memcpy(tmp,   vserver->appdir.d, l);
+  memcpy(tmp+l, "/exclude", 9);
+
+  excl_list = tmp;
+  if (access(excl_list, R_OK)==-1) excl_list = CONFDIR   "/.defaults/apps/vunify/exclude";
+  if (access(excl_list, R_OK)==-1) excl_list = PKGLIBDIR "/defaults/vunify-exclude";
+
+  MatchList_initManually(list, vserver, 0, excl_list);
+  
+  return true;
+}
+
diff --git a/lib_internal/matchlist-initmanually.c b/lib_internal/matchlist-initmanually.c
new file mode 100644 (file)
index 0000000..199a96e
--- /dev/null
@@ -0,0 +1,207 @@
+// $Id: matchlist-initmanually.c,v 1.5 2005/03/22 14:59:46 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+#include "pathconfig.h"
+
+#include "matchlist.h"
+#include "util-io.h"
+
+#include <wait.h>
+#include <errno.h>
+#include <assert.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <string.h>
+
+#define ENSC_WRAPPERS_UNISTD   1
+#define ENSC_WRAPPERS_STDLIB   1
+#define ENSC_WRAPPERS_IO       1
+#include <wrappers.h>
+
+
+extern int     Global_getVerbosity() PURE CONST;
+extern bool    Global_doRenew() PURE CONST;
+
+static void
+readExcludeListFD(int fd,
+                 char ***files,  size_t *size,
+                 char **buf)
+{
+  off_t                len;
+  size_t       lines = 0;
+  char         *ptr;
+  
+  if (fd==-1) return; // todo: message on verbose?
+
+  len = Elseek(fd, 0, SEEK_END);
+  Elseek(fd, 0, SEEK_SET);
+
+  *buf = Emalloc(sizeof(*buf) * (len+1));
+  EreadAll(fd, *buf, len);
+  (*buf)[len] = '\0';
+
+  ptr = *buf;
+  while ((ptr=strchr(ptr, '\n'))) {
+    ++lines;
+    ++ptr;
+  }
+
+  ++lines;
+  *files = Emalloc(sizeof(**files) * lines);
+
+  *size = 0;
+  ptr   = *buf;
+  while (*ptr) {
+    char       *end_ptr = strchr(ptr, '\n');
+
+    assert(*size<lines);
+    if (end_ptr==0) break;
+
+    if (*ptr!='#') {
+      char     *tmp = end_ptr;
+      do {
+       *tmp-- = '\0';
+      } while (tmp>ptr && *tmp==' ');
+      
+      if (tmp>ptr) (*files)[(*size)++] = ptr;
+    }
+
+    ptr = end_ptr+1;
+  }
+}
+
+static void
+readExcludeList(char const *filename,
+               char ***files,  size_t *size,
+               char **buf)
+{
+  int          fd = open(filename, O_RDONLY);
+  if (fd==-1) return; // todo: message on verbose?
+
+  readExcludeListFD(fd, files, size, buf);
+  Eclose(fd);
+}
+
+static void
+getConfigfileList(char const *vserver,
+                 char ***files, size_t *size,
+                 char **buf)
+{
+  char                 tmpname[] = "/tmp/vunify.XXXXXX";
+  pid_t                pid;
+  int          fd = Emkstemp(tmpname);
+
+  Eunlink(tmpname);
+  pid = Efork();
+
+  if (pid==0) {
+    char       *args[10];
+    char const **ptr = (char const **)(args)+0;
+    
+    Edup2(fd, 1);
+    //Eclose(0);
+    if (fd!=1) Eclose(fd);
+
+    *ptr++  = VPKG_PROG;
+    *ptr++  = vserver;
+    *ptr++  = "get-conffiles";
+    *ptr    = 0;
+
+    Eexecv(args[0], args);
+  }
+  else {
+    int                status;
+    
+    if (TEMP_FAILURE_RETRY(wait4(pid, &status, 0,0))==-1) {
+      perror("wait4()");
+      exit(1);
+    }
+
+    if (!WIFEXITED(status) || WEXITSTATUS(status)!=0) {
+      WRITE_MSG(2, "failed to determine configfiles\n");
+      exit(1);
+    }
+
+    readExcludeListFD(fd, files, size, buf);
+    Eclose(fd);
+  }
+}
+
+void
+MatchList_initManually(struct MatchList *list,
+                      struct MatchVserverInfo const *vserver,
+                      char const *vdir, char const *exclude_file)
+{
+  char                 *buf[2] = { 0,0 };
+  
+  char                 **fixed_files = 0;
+  size_t               fixed_count   = 0;
+
+  char                 **expr_files  = 0;
+  size_t               expr_count    = 0;
+  size_t               len;
+
+  assert((vdir==0 && vserver!=0) || (vdir!=0 && vserver==0));
+
+  if (vserver) {
+    vdir = vserver->vdir.d;
+    len  = vserver->vdir.l;
+  }
+  else
+    len  = strlen(vdir);
+  
+  if (Global_getVerbosity()>=1) {
+    WRITE_MSG(1, "Initializing exclude-list for ");
+    Vwrite(1, vdir, len);
+    if (vserver!=0) {
+      WRITE_MSG(1, " (");
+      WRITE_STR(1, vserver->name);
+      WRITE_MSG(1, ")");
+    }
+    WRITE_MSG(1, "\n");
+  }
+  if (vserver && vserver->use_pkgmgmt && Global_doRenew()) {
+    if (Global_getVerbosity()>=2)
+      WRITE_MSG(1, "  Fetching configuration-file list from packagemanagement\n");
+    getConfigfileList(vserver->name, &fixed_files, &fixed_count, buf+0);
+  }
+
+  // abuse special values (NULL, empty string) to skip the next step
+  if (exclude_file && *exclude_file) {
+    if (Global_getVerbosity()>=6) WRITE_MSG(1, "  Reading exclude file\n");
+    readExcludeList(exclude_file,
+                   &expr_files,  &expr_count,
+                   buf+1);
+  }
+
+  MatchList_init(list, strdup(vdir), fixed_count + expr_count);
+  list->buf       = Emalloc(sizeof(void *) * 3);
+  list->buf[0]    = buf[0];
+  list->buf[1]    = buf[1];
+  list->buf[2]    = list->root.d;
+  list->buf_count = 3;
+
+  MatchList_appendFiles(list, 0,           fixed_files, fixed_count, false);
+  MatchList_appendFiles(list, fixed_count, expr_files,  expr_count,  true);
+
+  free(expr_files);
+  free(fixed_files);
+}
diff --git a/lib_internal/matchlist-initrefserverlist.c b/lib_internal/matchlist-initrefserverlist.c
new file mode 100644 (file)
index 0000000..90058c6
--- /dev/null
@@ -0,0 +1,92 @@
+// $Id: matchlist-initrefserverlist.c,v 1.4 2005/03/23 02:05:23 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "matchlist.h"
+#include "util-io.h"
+
+#include <dirent.h>
+#include <string.h>
+#include <fcntl.h>
+
+#define ENSC_WRAPPERS_FCNTL    1
+#define ENSC_WRAPPERS_UNISTD   1
+#define ENSC_WRAPPERS_STDLIB   1
+#include <wrappers.h>
+
+static int
+selectRefserver(struct dirent const *ent)
+{
+  return strncmp(ent->d_name, "refserver.", 10)==0;
+}
+
+void
+MatchList_initRefserverList(struct MatchList **lst, size_t *cnt,
+                           char const *dir)
+{
+  int                  cur_dir = Eopen(".", O_RDONLY, 0);
+  struct dirent                **entries;
+  int                  count,i;
+  
+  Echdir(dir);
+  count = scandir(".", &entries, selectRefserver, alphasort);
+  if (count==-1) {
+    perror("scandir()");
+    exit(1);
+  }
+
+  if (count==0) {
+    WRITE_MSG(2, "no reference vserver configured\n");
+    exit(1);
+  }
+
+  *lst = Emalloc(sizeof(struct MatchList) * count);
+  *cnt = count;
+  for (i=0; i<count; ++i) {
+    char const                         *tmp   = entries[i]->d_name;
+    size_t                     l      = strlen(tmp);
+    char                       vname[sizeof("./") + l];
+    struct MatchVserverInfo    vserver = {
+      .name        = vname,
+      .use_pkgmgmt = true
+    };
+
+    memcpy(vname,   "./", 2);
+    memcpy(vname+2, tmp,  l+1);
+    
+    if (!MatchVserverInfo_init(&vserver)) {
+      WRITE_MSG(2, "failed to initialize unification of reference vserver\n");
+      exit(1);
+    }
+
+    if (!MatchList_initByVserver((*lst)+i, &vserver)) {
+      WRITE_MSG(2, "unification for reference vserver not configured\n");
+      exit(1);
+    }
+
+    free(entries[i]);
+    MatchVserverInfo_free(&vserver);
+  }
+  free(entries);
+
+  Efchdir(cur_dir);
+  Eclose(cur_dir);
+}
diff --git a/lib_internal/matchlist-printid.c b/lib_internal/matchlist-printid.c
new file mode 100644 (file)
index 0000000..179b88e
--- /dev/null
@@ -0,0 +1,39 @@
+// $Id: matchlist-printid.c,v 1.2 2005/03/22 14:59:46 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "matchlist.h"
+#include "util-io.h"
+
+void
+MatchList_printId(struct MatchList const *l, int fd)
+{
+  if (l->id.l>0) {
+    WRITE_MSG(fd, "'");
+    Vwrite(fd, l->id.d, l->id.l);
+    WRITE_MSG(1, "'");
+  }
+  else if (l->root.l>0) {
+    Vwrite(fd, l->root.d, l->root.l);
+  }
+  else
+    WRITE_MSG(fd, "???");
+}
diff --git a/lib_internal/matchlist.h b/lib_internal/matchlist.h
new file mode 100644 (file)
index 0000000..66cca26
--- /dev/null
@@ -0,0 +1,91 @@
+// $Id: matchlist.h,v 1.5 2005/03/18 00:20:02 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_LIB_INTERNAL_MATCHLIST_H
+#define H_UTIL_VSERVER_LIB_INTERNAL_MATCHLIST_H
+
+#include "pathinfo.h"
+#include "string.h"
+#include "pathinfo.h"
+
+#include <lib/vserver.h>
+
+#include <stdlib.h>
+#include <stdbool.h>
+
+typedef int    (*MatchItemCompareFunc)(char const *, char const *);
+typedef enum { stINCLUDE,stEXCLUDE,stSKIP }    MatchType;
+
+struct MatchItem
+{
+    MatchType                  type;
+    char const *               name;
+    MatchItemCompareFunc       cmp;
+};
+
+struct MatchList
+{
+    size_t             skip_depth;
+    PathInfo           root;
+    String             id;
+    struct MatchItem   *data;
+    size_t             count;
+
+    void const         **buf;
+    size_t             buf_count;
+};
+
+struct MatchVserverInfo
+{
+    char const                 *name;
+
+    vcCfgStyle         style;
+    PathInfo           vdir;
+    PathInfo           appdir;
+    
+    bool               use_pkgmgmt;
+};
+
+void           MatchList_init(struct MatchList *, char const *root,
+                              size_t count) NONNULL((1,2));
+bool           MatchList_initByVserver(struct MatchList *,
+                                       struct MatchVserverInfo const *vserver) NONNULL((1,2));
+void           MatchList_initManually(struct MatchList *list,
+                                      struct MatchVserverInfo const *vserver,
+                                      char const *vdir,
+                                      char const *exclude_file) NONNULL((1,4));
+void           MatchList_initRefserverList(struct MatchList **, size_t *cnt,
+                                           char const *dir) NONNULL((1,2,3));
+void           MatchList_destroy(struct MatchList *) NONNULL((1));
+void           MatchList_appendFiles(struct MatchList *, size_t idx,
+                                     char **files, size_t count,
+                                     bool auto_type) NONNULL((1,3));
+
+MatchType      MatchList_compare(struct MatchList const *,
+                                 char const *path) NONNULL((1,2));
+struct MatchItem
+const *                MatchList_find(struct MatchList const *,
+                              char const *path) NONNULL((1,2));
+
+void           MatchList_printId(struct MatchList const *, int fd) NONNULL((1));
+
+
+bool           MatchVserverInfo_init(struct MatchVserverInfo *);
+void           MatchVserverInfo_free(struct MatchVserverInfo *);
+
+#endif //  H_UTIL_VSERVER_LIB_INTERNAL_MATCHLIST_H
diff --git a/lib_internal/matchvserverinfo-free.c b/lib_internal/matchvserverinfo-free.c
new file mode 100644 (file)
index 0000000..1c05133
--- /dev/null
@@ -0,0 +1,31 @@
+// $Id: matchvserverinfo-free.c,v 1.1 2005/03/18 00:17:53 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "matchlist.h"
+#include "util.h"
+
+void
+MatchVserverInfo_free(struct MatchVserverInfo *info)
+{
+  String_free(&info->vdir);
+  String_free(&info->appdir);
+}
diff --git a/lib_internal/matchvserverinfo-init.c b/lib_internal/matchvserverinfo-init.c
new file mode 100644 (file)
index 0000000..d874274
--- /dev/null
@@ -0,0 +1,76 @@
+// $Id: matchvserverinfo-init.c,v 1.2 2005/03/24 00:09:58 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "matchlist.h"
+#include "util.h"
+
+#include <pathconfig.h>
+
+#include <string.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <sys/param.h>
+
+static bool
+exists(char *path, size_t len, char const *name)
+{
+  if (name) strcpy(path + len, name);
+
+  return access(path, R_OK)!=-1;
+}
+
+#define EXISTS(X)              exists(X, sizeof(X)-1, 0)
+#define DEFAULT_EXISTS(X)      EXISTS(CONFDIR "/.defaults/apps/vunify/" X)
+
+bool
+MatchVserverInfo_init(struct MatchVserverInfo *info)
+{
+  assert(info->name!=0);
+  assert(info->vdir.d==0 && info->appdir.d==0);
+  
+  info->style    = vc_getVserverCfgStyle(info->name);
+  info->vdir.d   = vc_getVserverVdir    (info->name, info->style, true);
+  info->appdir.d = vc_getVserverAppDir  (info->name, info->style, "vunify");
+
+  if (info->vdir.d==0 || info->appdir.d==0) {
+    free(const_cast(char *)(info->vdir.d));
+    free(const_cast(char *)(info->appdir.d));
+
+    return false;
+  }
+
+  info->vdir.l   = strlen(info->vdir.d);
+  info->appdir.l = strlen(info->appdir.d);
+
+  size_t const l = info->appdir.l;
+  char         tmp[l + MAX(sizeof("/pkgmgmt-ignore"),sizeof("/pkgmgmt-force"))];
+
+  memcpy(tmp, info->appdir.d, l);
+
+  if      (exists(tmp, l, "/pkgmgmt-ignore")) info->use_pkgmgmt = false;
+  else if (exists(tmp, l, "/pkgmgmt-force"))  info->use_pkgmgmt = true;
+  else if (DEFAULT_EXISTS ("pkgmgmt-ignore")) info->use_pkgmgmt = false;
+  else if (DEFAULT_EXISTS ("pkgmgmt-force"))  info->use_pkgmgmt = true;
+
+  return true;
+}
diff --git a/lib_internal/pathinfo-append.c b/lib_internal/pathinfo-append.c
new file mode 100644 (file)
index 0000000..24cee47
--- /dev/null
@@ -0,0 +1,54 @@
+// $Id: pathinfo-append.c,v 1.1 2004/02/17 02:33:20 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "pathinfo.h"
+#include "util-mem.h"
+
+void
+PathInfo_append(PathInfo       * restrict lhs,
+               PathInfo const * restrict rhs,
+               char *buf)
+{
+  char *               ptr = buf;
+  char const *         rhs_ptr = rhs->d;
+  size_t               rhs_len = rhs->l;
+
+  while (lhs->l>1 && lhs->d[lhs->l-1]=='/') --lhs->l;
+
+  if (lhs->l>0) {
+    while (rhs->l>0 && *rhs_ptr=='/') {
+      ++rhs_ptr;
+      --rhs_len;
+    }
+    
+    ptr = Xmemcpy(ptr, lhs->d, lhs->l);
+    if (ptr[-1]!='/')
+      ptr = Xmemcpy(ptr, "/", 1);
+  }
+//  else if (*rhs_ptr!='/')
+//    ptr = Xmemcpy(ptr, "/", 1);
+
+  ptr = Xmemcpy(ptr, rhs_ptr, rhs_len+1);
+
+  lhs->d = buf;
+  lhs->l = ptr-buf-1;
+}
diff --git a/lib_internal/pathinfo-test.c b/lib_internal/pathinfo-test.c
new file mode 100644 (file)
index 0000000..217f00f
--- /dev/null
@@ -0,0 +1,55 @@
+// $Id: pathinfo-test.c,v 1.1 2004/02/17 02:33:20 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "pathinfo.h"
+#include <string.h>
+#include <assert.h>
+
+#define CHECK(LHS,RHS, EXP)                            \
+  do {                                                 \
+    PathInfo   lhs  = { LHS, sizeof(LHS)-1 };          \
+    PathInfo   rhs  = { RHS, sizeof(RHS)-1 };          \
+    char       *buf = malloc(ENSC_PI_APPSZ(lhs,rhs));  \
+    assert(ENSC_PI_APPSZ(lhs,rhs)>=sizeof(EXP));       \
+    PathInfo_append(&lhs, &rhs, buf);                  \
+    assert(memcmp(lhs.d, EXP, sizeof(EXP))==0);                \
+    assert(lhs.l == sizeof(EXP)-1);                    \
+    free(buf);                                         \
+  } while (0)
+
+
+void
+PathInfo_test()
+{
+  CHECK("/var",  "/tmp", "/var/tmp");
+  CHECK("/var",   "tmp", "/var/tmp");
+  CHECK("/var/", "/tmp", "/var/tmp");
+  CHECK("/var/",  "tmp", "/var/tmp");
+  
+  CHECK("/",  "tmp",   "/tmp");
+  CHECK("/", "/tmp",   "/tmp");
+  
+  CHECK("", "/tmp",   "/tmp");
+  
+  CHECK("", "tmp",    "tmp");
+  CHECK("", "",       "");
+}
diff --git a/lib_internal/pathinfo.h b/lib_internal/pathinfo.h
new file mode 100644 (file)
index 0000000..e9ba207
--- /dev/null
@@ -0,0 +1,33 @@
+// $Id: pathinfo.h,v 1.2 2004/07/02 23:44:53 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_LIB_INTERNAL_PATHINFO_H
+#define H_UTIL_VSERVER_LIB_INTERNAL_PATHINFO_H
+
+#include "string.h"
+
+#define ENSC_PI_DECLARE(VAR,VAL)       PathInfo VAR={.d = VAL,.l = sizeof(VAL)-1}
+#define ENSC_PI_APPSZ(P1,P2)           ((P1).l + sizeof("/") + (P2).l)
+
+typedef String         PathInfo;
+
+void           PathInfo_append(PathInfo * restrict,
+                               PathInfo const * restrict,
+                               char *buf) NONNULL((1,2,3));
+
+#endif //  H_UTIL_VSERVER_LIB_INTERNAL_PATHINFO_H
diff --git a/lib_internal/string.h b/lib_internal/string.h
new file mode 100644 (file)
index 0000000..e4ece42
--- /dev/null
@@ -0,0 +1,39 @@
+// $Id: string.h,v 1.3 2005/03/18 00:20:30 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_LIB_INTERNAL_STRING_H
+#define H_UTIL_VSERVER_LIB_INTERNAL_STRING_H
+
+#include <stdlib.h>
+
+typedef struct
+{
+    char const *       d;
+    size_t             l;
+} String;
+
+static void    String_init(String *);
+static void    String_free(String *);
+
+#define ENSC_STRING_FIXED(VAL) { .d = VAL, .l = (sizeof(VAL)-1) }
+#define ENSC_STRING_ASSIGN_FIXED(DST,VAL) \
+  { DST.d = (VAL); DST.l = (sizeof(VAL)-1); }
+
+#include "string.hc"
+
+#endif //  H_UTIL_VSERVER_LIB_INTERNAL_STRING_H
diff --git a/lib_internal/string.hc b/lib_internal/string.hc
new file mode 100644 (file)
index 0000000..4ae6e7b
--- /dev/null
@@ -0,0 +1,42 @@
+// $Id: string.hc,v 1.3 2005/03/18 00:20:42 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+static inline UNUSED void
+String_init(String *str)
+{
+  str->d = 0;
+  str->l = 0;
+}
+
+static inline UNUSED char const *
+String_c_str(String const *str, char *buf)
+{
+  if (str->l==0) return "";
+
+  if (buf!=str->d)
+    abort();   // TODO: copy content
+
+  buf[str->l] = '\0';
+  return buf;
+}
+
+
+static inline UNUSED void
+String_free(String *str)
+{
+  free((char *)(str->d));
+}
diff --git a/lib_internal/switchtowatchxid.c b/lib_internal/switchtowatchxid.c
new file mode 100644 (file)
index 0000000..b49305b
--- /dev/null
@@ -0,0 +1,58 @@
+// $Id: switchtowatchxid.c,v 1.4 2005/03/25 02:37:41 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <vserver.h>
+#include <errno.h>
+#include <unistd.h>
+
+  // try to switch into context 1
+bool
+switchToWatchXid(char const **errptr)
+{
+#if 0
+#  warning Compiling in debug-code
+  return;
+#endif
+  if (vc_get_task_xid(0)==1) return true;
+
+  if (vc_isSupported(vcFEATURE_MIGRATE)) {
+    if (vc_ctx_migrate(1)==-1) {
+      if (errptr) *errptr = "vc_migrate_context()";
+      return false;
+    }
+  }
+  else {
+#if VC_ENABLE_API_COMPAT
+    if (vc_new_s_context(1,0,0)==VC_NOCTX) {
+      if (errptr) *errptr = "vc_new_s_context()";
+      return false;
+    }
+#else
+    if (errptr) *errptr = "can not change context: migrate kernel feature missing and 'compat' API disabled";
+    errno = ENOSYS;
+    return false;
+#endif
+  }
+
+  return true;
+}
+
diff --git a/lib_internal/sys_clone.h b/lib_internal/sys_clone.h
new file mode 100644 (file)
index 0000000..e31b8da
--- /dev/null
@@ -0,0 +1,52 @@
+// $Id: sys_clone.h,v 1.3 2005/04/28 18:01:37 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_SRC_SYS_CLONE_H
+#define H_UTIL_VSERVER_SRC_SYS_CLONE_H
+
+#include "lib/syscall-wrap.h"
+#define __NR_sys_clone         __NR_clone
+
+#ifndef CLONE_NEWNS
+#  define CLONE_NEWNS 0x00020000
+#endif
+
+#ifdef ENSC_SYSCALL_TRADITIONAL
+#include <unistd.h>
+
+inline static UNUSED ALWAYSINLINE
+int sys_clone(int flags, void *stack)
+{
+#if defined __dietlibc__
+  extern long int syscall (long int __sysno, ...);
+#endif
+  return syscall(__NR_sys_clone, flags, stack);
+}
+#else
+#include <errno.h>
+
+inline static UNUSED ALWAYSINLINE
+_syscall2(int, sys_clone, int, flags, void *, child_stack)
+#endif
+
+#undef __NR_sys_clone
+
+#define ENSC_HAVE_SYSCLONE             1
+  
+#endif //  H_UTIL_VSERVER_SRC_SYS_CLONE_H
diff --git a/lib_internal/sys_personality.h b/lib_internal/sys_personality.h
new file mode 100644 (file)
index 0000000..8dd2ed2
--- /dev/null
@@ -0,0 +1,48 @@
+// $Id: sys_personality.h,v 1.1 2005/04/28 18:01:16 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_SRC_SYS_PERSONALITY_H
+#define H_UTIL_VSERVER_SRC_SYS_PERSONALITY_H
+
+#include "lib/syscall-wrap.h"
+#define __NR_sys_personality           __NR_personality
+
+#ifdef ENSC_SYSCALL_TRADITIONAL
+#include <unistd.h>
+
+inline static UNUSED ALWAYSINLINE
+int sys_personality(int pers)
+{
+#if defined __dietlibc__
+  extern long int syscall (long int __sysno, ...);
+#endif
+  return syscall(__NR_sys_personality, pers);
+}
+#else
+#include <errno.h>
+
+inline static UNUSED ALWAYSINLINE
+_syscall1(int, sys_personality, int, pers)
+#endif
+
+#undef __NR_sys_personality
+
+#define ENSC_HAVE_SYSPERSONALITY               1
+  
+#endif //  H_UTIL_VSERVER_SRC_SYS_PERSONALITY_H
diff --git a/lib_internal/testsuite/Makefile-files b/lib_internal/testsuite/Makefile-files
new file mode 100644 (file)
index 0000000..f9d0291
--- /dev/null
@@ -0,0 +1,44 @@
+## $Id: Makefile-files,v 1.6 2005/03/24 00:09:18 ensc Exp $    --*- makefile -*--
+
+## Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+##  
+## 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; version 2 of the License.
+##  
+## 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.
+
+check_PROGRAMS +=              lib_internal/testsuite/command
+
+if ENSC_HAVE_C99_COMPILER
+check_PROGRAMS +=              lib_internal/testsuite/filecfg-ml \
+                               lib_internal/testsuite/copy \
+                               lib_internal/testsuite/sigbus
+TESTS +=                       lib_internal/testsuite/filecfg-ml \
+                               lib_internal/testsuite/copy-check \
+                               lib_internal/testsuite/sigbus
+endif
+
+EXTRA_DIST +=                  lib_internal/testsuite/copy-check
+
+TESTS_ENVIRONMENT +=           libinternaltestsuitedir=$(top_builddir)/lib_internal/testsuite
+
+
+lib_internal_testsuite_command_SOURCES =       lib_internal/testsuite/command.c
+lib_internal_testsuite_command_LDADD =         $(LIBINTERNAL_GLIBC) \
+                                               $(LIBENSCVECTOR_GLIBC)
+
+lib_internal_testsuite_filecfg_ml_SOURCES =    lib_internal/testsuite/filecfg-ml.c
+lib_internal_testsuite_filecfg_ml_LDADD =      $(LIBINTERNAL_GLIBC)
+
+lib_internal_testsuite_copy_SOURCES =          lib_internal/testsuite/copy.c
+lib_internal_testsuite_copy_LDADD =            $(LIBINTERNAL_GLIBC)
+
+lib_internal_testsuite_sigbus_SOURCES =                lib_internal/testsuite/sigbus.c
diff --git a/lib_internal/testsuite/command.c b/lib_internal/testsuite/command.c
new file mode 100644 (file)
index 0000000..e15a6c2
--- /dev/null
@@ -0,0 +1,48 @@
+// $Id: command.c,v 1.2 2004/08/19 14:10:06 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <lib_internal/util.h>
+#include <lib_internal/command.h>
+
+int wrapper_exit_code = 255;
+
+int
+main(int argc, char *argv[])
+{
+  struct Command               cmd;
+  ssize_t                      i;
+  
+  if (argc<3) {
+    WRITE_MSG(2, "Not enough parameters\n");
+    return EXIT_FAILURE;
+  }
+
+  Command_init(&cmd);
+  for (i=2; i<argc; ++i)
+    Command_appendParameter(&cmd, argv[i]);
+
+  if (Command_exec(&cmd, argv[1][0]!=0)) {
+    Command_wait(&cmd, true);
+  }
+
+  Command_free(&cmd);
+}
diff --git a/lib_internal/testsuite/copy-check b/lib_internal/testsuite/copy-check
new file mode 100755 (executable)
index 0000000..229a2e8
--- /dev/null
@@ -0,0 +1,101 @@
+#! /bin/bash
+## $Id: copy-check,v 1.4 2005/03/25 02:38:13 ensc Exp $
+
+# Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+set -e
+
+dir=$(mktemp -d ${TMP:-/var/tmp}/copy-check.XXXXXX)
+trap "rm -rf $dir" EXIT
+
+COPY=${libinternaltestsuitedir:-$(dirname "$0")}/copy
+
+test -x "$COPY"
+
+function execWrap()
+{
+    nr=$1
+    msg=$2
+    shift 2
+
+    "$@" || {
+       rc=$?
+       echo $"Test $nr '$msg' failed with code $rc"
+       return $rc
+    }
+
+    return 0
+}
+
+function doit()
+{
+    execWrap "$nr" "copying"   $COPY $dir/$nr-in $dir/$nr-out
+    execWrap "$nr" "comparing" cmp   $dir/$nr-in $dir/$nr-out
+}
+
+## Usage: execCheck <nr> [<dd-args>*]
+function execCheck()
+{
+    local nr=$1
+    shift
+
+    dd if=/dev/urandom of=$dir/$nr-in "$@" &>/dev/null
+
+    doit $nr
+}
+
+LANG=C
+
+### Check 1: small file copy
+execCheck 01 bs=10 count=1
+
+### Check 2: PAGESIZEd file copy
+execCheck 02 bs=4096 count=1
+
+### Check 3: PAGESIZE+1 file copy
+execCheck 03 bs=4097 count=1
+
+### Check 3a: really large file copy
+test x"$ensc_use_expensive_tests" != xyes ||
+    execCheck 03a bs=$[ 64 * 1024*1024 + 23 ] count=1
+
+### Check 4: small sparse file copy
+execCheck 04 bs=10   count=1 seek=1
+
+### Check 5: large sparse file copy
+execCheck 05 bs=4097 count=1 seek=1
+
+### Check 6: large sparse file copy
+execCheck 06 bs=4098 count=1 seek=1
+
+### Check 7: large sparse file copy
+execCheck 07 bs=4099 count=1 seek=1
+
+### Check 8: large sparse file copy
+execCheck 08 bs=4100 count=1 seek=1
+
+### Check 8a: really large sparse file copy
+test x"$ensc_use_expensive_tests" != xyes ||
+    execCheck 08a bs=$[ 64 * 1024*1024 + 23 ] count=1 seek=1
+
+### Check 9: huge sparse file copy
+test x"$ensc_use_expensive_tests" != xyes ||
+    execCheck 09 bs=1024 count=1 seek=$[ 1024*1024 * 5 ]
+
+test x"$ensc_test_debug" != xyes || {
+    ls -l $dir/* 
+    du    $dir/*
+}
diff --git a/lib_internal/testsuite/copy.c b/lib_internal/testsuite/copy.c
new file mode 100644 (file)
index 0000000..36e3db5
--- /dev/null
@@ -0,0 +1,41 @@
+// $Id: copy.c,v 1.1 2005/03/18 03:33:34 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "lib_internal/unify.h"
+
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+int    wrapper_exit_code = 1;
+
+int main(int argc, char *argv[])
+{
+  struct stat  st;
+
+  if (argc<2)                 return EXIT_FAILURE;
+  if (lstat(argv[1],&st)==-1) return EXIT_FAILURE;
+
+  unlink(argv[2]);
+  return Unify_copy(argv[1], &st, argv[2]) ? EXIT_SUCCESS : EXIT_FAILURE;
+}
diff --git a/lib_internal/testsuite/filecfg-ml.c b/lib_internal/testsuite/filecfg-ml.c
new file mode 100644 (file)
index 0000000..968dd22
--- /dev/null
@@ -0,0 +1,55 @@
+// $Id: filecfg-ml.c,v 1.2 2005/01/26 15:32:35 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <lib_internal/filecfg.h>
+
+#include <string.h>
+#include <ctype.h>
+
+char const data[] = "\
+line 1\n\
+#line 2\n\
+\n\
+line 4\n\
+ \n\
+line 6\n\
+ \tline 7\n\
+line 8\t  \n\
+";
+
+static bool
+test(void *x_p, char const *str, size_t len)
+{
+  size_t       *x = x_p;
+
+  if (strncmp(str, "line ", 5)!=0) abort();
+  if (!isdigit(str[len-1]))        abort();
+  ++*x;
+  return true;
+}
+
+int main()
+{
+  size_t       l = 1;
+  FileCfg_iterateOverMultiLine(data, test, &l);
+  if (l!=6) abort();
+}
diff --git a/lib_internal/testsuite/sigbus.c b/lib_internal/testsuite/sigbus.c
new file mode 100644 (file)
index 0000000..fea5ddc
--- /dev/null
@@ -0,0 +1,111 @@
+// $Id: sigbus.c,v 1.3 2005/03/24 12:42:56 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <stdbool.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#define ENSC_WRAPPERS_UNISTD   1
+#define ENSC_WRAPPERS_SOCKET   1
+#include <wrappers.h>
+
+int wrapper_exit_code = 1;
+
+#define TEST_BLOCKSIZE 0x10000
+static bool                    is_gremlin = false;
+static int                     sync_p[2];
+
+static void
+testit()
+{
+  if (!is_gremlin) return;
+
+  char c;
+
+  Esend(sync_p[1], ".", 1, 0);
+  Erecv(sync_p[1], &c,  1, 0);
+}
+
+#define TESTSUITE_COPY_CODE    testit()
+
+#include "../unify.h"
+#include "../unify-copy.c"
+#include "../unify-settime.c"
+
+static bool
+checkTrunc(char const *src,
+          char const *dst,
+          struct stat const *st,
+          size_t pos)
+{
+  pid_t                pid = Efork();
+  
+  if (pid==0) {
+    char               c;
+    
+    Erecv(sync_p[0], &c, 1, 0);
+    Etruncate(src, pos);
+    Esend(sync_p[0], &c, 1, 0);
+    exit(0);
+  }
+
+  unlink(dst);
+  return !copyReg(src, st, dst);
+}
+
+int main()
+{
+  char         f_name0[] = "/tmp/sigbus.XXXXXX";
+  char         f_name1[] = "/tmp/sigbus.XXXXXX";
+  int          fd_src    = mkstemp(f_name0);
+  int          fd_dst    = mkstemp(f_name1);
+  char         buf[TEST_BLOCKSIZE] = { [0] = '\0' };
+  struct stat  st;
+  bool         res;
+  
+  fd_src = 
+  
+  write(fd_src, buf, sizeof(buf));
+  close(fd_src);
+  close(fd_dst);
+
+  unlink(f_name1);
+  stat(f_name0, &st);
+  if (!copyReg(f_name0, &st, f_name1))
+    return EXIT_FAILURE;
+
+
+  is_gremlin = true;
+
+  Esocketpair(AF_LOCAL, SOCK_STREAM, 0, sync_p);
+  signal(SIGCHLD, SIG_IGN);
+
+  res = (checkTrunc(f_name0, f_name1, &st, TEST_BLOCKSIZE/2) &&
+        checkTrunc(f_name0, f_name1, &st, 0x2345));
+
+  unlink(f_name0);
+  unlink(f_name1);
+  return res ? EXIT_SUCCESS : EXIT_FAILURE;
+}
diff --git a/lib_internal/unify-copy.c b/lib_internal/unify-copy.c
new file mode 100644 (file)
index 0000000..a789915
--- /dev/null
@@ -0,0 +1,239 @@
+// $Id: unify-copy.c,v 1.6 2005/03/24 12:42:16 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "unify.h"
+#include "util.h"
+
+#include <unistd.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <setjmp.h>
+#include <signal.h>
+#include <sys/stat.h>
+#include <sys/mman.h>
+
+#define ENSC_WRAPPERS_IO       1
+#include <wrappers.h>
+
+#define MMAP_BLOCKSIZE         (16 * 1024*1024)
+
+#ifndef   TESTSUITE_COPY_CODE
+#  define TESTSUITE_COPY_CODE  do { } while (false)
+#endif
+
+static inline bool
+verifySource(int fd, struct stat const *exp_stat)
+{
+  struct stat          st;
+  
+  return (fstat(fd, &st)!=-1 &&
+         st.st_dev==exp_stat->st_dev &&
+         st.st_ino==exp_stat->st_ino);
+}
+
+static inline bool
+copyLnk(char const *src, char const *dst)
+{
+  ssize_t      len = 1024;
+  for (;;) {
+    char       buf[len];
+    ssize_t    l;
+    l = readlink(src, buf, len-1);
+    if (l==-1) return false;
+    if (l>=len-1) {
+      len *= 2;
+      continue;
+    }
+    buf[l] = '\0';
+
+    return (symlink(buf, dst)!=-1);
+  }
+}
+
+static sigjmp_buf              bus_error_restore;
+static volatile sig_atomic_t   bus_error;
+
+static void
+handlerSIGBUS(int UNUSED num)
+{
+  bus_error = 1;
+  siglongjmp(bus_error_restore, 1);
+}
+
+static void
+copyMem(void *dst_v, void const *src_v, size_t len_v)
+{
+#if 1
+  int          *dst = dst_v;
+  int const    *src = src_v;
+  size_t       len  = len_v / sizeof(int);
+  size_t       rest = len_v - sizeof(int)*len;
+  size_t       i=0;
+
+  for (; i<len; ++i) {
+    if (*src != 0) *dst = *src;
+    ++dst;
+    ++src;
+  }
+
+  char         *dst_c = (void *)(dst);
+  char const   *src_c = (void const *)(src);
+
+  for (i=0; i<rest; ++i) {
+    if (*src_c != 0) *dst_c = *src_c;
+    ++dst_c;
+    ++src_c;
+  }
+#else
+  memcpy(dst_v, src_v, len_v);
+#endif  
+}
+
+static UNUSED bool
+copyMMap(int in_fd, int out_fd)
+{
+  off_t                        in_len   = lseek(in_fd, 0, SEEK_END);
+  void const * volatile in_buf   = 0;
+  void       * volatile        out_buf  = 0;
+  
+  loff_t volatile      buf_size = 0;
+  bool   volatile      res      = false;
+
+  if (in_len==-1) return false;
+  if (in_len>0 &&
+      (lseek(out_fd, in_len-1, SEEK_SET)==-1 ||
+       write(out_fd, "\0",     1)!=1))         // create sparse file
+    return false;
+  
+  bus_error = 0;
+  if (sigsetjmp(bus_error_restore, 1)==0) {
+    off_t              offset   = 0;
+
+    while (offset < in_len) {
+      buf_size = in_len - offset;
+      if (buf_size > MMAP_BLOCKSIZE) buf_size = MMAP_BLOCKSIZE;
+      
+      if ((in_buf  = mmap(0, buf_size, PROT_READ,  MAP_SHARED,  in_fd, offset))==0 ||
+         (out_buf = mmap(0, buf_size, PROT_WRITE, MAP_SHARED, out_fd, offset))==0) {
+       perror("mmap()");
+       goto out;
+      }
+
+      offset  += buf_size;
+      madvise(const_cast(void *)(in_buf),  buf_size, MADV_SEQUENTIAL);
+      madvise(out_buf,                     buf_size, MADV_SEQUENTIAL);
+
+      TESTSUITE_COPY_CODE;
+      copyMem(out_buf, in_buf, buf_size);
+
+      munmap(const_cast(void *)(in_buf),  buf_size);  in_buf = 0;
+      munmap(out_buf,                     buf_size); out_buf = 0;
+    }
+
+    res = true;
+  }
+
+  out:
+  if (in_buf !=0) munmap(const_cast(void *)(in_buf),  buf_size);
+  if (out_buf!=0) munmap(out_buf,                     buf_size);
+
+  return res;
+}
+
+static inline bool
+copyReg(char const *src, struct stat const *src_stat,
+       char const *dst)
+{
+  int          in_fd  = open(src, O_RDONLY|O_NOCTTY|O_NONBLOCK|O_NOFOLLOW|O_LARGEFILE);
+  int          out_fd = in_fd==-1 ? -1 : open(dst, O_RDWR|O_CREAT|O_EXCL, 0200);
+  bool         res    = false;
+  
+  if (in_fd==-1 || out_fd==-1 ||
+      !verifySource(in_fd, src_stat)) goto err;
+
+#if 0  
+  for (;;) {
+    char       buf[2048];
+    ssize_t    l = read(in_fd, buf, sizeof buf);
+    if (l==-1) goto err;
+    if (l==0)  break;
+    if (!WwriteAll(out_fd, buf, l, 0)) goto err;
+  }
+
+  res = true;
+#else
+  void         (*old_handler)(int) = signal(SIGBUS, handlerSIGBUS);
+
+  res = copyMMap(in_fd, out_fd);
+
+  signal(SIGBUS, old_handler);
+#endif
+
+  err:
+  if (out_fd!=-1 && close(out_fd)==-1) res=false;
+  if (in_fd!=-1  && close(in_fd)==-1)  res=false;
+  return res;
+}
+
+static inline bool
+copyNode(char const UNUSED *src, struct stat const *src_stat,
+        char const *dst)
+{
+  return mknod(dst, src_stat->st_mode & (S_IFMT|S_IWUSR),
+              src_stat->st_rdev)!=-1;
+}
+
+static inline bool
+copyDir(char const UNUSED *src, struct stat const UNUSED *src_stat,
+       char const *dst)
+{
+  return mkdir(dst, 0700)!=-1;
+}
+
+static inline bool
+setModes(char const *path, struct stat const *st)
+{
+  return (lchown(path, st->st_uid, st->st_gid)!=-1 &&
+         (S_ISLNK(st->st_mode) || chmod(path, st->st_mode)!=-1));
+}
+
+
+bool
+Unify_copy(char const *src, struct stat const *src_stat,
+          char const *dst)
+{
+  // skip sockets
+  // TODO: message
+  if (S_ISSOCK(src_stat->st_mode))
+    return true;
+  
+  return
+    (((S_ISLNK (src_stat->st_mode) && copyLnk (src, dst)) ||
+      (S_ISREG (src_stat->st_mode) && copyReg (src, src_stat, dst)) ||
+      (S_ISDIR (src_stat->st_mode) && copyDir (src, src_stat, dst)) ||
+      ((S_ISBLK (src_stat->st_mode) ||
+       S_ISCHR (src_stat->st_mode) || 
+       S_ISFIFO(src_stat->st_mode)) && copyNode(src, src_stat, dst))
+      ) &&
+     setModes(dst, src_stat) &&
+     Unify_setTime(dst, src_stat));
+}
diff --git a/lib_internal/unify-deunify.c b/lib_internal/unify-deunify.c
new file mode 100644 (file)
index 0000000..3d03249
--- /dev/null
@@ -0,0 +1,125 @@
+// $Id: unify-deunify.c,v 1.2 2004/02/18 04:48:24 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "unify.h"
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <utime.h>
+#include <fcntl.h>
+#include <errno.h>
+
+#define ENSC_WRAPPERS_IO       1
+#include <wrappers.h>
+
+bool
+Unify_deUnify(char const *dst)
+{
+  size_t               l = strlen(dst);
+  char                 tmpfile[l + sizeof(";XXXXXX")];
+  int                  fd_src, fd_tmp;
+  struct stat          st;
+  struct utimbuf       utm;
+
+  fd_src = open(dst, O_RDONLY);
+  if (fd_src==-1) {
+    perror("open()");
+    return false;
+  }
+
+  if (fstat(fd_src, &st)==-1) {
+    perror("fstat()");
+    close(fd_src);
+    return false;
+  }
+  
+  memcpy(tmpfile,   dst, l);
+  memcpy(tmpfile+l, ";XXXXXX", 8);
+  fd_tmp = mkstemp(tmpfile);
+
+  if (fd_tmp==-1) {
+    perror("mkstemp()");
+    tmpfile[0] = '\0';
+    goto err;
+  }
+
+  if (fchown(fd_tmp, st.st_uid, st.st_gid)==-1 ||
+      fchmod(fd_tmp, st.st_mode)==-1) {
+    perror("fchown()/fchmod()");
+    goto err;
+  }
+
+  // todo: acl?
+
+  for (;;) {
+    char       buf[0x4000];
+    ssize_t    len = read(fd_src, buf, sizeof buf);
+    if (len==-1) {
+      perror("read()");
+      goto err;
+    }
+    if (len==0) break;
+
+    if (!WwriteAll(fd_tmp, buf, len, 0)) goto err;
+  }
+
+  if (close(fd_src)==-1) {
+    perror("close()");
+    goto err;
+  }
+  if (close(fd_tmp)==-1) {
+    perror("close()");
+    goto err;
+  }
+  
+  utm.actime  = st.st_atime;
+  utm.modtime = st.st_mtime;
+
+  // ALERT: race !!!
+  if (utime(tmpfile, &utm)==-1) {
+    perror("utime()");
+    goto err1;
+  }
+
+  if (unlink(dst)==-1) {
+    perror("unlink()");
+    goto err1;
+  }
+  
+  // ALERT: race !!!
+  if (rename(tmpfile, dst)==-1) {
+    perror("FATAL error in rename()");
+    _exit(1);
+  }
+
+  return true;
+  
+  err:
+  close(fd_src);
+  close(fd_tmp);
+  err1:
+  if (tmpfile[0]) unlink(tmpfile);
+
+  return false;
+}
diff --git a/lib_internal/unify-isiunlinkable.c b/lib_internal/unify-isiunlinkable.c
new file mode 100644 (file)
index 0000000..f66fc59
--- /dev/null
@@ -0,0 +1,39 @@
+// $Id: unify-isiunlinkable.c,v 1.2 2005/03/18 00:22:06 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "unify.h"
+#include "vserver.h"
+
+
+UnifyStatus
+Unify_isIUnlinkable(char const *filename)
+{
+  uint_least32_t const         V = VC_IATTR_IUNLINK|VC_IATTR_IMMUTABLE;
+  
+  uint_least32_t               flags;
+  uint_least32_t               mask = V;
+
+  if (vc_get_iattr(filename, 0, &flags, &mask)==-1 || (mask & V) != V)
+    return unifyUNSUPPORTED;
+
+  return (flags & V)==V  ? unifyBUSY : unifyUINLINKABLE;
+}
diff --git a/lib_internal/unify-settime.c b/lib_internal/unify-settime.c
new file mode 100644 (file)
index 0000000..21ccc10
--- /dev/null
@@ -0,0 +1,39 @@
+// $Id: unify-settime.c,v 1.2 2004/06/27 13:03:58 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "unify.h"
+#include <utime.h>
+#include <sys/stat.h>
+
+bool
+Unify_setTime(char const *dst, struct stat const *st)
+{
+  struct utimbuf       utm;
+
+    // skip symlinks
+  if (S_ISLNK(st->st_mode)) return true;
+  
+  utm.actime  = st->st_atime;
+  utm.modtime = st->st_mtime;
+  return utime(dst, &utm)!=-1;
+}
+
diff --git a/lib_internal/unify-unify.c b/lib_internal/unify-unify.c
new file mode 100644 (file)
index 0000000..e17b2fb
--- /dev/null
@@ -0,0 +1,121 @@
+// $Id: unify-unify.c,v 1.9 2005/03/24 00:12:23 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "unify.h"
+#include "vserver.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <signal.h>
+#include <unistd.h>
+#include <errno.h>
+#include <sys/stat.h>
+
+bool
+Unify_unify(char const *src, struct stat const UNUSED *src_stat,
+           char const *dst, bool ignore_zero)
+{
+  size_t       l = strlen(dst);
+  char         tmpfile[l + sizeof(";XXXXXX")];
+  int          fd;
+  bool         res = false;
+  struct stat  st;
+  bool         lstat_succeeded;
+  sigset_t     mask_new, mask_old;
+  int          old_errno;
+
+  // at first, set the ILI flags on 'src'
+  if (vc_set_iattr(src,
+                  0,
+                  VC_IATTR_IUNLINK|VC_IATTR_IMMUTABLE,
+                  VC_IATTR_IUNLINK|VC_IATTR_IMMUTABLE)==-1) {
+    perror("vc_set_iattr()");
+    return false;
+  }
+
+  lstat_succeeded = lstat(dst, &st)==0;
+
+  sigfillset(&mask_new);
+  if (sigprocmask(SIG_SETMASK, &mask_new, &mask_old)==-1) {
+    perror("sigprocmask()");
+    return false;
+  }
+    
+  
+  // check if 'dst' already exists
+  // when ignore_zero is true, do not make backups of empty destinations
+  if (lstat_succeeded && (st.st_size>0 || !ignore_zero)) {
+      // now, create a temporary filename
+    memcpy(tmpfile,   dst, l);
+    memcpy(tmpfile+l, ";XXXXXX", 8);
+    fd = mkstemp(tmpfile);
+    close(fd);
+
+    if (fd==-1) {
+      perror("mkstemp()");
+      tmpfile[0] = '\0';
+      goto err;
+    }
+
+      // and rename the old file to this name
+
+      // NOTE: this rename() is race-free; when an attacker makes 'tmpfile' a
+      // directory, the operation would fail; when making it a symlink to a file
+      // or directory, the symlink but not the file/directory would be overridden
+    if (rename(dst, tmpfile)==-1) {
+      perror("rename()");
+      goto err;
+    }
+  }
+  else {
+    if (lstat_succeeded) unlink(dst);  
+    tmpfile[0] = '\0';
+  }
+
+  // now, link the src-file to dst
+  if (link(src, dst)==-1) {
+    perror("link()");
+
+    unlink(dst);
+    if (tmpfile[0]!='\0' &&
+       rename(tmpfile, dst)==-1) {
+      perror("FATAL error in rename()");
+      _exit(1);
+    }
+    goto err;
+  }
+
+  res = true;
+
+  err:
+  old_errno = errno;
+
+  if (tmpfile[0]!='\0')
+    unlink(tmpfile);
+
+  if (sigprocmask(SIG_SETMASK, &mask_old, 0)==-1)
+    perror("sigprocmask()");
+
+  errno     = old_errno;
+  return res;
+}
diff --git a/lib_internal/unify.h b/lib_internal/unify.h
new file mode 100644 (file)
index 0000000..77ac6bd
--- /dev/null
@@ -0,0 +1,59 @@
+// $Id: unify.h,v 1.5 2005/03/18 03:55:03 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_LIB_INTERNAL_UNIFY_H
+#define H_UTIL_VSERVER_LIB_INTERNAL_UNIFY_H
+
+#include <sys/stat.h>
+#include <stdbool.h>
+
+bool
+Unify_unify(char const *src, struct stat const *src_stat,
+           char const *dst, bool ignore_zero) NONNULL((1,2,3));
+
+bool
+Unify_copy(char const *src, struct stat const *src_stat,
+          char const *dst) NONNULL((1,2,3));
+
+bool
+Unify_deUnify(char const *dst) NONNULL((1));
+
+bool
+Unify_setTime(char const *dst, struct stat const *stat) NONNULL((1,2));
+
+
+typedef enum { unifyUNSUPPORTED, unifyUINLINKABLE, unifyBUSY } UnifyStatus;
+
+UnifyStatus
+Unify_isIUnlinkable(char const *filename) NONNULL((1));
+
+#define        Unify_isUnified(LHS, RHS)               \
+  ((bool)((LHS)->st_dev ==(RHS)->st_dev  &&    \
+         (LHS)->st_ino ==(RHS)->st_ino))
+
+#define Unify_isUnifyable(LHS, RHS)            \
+  ((bool)((LHS)->st_dev  ==(RHS)->st_dev  &&   \
+         (LHS)->st_ino  !=(RHS)->st_ino  &&    \
+         (LHS)->st_mode ==(RHS)->st_mode &&    \
+         (LHS)->st_uid  ==(RHS)->st_uid  &&    \
+         (LHS)->st_gid  ==(RHS)->st_gid  &&    \
+         (LHS)->st_size ==(RHS)->st_size &&    \
+         (LHS)->st_mtime==(RHS)->st_mtime))
+  
+
+#endif //  H_UTIL_VSERVER_LIB_INTERNAL_UNIFY_H
diff --git a/lib_internal/util-canonify.c b/lib_internal/util-canonify.c
new file mode 100644 (file)
index 0000000..48c9a7c
--- /dev/null
@@ -0,0 +1,40 @@
+// $Id: util-canonify.c,v 1.1 2004/07/02 23:34:52 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "util.h"
+
+size_t
+canonifyVserverName(char *name)
+{
+  char         *in  = name;
+  char         *out = name;
+
+  while (*in) {
+    if ((*in>='a' && *in<='z') ||
+       (*in>='A' && *in<='Z') ||
+       (*in>='0' && *in<='9'))
+      *out++ = *in;
+    ++in;
+  }
+  *out = '\0';
+  return out-name;
+}
diff --git a/lib_internal/util-cast.h b/lib_internal/util-cast.h
new file mode 100644 (file)
index 0000000..5d0ad97
--- /dev/null
@@ -0,0 +1,33 @@
+// $Id: util-cast.h,v 1.1 2004/02/26 13:03:00 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTILVSERVER_LIB_INTERNAL_UTIL_CAST_H
+#define H_UTILVSERVER_LIB_INTERNAL_UTIL_CAST_H
+
+#ifndef __cplusplus
+#  define cAsT_(X)              (X))
+#  define reinterpret_cast(X)   ((X) cAsT_
+#  define static_cast(X)        ((X) cAsT_
+#  define const_cast(X)         ((X) cAsT_
+#else   /* __cplusplus */
+#  define reinterpret_cast(X)   reinterpret_cast<X>
+#  define static_cast(X)        static_cast<X>
+#  define const_cast(X)         const_cast<X>
+#endif
+
+#endif //  H_UTILVSERVER_LIB_INTERNAL_UTIL_CAST_H
diff --git a/lib_internal/util-commonstrings.h b/lib_internal/util-commonstrings.h
new file mode 100644 (file)
index 0000000..acdcd56
--- /dev/null
@@ -0,0 +1,32 @@
+// $Id: util-commonstrings.h,v 1.1 2004/02/26 13:03:00 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTILVSERVER_LIB_INTERNAL_UTIL_COMMONSTRINGS_H
+#define H_UTILVSERVER_LIB_INTERNAL_UTIL_COMMONSTRINGS_H
+
+#ifndef PACKAGE_BUGREPORT
+#  define PACKAGE_BUGREPORT    "???"
+#endif
+
+#ifndef VERSION_COPYRIGHT_DISCLAIMER
+#  define VERSION_COPYRIGHT_DISCLAIMER \
+  "This program is free software; you may redistribute it under the terms of\n" \
+  "the GNU General Public License.  This program has absolutely no warranty.\n"
+#endif
+
+#endif //  H_UTILVSERVER_LIB_INTERNAL_UTIL_COMMONSTRINGS_H
diff --git a/lib_internal/util-debug.h b/lib_internal/util-debug.h
new file mode 100644 (file)
index 0000000..b7fc843
--- /dev/null
@@ -0,0 +1,30 @@
+// $Id: util-debug.h,v 1.1 2004/04/14 23:22:13 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_LIB_INTERNAL_UTIL_DEBUG_H
+#define H_UTIL_VSERVER_LIB_INTERNAL_UTIL_DEBUG_H
+
+#ifdef ENSC_ENABLE_DPRINTF
+#  include <stdio.h>
+#  define DPRINTF(FMT,...)     printf(FMT, __VA_ARGS__)
+#else
+#  define DPRINTF(FMT,...)     do {} while(0)
+#endif
+
+
+#endif //  H_UTIL_VSERVER_LIB_INTERNAL_UTIL_DEBUG_H
diff --git a/lib_internal/util-declarecmd.h b/lib_internal/util-declarecmd.h
new file mode 100644 (file)
index 0000000..f9d9af1
--- /dev/null
@@ -0,0 +1,27 @@
+// $Id: util-declarecmd.h,v 1.1 2004/02/26 13:03:00 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTILVSERVER_LIB_INTERNAL_UTIL_DECLARECMD_H
+#define H_UTILVSERVER_LIB_INTERNAL_UTIL_DECLARECMD_H
+
+#define VSERVER_DECLARE_CMD(CMD)     \
+  char         buf[strlen(CMD)+1];  \
+  memcpy(buf, (CMD), strlen(CMD)+1); \
+  CMD = basename(buf);
+
+#endif //  H_UTILVSERVER_LIB_INTERNAL_UTIL_DECLARECMD_H
diff --git a/lib_internal/util-dimof.h b/lib_internal/util-dimof.h
new file mode 100644 (file)
index 0000000..93f353f
--- /dev/null
@@ -0,0 +1,24 @@
+// $Id: util-dimof.h,v 1.1 2004/02/26 13:03:00 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTILVSERVER_LIB_INTERNAL_UTIL_DIMOF_H
+#define H_UTILVSERVER_LIB_INTERNAL_UTIL_DIMOF_H
+
+#define DIM_OF(X)              (sizeof(X)/sizeof((X)[0]))
+
+#endif //  H_UTILVSERVER_LIB_INTERNAL_UTIL_DIMOF_H
diff --git a/lib_internal/util-dotfile.h b/lib_internal/util-dotfile.h
new file mode 100644 (file)
index 0000000..806a2a8
--- /dev/null
@@ -0,0 +1,30 @@
+// $Id: util-dotfile.h,v 1.2 2004/03/18 06:06:07 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_LIB_INTERNAL_UTIL_DOTFILE_H
+#define H_UTIL_VSERVER_LIB_INTERNAL_UTIL_DOTFILE_H
+
+#include <stdbool.h>
+
+static inline UNUSED ALWAYSINLINE bool
+isDotfile(char const *d)
+{
+  return d[0]=='.' && (d[1]=='\0' || (d[1]=='.' && d[2]=='\0'));
+}
+
+#endif //  H_UTIL_VSERVER_LIB_INTERNAL_UTIL_DOTFILE_H
diff --git a/lib_internal/util-exitlikeprocess.c b/lib_internal/util-exitlikeprocess.c
new file mode 100644 (file)
index 0000000..c0c6944
--- /dev/null
@@ -0,0 +1,90 @@
+// $Id: util-exitlikeprocess.c,v 1.4 2005/03/22 14:59:46 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "util.h"
+#include <lib/internal.h>
+
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/resource.h>
+#include <sys/wait.h>
+#include <unistd.h>
+#include <signal.h>
+#include <sys/resource.h>
+#include <stdio.h>
+
+void
+exitLikeProcess(int pid, char const *cmd, int ret)
+{
+  int                  status;
+  
+  if (wait4(pid, &status, 0,0)==-1) {
+    
+    perror("wait()");
+    exit(ret);
+  }
+
+  if (WIFEXITED(status))
+    exit(WEXITSTATUS(status));
+
+  if (WIFSIGNALED(status)) {
+    struct rlimit      lim = { 0,0 };
+
+    if (cmd) {
+      char             buf[sizeof(int)*3 + 2];
+      size_t           l = utilvserver_fmt_uint(buf, pid);
+      
+      WRITE_MSG(2, "command '");
+      WRITE_STR(2, cmd);
+      WRITE_MSG(2, "' (pid ");
+      Vwrite   (2, buf, l);
+      WRITE_MSG(2, ") exited with signal ");
+      l = utilvserver_fmt_uint(buf, WTERMSIG(status));      
+      Vwrite   (2, buf, l);
+      WRITE_MSG(2, "; following it...\n");
+    }
+
+    // prevent coredumps which might override the real ones
+    setrlimit(RLIMIT_CORE, &lim);
+      
+    kill(getpid(), WTERMSIG(status));
+    exit(1);
+  }
+  else {
+    char               buf[sizeof(int)*3 + 2];
+    size_t             l = utilvserver_fmt_uint(buf, WTERMSIG(status));
+
+    WRITE_MSG(2, "Unexpected status ");
+    Vwrite   (2, buf, l);
+    WRITE_MSG(2, " from '");
+    if (cmd) {
+      WRITE_STR(2, cmd);
+      WRITE_MSG(2, " (pid ");
+    }
+    l = utilvserver_fmt_uint(buf, pid);
+    Vwrite   (2, buf, l);
+    if (cmd) WRITE_MSG(2, ")\n");
+    else     WRITE_MSG(2, "\n");
+
+    exit(ret);
+  }
+}
diff --git a/lib_internal/util-exitlikeprocess.h b/lib_internal/util-exitlikeprocess.h
new file mode 100644 (file)
index 0000000..c4d93d0
--- /dev/null
@@ -0,0 +1,25 @@
+// $Id: util-exitlikeprocess.h,v 1.3 2004/05/11 18:25:14 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTILVSERVER_LIB_INTERNAL_UTIL_EXITLIKEPROCESS_H
+#define H_UTILVSERVER_LIB_INTERNAL_UTIL_EXITLIKEPROCESS_H
+
+#include <sys/types.h>
+void   exitLikeProcess(pid_t pid, char const /*@null@*/ *cmd, int ret) NORETURN;
+
+#endif //  H_UTILVSERVER_LIB_INTERNAL_UTIL_EXITLIKEPROCESS_H
diff --git a/lib_internal/util-io.h b/lib_internal/util-io.h
new file mode 100644 (file)
index 0000000..e1df657
--- /dev/null
@@ -0,0 +1,41 @@
+// $Id: util-io.h,v 1.2 2005/03/22 14:59:46 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_LIB_INTERNAL_UTIL_IO_H
+#define H_UTIL_VSERVER_LIB_INTERNAL_UTIL_IO_H
+
+#include <unistd.h>
+#include <string.h>
+
+inline static void UNUSED
+Vwrite(int fd, char const *buf, size_t len)
+{
+  if (write(fd,buf,len)==-1) { /**/ }
+}
+
+inline static void UNUSED
+writeStr(int fd, char const *cmd)
+{
+  Vwrite(fd, cmd, strlen(cmd));
+}
+
+#define WRITE_MSG(FD,X)                Vwrite(FD,X,sizeof(X)-1)
+#define WRITE_STR(FD,X)                writeStr(FD,X)
+
+
+#endif //  H_UTIL_VSERVER_LIB_INTERNAL_UTIL_IO_H
diff --git a/lib_internal/util-isnumber.c b/lib_internal/util-isnumber.c
new file mode 100644 (file)
index 0000000..2fea0e4
--- /dev/null
@@ -0,0 +1,38 @@
+// $Id: util-isnumber.c,v 1.1 2005/07/04 22:35:47 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "util.h"
+
+bool
+isNumber(char const *str, signed long *result)
+{
+  char *       errptr;
+  signed long  val;
+
+  val = strtol(str, &errptr, 0);
+  if (*errptr!='\0' || errptr==str)
+    return false;
+  else {
+    if (result) *result = val;
+    return true;
+  }
+}
diff --git a/lib_internal/util-lockfile.c b/lib_internal/util-lockfile.c
new file mode 100644 (file)
index 0000000..be07329
--- /dev/null
@@ -0,0 +1,86 @@
+// $Id: util-lockfile.c,v 1.1 2004/07/02 23:34:52 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "util-lockfile.h"
+#include "errinfo.h"
+
+#include <signal.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/file.h>
+#include <errno.h>
+
+static volatile sig_atomic_t   alarm_flag = 0;
+
+static void
+alarmFunc(int UNUSED sig)
+{
+  alarm_flag = 1;
+  signal(SIGALRM, alarmFunc);
+}
+
+bool
+lockfile(int *fd, char const *filename, int op, long timeout,
+        struct ErrorInformation *err)
+{
+  char const   *errstr = 0;
+  void         (*old_sighandler)(int) = 0;
+
+  errstr = "open()";
+  *fd = open(filename, O_CREAT|O_RDONLY|O_NOFOLLOW|O_NONBLOCK, 0644);
+  if (*fd==-1) goto err;
+
+  if (timeout!=-1) {
+    errstr = "siginterrupt()";
+    if (siginterrupt(SIGALRM, 1)==-1) goto err;
+
+    errstr = "signal()";
+    old_sighandler = signal(SIGALRM, alarmFunc);
+    if (old_sighandler==SIG_ERR) goto err;
+
+    alarm(timeout);
+  }
+
+  errstr = "flock()";
+  while (flock(*fd, op)==-1) {
+    if ((errno!=EINTR && errno!=EINTR) || alarm_flag) goto err;
+  }
+
+  if (timeout!=-1 && old_sighandler!=0)
+    signal(SIGALRM, old_sighandler);
+
+  errstr = "fcntl()";
+  if (fcntl(*fd, F_SETFD, FD_CLOEXEC)==-1) goto err;
+
+  return true;
+
+  err:
+  if (err) {
+    err->pos = errstr;
+    err->id  = errno;
+  }
+  if (timeout!=-1 && old_sighandler!=0)
+    signal(SIGALRM, old_sighandler);
+  if (*fd!=-1) close(*fd);
+  return false;
+}
diff --git a/lib_internal/util-lockfile.h b/lib_internal/util-lockfile.h
new file mode 100644 (file)
index 0000000..2431fac
--- /dev/null
@@ -0,0 +1,30 @@
+// $Id: util-lockfile.h,v 1.1 2004/07/02 23:34:52 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_LIB_INTERNAL_UTIL_LOCKFILE_H
+#define H_UTIL_VSERVER_LIB_INTERNAL_UTIL_LOCKFILE_H
+
+#include <stdbool.h>
+
+struct ErrorInformation;
+
+bool   lockfile(int *fd, char const *filename, int op,
+                long timeout,
+                struct ErrorInformation *err);
+
+#endif //  H_UTIL_VSERVER_LIB_INTERNAL_UTIL_LOCKFILE_H
diff --git a/lib_internal/util-mem.h b/lib_internal/util-mem.h
new file mode 100644 (file)
index 0000000..fc8a682
--- /dev/null
@@ -0,0 +1,31 @@
+// $Id: util-mem.h,v 1.3 2004/07/02 23:45:09 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_LIB_INTERNAL_UTIL_MEM_H
+#define H_UTIL_VSERVER_LIB_INTERNAL_UTIL_MEM_H
+
+#include <string.h>
+#include <stdlib.h>
+
+inline static void *
+Xmemcpy(void * restrict dst, void const * restrict src, size_t len)
+{
+  return (char *)(memcpy(dst, src, len))+len;
+}
+
+#endif //  H_UTIL_VSERVER_LIB_INTERNAL_UTIL_MEM_H
diff --git a/lib_internal/util-perror.h b/lib_internal/util-perror.h
new file mode 100644 (file)
index 0000000..6704fc5
--- /dev/null
@@ -0,0 +1,44 @@
+// $Id: util-perror.h,v 1.2 2004/03/24 01:07:53 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_LIB_INTERNAL_UTIL_PERROR_H
+#define H_UTIL_VSERVER_LIB_INTERNAL_UTIL_PERROR_H
+
+#define PERROR_U(MSG, ARG0) do {                       \
+    size_t     pu_l1 = strlen(MSG);                    \
+    size_t     pu_l2 = strlen(ARG0);                   \
+    char       pu_buf[pu_l1 + pu_l2 + sizeof("()")];   \
+    memcpy(pu_buf, MSG, pu_l1);                                \
+    pu_buf[pu_l1] = '(';                               \
+    memcpy(pu_buf+1+pu_l1, ARG0, pu_l2);               \
+    pu_buf[pu_l1+1+pu_l2] = ')';                       \
+    pu_buf[pu_l1+2+pu_l2] = '\0';                      \
+    perror(pu_buf);                                    \
+  } while (0)
+
+#define PERROR_Q(MSG, ARG0) do {               \
+    size_t     pq_l = strlen(ARG0);            \
+    char       pq_buf[pq_l + 3];               \
+    pq_buf[0]    = '"';                                \
+    memcpy(pq_buf+1, ARG0, pq_l);              \
+    pq_buf[pq_l+1] = '"';                      \
+    pq_buf[pq_l+2] = '\0';                     \
+    PERROR_U(MSG, pq_buf);                     \
+  } while (0)
+
+#endif //  H_UTIL_VSERVER_LIB_INTERNAL_UTIL_PERROR_H
diff --git a/lib_internal/util-safechdir.c b/lib_internal/util-safechdir.c
new file mode 100644 (file)
index 0000000..f7c4d97
--- /dev/null
@@ -0,0 +1,50 @@
+// $Id: util-safechdir.c,v 1.2 2004/02/19 22:25:50 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <string.h>
+
+int
+safeChdir(char const *path, struct stat const *exp_stat)
+{
+  if (strchr(path, '/')!=0) {
+    errno = EINVAL;
+    return -1;
+  }
+
+  {
+    struct stat                now_stat;
+    if (chdir(path)==-1 ||
+       stat(".", &now_stat)==-1) return -1;
+    if (exp_stat->st_dev != now_stat.st_dev ||
+       exp_stat->st_ino != now_stat.st_ino) {
+      // TODO: warning/logging
+      errno = EINVAL;
+      return -1;
+    }
+  }
+
+  return 0;
+}
diff --git a/lib_internal/util-safechdir.h b/lib_internal/util-safechdir.h
new file mode 100644 (file)
index 0000000..e30bbfa
--- /dev/null
@@ -0,0 +1,28 @@
+// $Id: util-safechdir.h,v 1.1 2004/02/18 04:42:38 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_LIB_INTERNAL_UTIL_SAFECHDIR_H
+#define H_UTIL_VSERVER_LIB_INTERNAL_UTIL_SAFECHDIR_H
+
+struct stat;
+int    safeChdir(char const *, struct stat const *exp_stat) NONNULL((1,2));
+
+#define EsafeChdir(PATH,EXP_STAT) \
+  FatalErrnoError(safeChdir(PATH,EXP_STAT)==-1, "safeChdir()")
+
+#endif //  H_UTIL_VSERVER_LIB_INTERNAL_UTIL_SAFECHDIR_H
diff --git a/lib_internal/util-unixsock.h b/lib_internal/util-unixsock.h
new file mode 100644 (file)
index 0000000..9e4083c
--- /dev/null
@@ -0,0 +1,27 @@
+// $Id: util-unixsock.h,v 1.1 2004/03/05 03:17:39 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_LIB_INTERNAL_UTIL_UNIXSOCK_H
+#define H_UTIL_VSERVER_LIB_INTERNAL_UTIL_UNIXSOCK_H
+
+#define ENSC_INIT_UNIX_SOCK(ADDR, FILENAME)                    \
+  (ADDR).sun_family = AF_UNIX;                                 \
+  strncpy((ADDR).sun_path, FILENAME, sizeof((ADDR).sun_path)); \
+  (ADDR).sun_path[sizeof((ADDR).sun_path)-1] = '\0';
+
+#endif //  H_UTIL_VSERVER_LIB_INTERNAL_UTIL_UNIXSOCK_H
diff --git a/lib_internal/util.h b/lib_internal/util.h
new file mode 100644 (file)
index 0000000..c49d1e2
--- /dev/null
@@ -0,0 +1,40 @@
+// $Id: util.h,v 1.6 2005/07/04 22:35:47 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTILVSERVER_LIB_INTERNAL_UTIL_H
+#define H_UTILVSERVER_LIB_INTERNAL_UTIL_H
+
+#include "util-cast.h"
+#include "util-commonstrings.h"
+#include "util-debug.h"
+#include "util-declarecmd.h"
+#include "util-dimof.h"
+#include "util-dotfile.h"
+#include "util-exitlikeprocess.h"
+#include "util-io.h"
+#include "util-lockfile.h"
+#include "util-mem.h"
+#include "util-perror.h"
+#include "util-safechdir.h"
+#include "util-unixsock.h"
+
+bool           switchToWatchXid(char const **);
+size_t         canonifyVserverName(char *);
+bool           isNumber(char const *, signed long *result);
+
+#endif //  H_UTILVSERVER_LIB_INTERNAL_UTIL_H
diff --git a/ltmain.sh b/ltmain.sh
new file mode 100644 (file)
index 0000000..9be0eb1
--- /dev/null
+++ b/ltmain.sh
@@ -0,0 +1,6496 @@
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun configure.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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.
+
+basename="s,^.*/,,g"
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+# The name of this program:
+progname=`echo "$progpath" | $SED $basename`
+modename="$progname"
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.5.16
+TIMESTAMP=" (1.1220.2.235 2005/04/25 18:13:26)"
+
+# 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
+
+# Check that we have a working $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, and then maybe $echo will work.
+  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit $EXIT_SUCCESS
+fi
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+# test EBCDIC or ASCII
+case `echo A|tr A '\301'` in
+ A) # EBCDIC based system
+  SP2NL="tr '\100' '\n'"
+  NL2SP="tr '\r\n' '\100\100'"
+  ;;
+ *) # Assume ASCII based system
+  SP2NL="tr '\040' '\012'"
+  NL2SP="tr '\015\012' '\040\040'"
+  ;;
+esac
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+# We save the old values to restore during execute mode.
+if test "${LC_ALL+set}" = set; then
+  save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
+fi
+if test "${LANG+set}" = set; then
+  save_LANG="$LANG"; LANG=C; export LANG
+fi
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS="  $lt_nl"
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+  $echo "$modename: not configured to build any kind of library" 1>&2
+  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+  exit $EXIT_FAILURE
+fi
+
+# Global variables.
+mode=$default_mode
+nonopt=
+prev=
+prevopt=
+run=
+show="$echo"
+show_help=
+execute_dlfiles=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+quote_scanset='[[~#^*{};<>?'"'"'       ]'
+
+#####################################
+# Shell function definitions:
+# This seems to be the best place for them
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+func_win32_libid ()
+{
+  win32_libid_type="unknown"
+  win32_fileres=`file -L $1 2>/dev/null`
+  case $win32_fileres in
+  *ar\ archive\ import\ library*) # definitely import
+    win32_libid_type="x86 archive import"
+    ;;
+  *ar\ archive*) # could be an import, or static
+    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
+      $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+      win32_nmres=`eval $NM -f posix -A $1 | \
+       sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'`
+      if test "X$win32_nmres" = "Ximport" ; then
+        win32_libid_type="x86 archive import"
+      else
+        win32_libid_type="x86 archive static"
+      fi
+    fi
+    ;;
+  *DLL*)
+    win32_libid_type="x86 DLL"
+    ;;
+  *executable*) # but shell scripts are "executable" too...
+    case $win32_fileres in
+    *MS\ Windows\ PE\ Intel*)
+      win32_libid_type="x86 DLL"
+      ;;
+    esac
+    ;;
+  esac
+  $echo $win32_libid_type
+}
+
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag ()
+{
+    if test -n "$available_tags" && test -z "$tagname"; then
+      CC_quoted=
+      for arg in $CC; do
+       case $arg in
+         *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+         arg="\"$arg\""
+         ;;
+       esac
+       CC_quoted="$CC_quoted $arg"
+      done
+      case $@ in
+      # Blanks in the command may have been stripped by the calling shell,
+      # but not from the CC environment variable when configure was run.
+      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
+      # Blanks at the start of $base_compile will cause this to fail
+      # if we don't check for them as well.
+      *)
+       for z in $available_tags; do
+         if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+           # Evaluate the configuration.
+           eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+           CC_quoted=
+           for arg in $CC; do
+           # Double-quote args containing other shell metacharacters.
+           case $arg in
+             *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+             arg="\"$arg\""
+             ;;
+           esac
+           CC_quoted="$CC_quoted $arg"
+         done
+           case "$@ " in
+             " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
+             # The compiler in the base compile command matches
+             # the one in the tagged configuration.
+             # Assume this is the tagged configuration we want.
+             tagname=$z
+             break
+             ;;
+           esac
+         fi
+       done
+       # If $tagname still isn't set, then no tagged configuration
+       # was found and let the user know that the "--tag" command
+       # line option must be used.
+       if test -z "$tagname"; then
+         $echo "$modename: unable to infer tagged configuration"
+         $echo "$modename: specify a tag with \`--tag'" 1>&2
+         exit $EXIT_FAILURE
+#        else
+#          $echo "$modename: using $tagname tagged configuration"
+       fi
+       ;;
+      esac
+    fi
+}
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+    f_ex_an_ar_dir="$1"; shift
+    f_ex_an_ar_oldlib="$1"
+
+    $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
+    $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
+    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+     :
+    else
+      $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
+      exit $EXIT_FAILURE
+    fi
+}
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+    my_gentop="$1"; shift
+    my_oldlibs=${1+"$@"}
+    my_oldobjs=""
+    my_xlib=""
+    my_xabs=""
+    my_xdir=""
+    my_status=""
+
+    $show "${rm}r $my_gentop"
+    $run ${rm}r "$my_gentop"
+    $show "$mkdir $my_gentop"
+    $run $mkdir "$my_gentop"
+    my_status=$?
+    if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
+      exit $my_status
+    fi
+
+    for my_xlib in $my_oldlibs; do
+      # Extract the objects.
+      case $my_xlib in
+       [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+       *) my_xabs=`pwd`"/$my_xlib" ;;
+      esac
+      my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
+      my_xdir="$my_gentop/$my_xlib"
+
+      $show "${rm}r $my_xdir"
+      $run ${rm}r "$my_xdir"
+      $show "$mkdir $my_xdir"
+      $run $mkdir "$my_xdir"
+      status=$?
+      if test "$status" -ne 0 && test ! -d "$my_xdir"; then
+       exit $status
+      fi
+      case $host in
+      *-darwin*)
+       $show "Extracting $my_xabs"
+       # Do not bother doing anything if just a dry run
+       if test -z "$run"; then
+         darwin_orig_dir=`pwd`
+         cd $my_xdir || exit $?
+         darwin_archive=$my_xabs
+         darwin_curdir=`pwd`
+         darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
+         darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
+         if test -n "$darwin_arches"; then 
+           darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
+           darwin_arch=
+           $show "$darwin_base_archive has multiple architectures $darwin_arches"
+           for darwin_arch in  $darwin_arches ; do
+             mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+             lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+             cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+             func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+             cd "$darwin_curdir"
+             $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+           done # $darwin_arches
+      ## Okay now we have a bunch of thin objects, gotta fatten them up :)
+           darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
+           darwin_file=
+           darwin_files=
+           for darwin_file in $darwin_filelist; do
+             darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+             lipo -create -output "$darwin_file" $darwin_files
+           done # $darwin_filelist
+           ${rm}r unfat-$$
+           cd "$darwin_orig_dir"
+         else
+           cd "$darwin_orig_dir"
+           func_extract_an_archive "$my_xdir" "$my_xabs"
+         fi # $darwin_arches
+       fi # $run
+      ;;
+      *)
+        func_extract_an_archive "$my_xdir" "$my_xabs"
+        ;;
+      esac
+      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+    done
+    func_extract_archives_result="$my_oldobjs"
+}
+# End of Shell function definitions
+#####################################
+
+# Darwin sucks
+eval std_shrext=\"$shrext_cmds\"
+
+# Parse our command line options once, thoroughly.
+while test "$#" -gt 0
+do
+  arg="$1"
+  shift
+
+  case $arg in
+  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) optarg= ;;
+  esac
+
+  # If the previous option needs an argument, assign it.
+  if test -n "$prev"; then
+    case $prev in
+    execute_dlfiles)
+      execute_dlfiles="$execute_dlfiles $arg"
+      ;;
+    tag)
+      tagname="$arg"
+      preserve_args="${preserve_args}=$arg"
+
+      # Check whether tagname contains only valid characters
+      case $tagname in
+      *[!-_A-Za-z0-9,/]*)
+       $echo "$progname: invalid tag name: $tagname" 1>&2
+       exit $EXIT_FAILURE
+       ;;
+      esac
+
+      case $tagname in
+      CC)
+       # Don't test for the "default" C tag, as we know, it's there, but
+       # not specially marked.
+       ;;
+      *)
+       if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
+         taglist="$taglist $tagname"
+         # Evaluate the configuration.
+         eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
+       else
+         $echo "$progname: ignoring unknown tag $tagname" 1>&2
+       fi
+       ;;
+      esac
+      ;;
+    *)
+      eval "$prev=\$arg"
+      ;;
+    esac
+
+    prev=
+    prevopt=
+    continue
+  fi
+
+  # Have we seen a non-optional argument yet?
+  case $arg in
+  --help)
+    show_help=yes
+    ;;
+
+  --version)
+    $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+    $echo
+    $echo "Copyright (C) 2005  Free Software Foundation, Inc."
+    $echo "This is free software; see the source for copying conditions.  There is NO"
+    $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+    exit $?
+    ;;
+
+  --config)
+    ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
+    # Now print the configurations for the tags.
+    for tagname in $taglist; do
+      ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
+    done
+    exit $?
+    ;;
+
+  --debug)
+    $echo "$progname: enabling shell trace mode"
+    set -x
+    preserve_args="$preserve_args $arg"
+    ;;
+
+  --dry-run | -n)
+    run=:
+    ;;
+
+  --features)
+    $echo "host: $host"
+    if test "$build_libtool_libs" = yes; then
+      $echo "enable shared libraries"
+    else
+      $echo "disable shared libraries"
+    fi
+    if test "$build_old_libs" = yes; then
+      $echo "enable static libraries"
+    else
+      $echo "disable static libraries"
+    fi
+    exit $?
+    ;;
+
+  --finish) mode="finish" ;;
+
+  --mode) prevopt="--mode" prev=mode ;;
+  --mode=*) mode="$optarg" ;;
+
+  --preserve-dup-deps) duplicate_deps="yes" ;;
+
+  --quiet | --silent)
+    show=:
+    preserve_args="$preserve_args $arg"
+    ;;
+
+  --tag) prevopt="--tag" prev=tag ;;
+  --tag=*)
+    set tag "$optarg" ${1+"$@"}
+    shift
+    prev=tag
+    preserve_args="$preserve_args --tag"
+    ;;
+
+  -dlopen)
+    prevopt="-dlopen"
+    prev=execute_dlfiles
+    ;;
+
+  -*)
+    $echo "$modename: unrecognized option \`$arg'" 1>&2
+    $echo "$help" 1>&2
+    exit $EXIT_FAILURE
+    ;;
+
+  *)
+    nonopt="$arg"
+    break
+    ;;
+  esac
+done
+
+if test -n "$prevopt"; then
+  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+  $echo "$help" 1>&2
+  exit $EXIT_FAILURE
+fi
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+if test -z "$show_help"; then
+
+  # Infer the operation mode.
+  if test -z "$mode"; then
+    $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
+    $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
+    case $nonopt in
+    *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
+      mode=link
+      for arg
+      do
+       case $arg in
+       -c)
+          mode=compile
+          break
+          ;;
+       esac
+      done
+      ;;
+    *db | *dbx | *strace | *truss)
+      mode=execute
+      ;;
+    *install*|cp|mv)
+      mode=install
+      ;;
+    *rm)
+      mode=uninstall
+      ;;
+    *)
+      # If we have no mode, but dlfiles were specified, then do execute mode.
+      test -n "$execute_dlfiles" && mode=execute
+
+      # Just use the default operation mode.
+      if test -z "$mode"; then
+       if test -n "$nonopt"; then
+         $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+       else
+         $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+       fi
+      fi
+      ;;
+    esac
+  fi
+
+  # Only execute mode is allowed to have -dlopen flags.
+  if test -n "$execute_dlfiles" && test "$mode" != execute; then
+    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
+    $echo "$help" 1>&2
+    exit $EXIT_FAILURE
+  fi
+
+  # Change the help message to a mode-specific one.
+  generic_help="$help"
+  help="Try \`$modename --help --mode=$mode' for more information."
+
+  # These modes are in order of execution frequency so that they run quickly.
+  case $mode in
+  # libtool compile mode
+  compile)
+    modename="$modename: compile"
+    # Get the compilation command and the source file.
+    base_compile=
+    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
+    suppress_opt=yes
+    suppress_output=
+    arg_mode=normal
+    libobj=
+    later=
+
+    for arg
+    do
+      case "$arg_mode" in
+      arg  )
+       # do not "continue".  Instead, add this to base_compile
+       lastarg="$arg"
+       arg_mode=normal
+       ;;
+
+      target )
+       libobj="$arg"
+       arg_mode=normal
+       continue
+       ;;
+
+      normal )
+       # Accept any command-line options.
+       case $arg in
+       -o)
+         if test -n "$libobj" ; then
+           $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+           exit $EXIT_FAILURE
+         fi
+         arg_mode=target
+         continue
+         ;;
+
+       -static | -prefer-pic | -prefer-non-pic)
+         later="$later $arg"
+         continue
+         ;;
+
+       -no-suppress)
+         suppress_opt=no
+         continue
+         ;;
+
+       -Xcompiler)
+         arg_mode=arg  #  the next one goes into the "base_compile" arg list
+         continue      #  The current "srcfile" will either be retained or
+         ;;            #  replaced later.  I would guess that would be a bug.
+
+       -Wc,*)
+         args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+         lastarg=
+         save_ifs="$IFS"; IFS=','
+         for arg in $args; do
+           IFS="$save_ifs"
+
+           # Double-quote args containing other shell metacharacters.
+           # Many Bourne shells cannot handle close brackets correctly
+           # in scan sets, so we specify it separately.
+           case $arg in
+             *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+             arg="\"$arg\""
+             ;;
+           esac
+           lastarg="$lastarg $arg"
+         done
+         IFS="$save_ifs"
+         lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+
+         # Add the arguments to base_compile.
+         base_compile="$base_compile $lastarg"
+         continue
+         ;;
+
+       * )
+         # Accept the current argument as the source file.
+         # The previous "srcfile" becomes the current argument.
+         #
+         lastarg="$srcfile"
+         srcfile="$arg"
+         ;;
+       esac  #  case $arg
+       ;;
+      esac    #  case $arg_mode
+
+      # Aesthetically quote the previous argument.
+      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+
+      case $lastarg in
+      # Double-quote args containing other shell metacharacters.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, and some SunOS ksh mistreat backslash-escaping
+      # in scan sets (worked around with variable expansion),
+      # and furthermore cannot handle '|' '&' '(' ')' in scan sets 
+      # at all, so we specify them separately.
+      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+       lastarg="\"$lastarg\""
+       ;;
+      esac
+
+      base_compile="$base_compile $lastarg"
+    done # for arg
+
+    case $arg_mode in
+    arg)
+      $echo "$modename: you must specify an argument for -Xcompile"
+      exit $EXIT_FAILURE
+      ;;
+    target)
+      $echo "$modename: you must specify a target with \`-o'" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    *)
+      # Get the name of the library object.
+      [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+      ;;
+    esac
+
+    # Recognize several different file suffixes.
+    # If the user specifies -o file.o, it is replaced with file.lo
+    xform='[cCFSifmso]'
+    case $libobj in
+    *.ada) xform=ada ;;
+    *.adb) xform=adb ;;
+    *.ads) xform=ads ;;
+    *.asm) xform=asm ;;
+    *.c++) xform=c++ ;;
+    *.cc) xform=cc ;;
+    *.ii) xform=ii ;;
+    *.class) xform=class ;;
+    *.cpp) xform=cpp ;;
+    *.cxx) xform=cxx ;;
+    *.f90) xform=f90 ;;
+    *.for) xform=for ;;
+    *.java) xform=java ;;
+    esac
+
+    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+
+    case $libobj in
+    *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
+    *)
+      $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    esac
+
+    func_infer_tag $base_compile
+
+    for arg in $later; do
+      case $arg in
+      -static)
+       build_old_libs=yes
+       continue
+       ;;
+
+      -prefer-pic)
+       pic_mode=yes
+       continue
+       ;;
+
+      -prefer-non-pic)
+       pic_mode=no
+       continue
+       ;;
+      esac
+    done
+
+    qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
+    case $qlibobj in
+      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+       qlibobj="\"$qlibobj\"" ;;
+    esac
+    if test "X$libobj" != "X$qlibobj"; then
+       $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
+       exit $EXIT_FAILURE
+    fi
+    objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+    xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$xdir" = "X$obj"; then
+      xdir=
+    else
+      xdir=$xdir/
+    fi
+    lobj=${xdir}$objdir/$objname
+
+    if test -z "$base_compile"; then
+      $echo "$modename: you must specify a compilation command" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    # Delete any leftover library objects.
+    if test "$build_old_libs" = yes; then
+      removelist="$obj $lobj $libobj ${libobj}T"
+    else
+      removelist="$lobj $libobj ${libobj}T"
+    fi
+
+    $run $rm $removelist
+    trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+
+    # On Cygwin there's no "real" PIC flag so we must build both object types
+    case $host_os in
+    cygwin* | mingw* | pw32* | os2*)
+      pic_mode=default
+      ;;
+    esac
+    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+      # non-PIC code in shared libraries is not supported
+      pic_mode=default
+    fi
+
+    # Calculate the filename of the output object if compiler does
+    # not support -o with -c
+    if test "$compiler_c_o" = no; then
+      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+      lockfile="$output_obj.lock"
+      removelist="$removelist $output_obj $lockfile"
+      trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+    else
+      output_obj=
+      need_locks=no
+      lockfile=
+    fi
+
+    # Lock this critical section if it is needed
+    # We use this script file to make the link, it avoids creating a new file
+    if test "$need_locks" = yes; then
+      until $run ln "$progpath" "$lockfile" 2>/dev/null; do
+       $show "Waiting for $lockfile to be removed"
+       sleep 2
+      done
+    elif test "$need_locks" = warn; then
+      if test -f "$lockfile"; then
+       $echo "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+       $run $rm $removelist
+       exit $EXIT_FAILURE
+      fi
+      $echo "$srcfile" > "$lockfile"
+    fi
+
+    if test -n "$fix_srcfile_path"; then
+      eval srcfile=\"$fix_srcfile_path\"
+    fi
+    qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
+    case $qsrcfile in
+      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+      qsrcfile="\"$qsrcfile\"" ;;
+    esac
+
+    $run $rm "$libobj" "${libobj}T"
+
+    # Create a libtool object file (analogous to a ".la" file),
+    # but don't create it if we're doing a dry run.
+    test -z "$run" && cat > ${libobj}T <<EOF
+# $libobj - a libtool object file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+EOF
+
+    # Only build a PIC object if we are building libtool libraries.
+    if test "$build_libtool_libs" = yes; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      if test "$pic_mode" != no; then
+       command="$base_compile $qsrcfile $pic_flag"
+      else
+       # Don't build PIC code
+       command="$base_compile $qsrcfile"
+      fi
+
+      if test ! -d "${xdir}$objdir"; then
+       $show "$mkdir ${xdir}$objdir"
+       $run $mkdir ${xdir}$objdir
+       status=$?
+       if test "$status" -ne 0 && test ! -d "${xdir}$objdir"; then
+         exit $status
+       fi
+      fi
+
+      if test -z "$output_obj"; then
+       # Place PIC objects in $objdir
+       command="$command -o $lobj"
+      fi
+
+      $run $rm "$lobj" "$output_obj"
+
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+       test -n "$output_obj" && $run $rm $removelist
+       exit $EXIT_FAILURE
+      fi
+
+      if test "$need_locks" = warn &&
+        test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+       $echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+       $run $rm $removelist
+       exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed, then go on to compile the next one
+      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+       $show "$mv $output_obj $lobj"
+       if $run $mv $output_obj $lobj; then :
+       else
+         error=$?
+         $run $rm $removelist
+         exit $error
+       fi
+      fi
+
+      # Append the name of the PIC object to the libtool object file.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object='$objdir/$objname'
+
+EOF
+
+      # Allow error messages only from the first compilation.
+      if test "$suppress_opt" = yes; then
+        suppress_output=' >/dev/null 2>&1'
+      fi
+    else
+      # No PIC object so indicate it doesn't exist in the libtool
+      # object file.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object=none
+
+EOF
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test "$build_old_libs" = yes; then
+      if test "$pic_mode" != yes; then
+       # Don't build PIC code
+       command="$base_compile $qsrcfile"
+      else
+       command="$base_compile $qsrcfile $pic_flag"
+      fi
+      if test "$compiler_c_o" = yes; then
+       command="$command -o $obj"
+      fi
+
+      # Suppress compiler output if we already did a PIC compilation.
+      command="$command$suppress_output"
+      $run $rm "$obj" "$output_obj"
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+       $run $rm $removelist
+       exit $EXIT_FAILURE
+      fi
+
+      if test "$need_locks" = warn &&
+        test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+       $echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+       $run $rm $removelist
+       exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed
+      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+       $show "$mv $output_obj $obj"
+       if $run $mv $output_obj $obj; then :
+       else
+         error=$?
+         $run $rm $removelist
+         exit $error
+       fi
+      fi
+
+      # Append the name of the non-PIC object the libtool object file.
+      # Only append if the libtool object file exists.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object='$objname'
+
+EOF
+    else
+      # Append the name of the non-PIC object the libtool object file.
+      # Only append if the libtool object file exists.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object=none
+
+EOF
+    fi
+
+    $run $mv "${libobj}T" "${libobj}"
+
+    # Unlock the critical section if it was locked
+    if test "$need_locks" != no; then
+      $run $rm "$lockfile"
+    fi
+
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool link mode
+  link | relink)
+    modename="$modename: link"
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+      # It is impossible to link a dll without this setting, and
+      # we shouldn't force the makefile maintainer to figure out
+      # which system we are compiling for in order to pass an extra
+      # flag for every libtool invocation.
+      # allow_undefined=no
+
+      # FIXME: Unfortunately, there are problems with the above when trying
+      # to make a dll which has undefined symbols, in which case not
+      # even a static library is built.  For now, we need to specify
+      # -no-undefined on the libtool link line when we can be certain
+      # that all symbols are satisfied, otherwise we get a static library.
+      allow_undefined=yes
+      ;;
+    *)
+      allow_undefined=yes
+      ;;
+    esac
+    libtool_args="$nonopt"
+    base_compile="$nonopt $@"
+    compile_command="$nonopt"
+    finalize_command="$nonopt"
+
+    compile_rpath=
+    finalize_rpath=
+    compile_shlibpath=
+    finalize_shlibpath=
+    convenience=
+    old_convenience=
+    deplibs=
+    old_deplibs=
+    compiler_flags=
+    linker_flags=
+    dllsearchpath=
+    lib_search_path=`pwd`
+    inst_prefix_dir=
+
+    avoid_version=no
+    dlfiles=
+    dlprefiles=
+    dlself=no
+    export_dynamic=no
+    export_symbols=
+    export_symbols_regex=
+    generated=
+    libobjs=
+    ltlibs=
+    module=no
+    no_install=no
+    objs=
+    non_pic_objects=
+    precious_files_regex=
+    prefer_static_libs=no
+    preload=no
+    prev=
+    prevarg=
+    release=
+    rpath=
+    xrpath=
+    perm_rpath=
+    temp_rpath=
+    thread_safe=no
+    vinfo=
+    vinfo_number=no
+
+    func_infer_tag $base_compile
+
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case $arg in
+      -all-static | -static)
+       if test "X$arg" = "X-all-static"; then
+         if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+           $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+         fi
+         if test -n "$link_static_flag"; then
+           dlopen_self=$dlopen_self_static
+         fi
+       else
+         if test -z "$pic_flag" && test -n "$link_static_flag"; then
+           dlopen_self=$dlopen_self_static
+         fi
+       fi
+       build_libtool_libs=no
+       build_old_libs=yes
+       prefer_static_libs=yes
+       break
+       ;;
+      esac
+    done
+
+    # See if our shared archives depend on static archives.
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+    # Go through the arguments, transforming them on the way.
+    while test "$#" -gt 0; do
+      arg="$1"
+      shift
+      case $arg in
+      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+       qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+       ;;
+      *) qarg=$arg ;;
+      esac
+      libtool_args="$libtool_args $qarg"
+
+      # If the previous option needs an argument, assign it.
+      if test -n "$prev"; then
+       case $prev in
+       output)
+         compile_command="$compile_command @OUTPUT@"
+         finalize_command="$finalize_command @OUTPUT@"
+         ;;
+       esac
+
+       case $prev in
+       dlfiles|dlprefiles)
+         if test "$preload" = no; then
+           # Add the symbol object into the linking commands.
+           compile_command="$compile_command @SYMFILE@"
+           finalize_command="$finalize_command @SYMFILE@"
+           preload=yes
+         fi
+         case $arg in
+         *.la | *.lo) ;;  # We handle these cases below.
+         force)
+           if test "$dlself" = no; then
+             dlself=needless
+             export_dynamic=yes
+           fi
+           prev=
+           continue
+           ;;
+         self)
+           if test "$prev" = dlprefiles; then
+             dlself=yes
+           elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+             dlself=yes
+           else
+             dlself=needless
+             export_dynamic=yes
+           fi
+           prev=
+           continue
+           ;;
+         *)
+           if test "$prev" = dlfiles; then
+             dlfiles="$dlfiles $arg"
+           else
+             dlprefiles="$dlprefiles $arg"
+           fi
+           prev=
+           continue
+           ;;
+         esac
+         ;;
+       expsyms)
+         export_symbols="$arg"
+         if test ! -f "$arg"; then
+           $echo "$modename: symbol file \`$arg' does not exist"
+           exit $EXIT_FAILURE
+         fi
+         prev=
+         continue
+         ;;
+       expsyms_regex)
+         export_symbols_regex="$arg"
+         prev=
+         continue
+         ;;
+       inst_prefix)
+         inst_prefix_dir="$arg"
+         prev=
+         continue
+         ;;
+       precious_regex)
+         precious_files_regex="$arg"
+         prev=
+         continue
+         ;;
+       release)
+         release="-$arg"
+         prev=
+         continue
+         ;;
+       objectlist)
+         if test -f "$arg"; then
+           save_arg=$arg
+           moreargs=
+           for fil in `cat $save_arg`
+           do
+#            moreargs="$moreargs $fil"
+             arg=$fil
+             # A libtool-controlled object.
+
+             # Check to see that this really is a libtool object.
+             if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+               pic_object=
+               non_pic_object=
+
+               # Read the .lo file
+               # If there is no directory component, then add one.
+               case $arg in
+               */* | *\\*) . $arg ;;
+               *) . ./$arg ;;
+               esac
+
+               if test -z "$pic_object" || \
+                  test -z "$non_pic_object" ||
+                  test "$pic_object" = none && \
+                  test "$non_pic_object" = none; then
+                 $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+                 exit $EXIT_FAILURE
+               fi
+
+               # Extract subdirectory from the argument.
+               xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+               if test "X$xdir" = "X$arg"; then
+                 xdir=
+               else
+                 xdir="$xdir/"
+               fi
+
+               if test "$pic_object" != none; then
+                 # Prepend the subdirectory the object is found in.
+                 pic_object="$xdir$pic_object"
+
+                 if test "$prev" = dlfiles; then
+                   if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+                     dlfiles="$dlfiles $pic_object"
+                     prev=
+                     continue
+                   else
+                     # If libtool objects are unsupported, then we need to preload.
+                     prev=dlprefiles
+                   fi
+                 fi
+
+                 # CHECK ME:  I think I busted this.  -Ossama
+                 if test "$prev" = dlprefiles; then
+                   # Preload the old-style object.
+                   dlprefiles="$dlprefiles $pic_object"
+                   prev=
+                 fi
+
+                 # A PIC object.
+                 libobjs="$libobjs $pic_object"
+                 arg="$pic_object"
+               fi
+
+               # Non-PIC object.
+               if test "$non_pic_object" != none; then
+                 # Prepend the subdirectory the object is found in.
+                 non_pic_object="$xdir$non_pic_object"
+
+                 # A standard non-PIC object
+                 non_pic_objects="$non_pic_objects $non_pic_object"
+                 if test -z "$pic_object" || test "$pic_object" = none ; then
+                   arg="$non_pic_object"
+                 fi
+               fi
+             else
+               # Only an error if not doing a dry-run.
+               if test -z "$run"; then
+                 $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+                 exit $EXIT_FAILURE
+               else
+                 # Dry-run case.
+
+                 # Extract subdirectory from the argument.
+                 xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+                 if test "X$xdir" = "X$arg"; then
+                   xdir=
+                 else
+                   xdir="$xdir/"
+                 fi
+
+                 pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+                 non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+                 libobjs="$libobjs $pic_object"
+                 non_pic_objects="$non_pic_objects $non_pic_object"
+               fi
+             fi
+           done
+         else
+           $echo "$modename: link input file \`$save_arg' does not exist"
+           exit $EXIT_FAILURE
+         fi
+         arg=$save_arg
+         prev=
+         continue
+         ;;
+       rpath | xrpath)
+         # We need an absolute path.
+         case $arg in
+         [\\/]* | [A-Za-z]:[\\/]*) ;;
+         *)
+           $echo "$modename: only absolute run-paths are allowed" 1>&2
+           exit $EXIT_FAILURE
+           ;;
+         esac
+         if test "$prev" = rpath; then
+           case "$rpath " in
+           *" $arg "*) ;;
+           *) rpath="$rpath $arg" ;;
+           esac
+         else
+           case "$xrpath " in
+           *" $arg "*) ;;
+           *) xrpath="$xrpath $arg" ;;
+           esac
+         fi
+         prev=
+         continue
+         ;;
+       xcompiler)
+         compiler_flags="$compiler_flags $qarg"
+         prev=
+         compile_command="$compile_command $qarg"
+         finalize_command="$finalize_command $qarg"
+         continue
+         ;;
+       xlinker)
+         linker_flags="$linker_flags $qarg"
+         compiler_flags="$compiler_flags $wl$qarg"
+         prev=
+         compile_command="$compile_command $wl$qarg"
+         finalize_command="$finalize_command $wl$qarg"
+         continue
+         ;;
+       xcclinker)
+         linker_flags="$linker_flags $qarg"
+         compiler_flags="$compiler_flags $qarg"
+         prev=
+         compile_command="$compile_command $qarg"
+         finalize_command="$finalize_command $qarg"
+         continue
+         ;;
+       shrext)
+         shrext_cmds="$arg"
+         prev=
+         continue
+         ;;
+        darwin_framework)
+         compiler_flags="$compiler_flags $arg"
+         prev=
+         continue
+         ;;
+       *)
+         eval "$prev=\"\$arg\""
+         prev=
+         continue
+         ;;
+       esac
+      fi # test -n "$prev"
+
+      prevarg="$arg"
+
+      case $arg in
+      -all-static)
+       if test -n "$link_static_flag"; then
+         compile_command="$compile_command $link_static_flag"
+         finalize_command="$finalize_command $link_static_flag"
+       fi
+       continue
+       ;;
+
+      -allow-undefined)
+       # FIXME: remove this flag sometime in the future.
+       $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
+       continue
+       ;;
+
+      -avoid-version)
+       avoid_version=yes
+       continue
+       ;;
+
+      -dlopen)
+       prev=dlfiles
+       continue
+       ;;
+
+      -dlpreopen)
+       prev=dlprefiles
+       continue
+       ;;
+
+      -export-dynamic)
+       export_dynamic=yes
+       continue
+       ;;
+
+      -export-symbols | -export-symbols-regex)
+       if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+         $echo "$modename: more than one -exported-symbols argument is not allowed"
+         exit $EXIT_FAILURE
+       fi
+       if test "X$arg" = "X-export-symbols"; then
+         prev=expsyms
+       else
+         prev=expsyms_regex
+       fi
+       continue
+       ;;
+
+      -framework)
+        prev=darwin_framework
+        compiler_flags="$compiler_flags $arg"
+        continue
+        ;;
+
+      -inst-prefix-dir)
+       prev=inst_prefix
+       continue
+       ;;
+
+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+      # so, if we see these flags be careful not to treat them like -L
+      -L[A-Z][A-Z]*:*)
+       case $with_gcc/$host in
+       no/*-*-irix* | /*-*-irix*)
+         compile_command="$compile_command $arg"
+         finalize_command="$finalize_command $arg"
+         ;;
+       esac
+       continue
+       ;;
+
+      -L*)
+       dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
+       # We need an absolute path.
+       case $dir in
+       [\\/]* | [A-Za-z]:[\\/]*) ;;
+       *)
+         absdir=`cd "$dir" && pwd`
+         if test -z "$absdir"; then
+           $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+           exit $EXIT_FAILURE
+         fi
+         dir="$absdir"
+         ;;
+       esac
+       case "$deplibs " in
+       *" -L$dir "*) ;;
+       *)
+         deplibs="$deplibs -L$dir"
+         lib_search_path="$lib_search_path $dir"
+         ;;
+       esac
+       case $host in
+       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+         case :$dllsearchpath: in
+         *":$dir:"*) ;;
+         *) dllsearchpath="$dllsearchpath:$dir";;
+         esac
+         ;;
+       esac
+       continue
+       ;;
+
+      -l*)
+       if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+         case $host in
+         *-*-cygwin* | *-*-pw32* | *-*-beos*)
+           # These systems don't actually have a C or math library (as such)
+           continue
+           ;;
+         *-*-mingw* | *-*-os2*)
+           # These systems don't actually have a C library (as such)
+           test "X$arg" = "X-lc" && continue
+           ;;
+         *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+           # Do not include libc due to us having libc/libc_r.
+           test "X$arg" = "X-lc" && continue
+           ;;
+         *-*-rhapsody* | *-*-darwin1.[012])
+           # Rhapsody C and math libraries are in the System framework
+           deplibs="$deplibs -framework System"
+           continue
+         esac
+       elif test "X$arg" = "X-lc_r"; then
+        case $host in
+        *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+          # Do not include libc_r directly, use -pthread flag.
+          continue
+          ;;
+        esac
+       fi
+       deplibs="$deplibs $arg"
+       continue
+       ;;
+
+      # Tru64 UNIX uses -model [arg] to determine the layout of C++
+      # classes, name mangling, and exception handling.
+      -model)
+       compile_command="$compile_command $arg"
+       compiler_flags="$compiler_flags $arg"
+       finalize_command="$finalize_command $arg"
+       prev=xcompiler
+       continue
+       ;;
+
+     -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+       compiler_flags="$compiler_flags $arg"
+       compile_command="$compile_command $arg"
+       finalize_command="$finalize_command $arg"
+       continue
+       ;;
+
+      -module)
+       module=yes
+       continue
+       ;;
+
+      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
+      # -r[0-9][0-9]* specifies the processor on the SGI compiler
+      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
+      # +DA*, +DD* enable 64-bit mode on the HP compiler
+      # -q* pass through compiler args for the IBM compiler
+      # -m* pass through architecture-specific compiler args for GCC
+      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*)
+
+       # Unknown arguments in both finalize_command and compile_command need
+       # to be aesthetically quoted because they are evaled later.
+       arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+       case $arg in
+       *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+         arg="\"$arg\""
+         ;;
+       esac
+        compile_command="$compile_command $arg"
+        finalize_command="$finalize_command $arg"
+        if test "$with_gcc" = "yes" ; then
+          compiler_flags="$compiler_flags $arg"
+        fi
+        continue
+        ;;
+
+      -shrext)
+       prev=shrext
+       continue
+       ;;
+
+      -no-fast-install)
+       fast_install=no
+       continue
+       ;;
+
+      -no-install)
+       case $host in
+       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+         # The PATH hackery in wrapper scripts is required on Windows
+         # in order for the loader to find any dlls it needs.
+         $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+         $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+         fast_install=no
+         ;;
+       *) no_install=yes ;;
+       esac
+       continue
+       ;;
+
+      -no-undefined)
+       allow_undefined=no
+       continue
+       ;;
+
+      -objectlist)
+       prev=objectlist
+       continue
+       ;;
+
+      -o) prev=output ;;
+
+      -precious-files-regex)
+       prev=precious_regex
+       continue
+       ;;
+
+      -release)
+       prev=release
+       continue
+       ;;
+
+      -rpath)
+       prev=rpath
+       continue
+       ;;
+
+      -R)
+       prev=xrpath
+       continue
+       ;;
+
+      -R*)
+       dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
+       # We need an absolute path.
+       case $dir in
+       [\\/]* | [A-Za-z]:[\\/]*) ;;
+       *)
+         $echo "$modename: only absolute run-paths are allowed" 1>&2
+         exit $EXIT_FAILURE
+         ;;
+       esac
+       case "$xrpath " in
+       *" $dir "*) ;;
+       *) xrpath="$xrpath $dir" ;;
+       esac
+       continue
+       ;;
+
+      -static)
+       # The effects of -static are defined in a previous loop.
+       # We used to do the same as -all-static on platforms that
+       # didn't have a PIC flag, but the assumption that the effects
+       # would be equivalent was wrong.  It would break on at least
+       # Digital Unix and AIX.
+       continue
+       ;;
+
+      -thread-safe)
+       thread_safe=yes
+       continue
+       ;;
+
+      -version-info)
+       prev=vinfo
+       continue
+       ;;
+      -version-number)
+       prev=vinfo
+       vinfo_number=yes
+       continue
+       ;;
+
+      -Wc,*)
+       args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+       arg=
+       save_ifs="$IFS"; IFS=','
+       for flag in $args; do
+         IFS="$save_ifs"
+         case $flag in
+           *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+           flag="\"$flag\""
+           ;;
+         esac
+         arg="$arg $wl$flag"
+         compiler_flags="$compiler_flags $flag"
+       done
+       IFS="$save_ifs"
+       arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+       ;;
+
+      -Wl,*)
+       args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+       arg=
+       save_ifs="$IFS"; IFS=','
+       for flag in $args; do
+         IFS="$save_ifs"
+         case $flag in
+           *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+           flag="\"$flag\""
+           ;;
+         esac
+         arg="$arg $wl$flag"
+         compiler_flags="$compiler_flags $wl$flag"
+         linker_flags="$linker_flags $flag"
+       done
+       IFS="$save_ifs"
+       arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+       ;;
+
+      -Xcompiler)
+       prev=xcompiler
+       continue
+       ;;
+
+      -Xlinker)
+       prev=xlinker
+       continue
+       ;;
+
+      -XCClinker)
+       prev=xcclinker
+       continue
+       ;;
+
+      # Some other compiler flag.
+      -* | +*)
+       # Unknown arguments in both finalize_command and compile_command need
+       # to be aesthetically quoted because they are evaled later.
+       arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+       case $arg in
+       *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+         arg="\"$arg\""
+         ;;
+       esac
+       ;;
+
+      *.$objext)
+       # A standard object.
+       objs="$objs $arg"
+       ;;
+
+      *.lo)
+       # A libtool-controlled object.
+
+       # Check to see that this really is a libtool object.
+       if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+         pic_object=
+         non_pic_object=
+
+         # Read the .lo file
+         # If there is no directory component, then add one.
+         case $arg in
+         */* | *\\*) . $arg ;;
+         *) . ./$arg ;;
+         esac
+
+         if test -z "$pic_object" || \
+            test -z "$non_pic_object" ||
+            test "$pic_object" = none && \
+            test "$non_pic_object" = none; then
+           $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+           exit $EXIT_FAILURE
+         fi
+
+         # Extract subdirectory from the argument.
+         xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+         if test "X$xdir" = "X$arg"; then
+           xdir=
+         else
+           xdir="$xdir/"
+         fi
+
+         if test "$pic_object" != none; then
+           # Prepend the subdirectory the object is found in.
+           pic_object="$xdir$pic_object"
+
+           if test "$prev" = dlfiles; then
+             if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+               dlfiles="$dlfiles $pic_object"
+               prev=
+               continue
+             else
+               # If libtool objects are unsupported, then we need to preload.
+               prev=dlprefiles
+             fi
+           fi
+
+           # CHECK ME:  I think I busted this.  -Ossama
+           if test "$prev" = dlprefiles; then
+             # Preload the old-style object.
+             dlprefiles="$dlprefiles $pic_object"
+             prev=
+           fi
+
+           # A PIC object.
+           libobjs="$libobjs $pic_object"
+           arg="$pic_object"
+         fi
+
+         # Non-PIC object.
+         if test "$non_pic_object" != none; then
+           # Prepend the subdirectory the object is found in.
+           non_pic_object="$xdir$non_pic_object"
+
+           # A standard non-PIC object
+           non_pic_objects="$non_pic_objects $non_pic_object"
+           if test -z "$pic_object" || test "$pic_object" = none ; then
+             arg="$non_pic_object"
+           fi
+         fi
+       else
+         # Only an error if not doing a dry-run.
+         if test -z "$run"; then
+           $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+           exit $EXIT_FAILURE
+         else
+           # Dry-run case.
+
+           # Extract subdirectory from the argument.
+           xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+           if test "X$xdir" = "X$arg"; then
+             xdir=
+           else
+             xdir="$xdir/"
+           fi
+
+           pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+           non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+           libobjs="$libobjs $pic_object"
+           non_pic_objects="$non_pic_objects $non_pic_object"
+         fi
+       fi
+       ;;
+
+      *.$libext)
+       # An archive.
+       deplibs="$deplibs $arg"
+       old_deplibs="$old_deplibs $arg"
+       continue
+       ;;
+
+      *.la)
+       # A libtool-controlled library.
+
+       if test "$prev" = dlfiles; then
+         # This library was specified with -dlopen.
+         dlfiles="$dlfiles $arg"
+         prev=
+       elif test "$prev" = dlprefiles; then
+         # The library was specified with -dlpreopen.
+         dlprefiles="$dlprefiles $arg"
+         prev=
+       else
+         deplibs="$deplibs $arg"
+       fi
+       continue
+       ;;
+
+      # Some other compiler argument.
+      *)
+       # Unknown arguments in both finalize_command and compile_command need
+       # to be aesthetically quoted because they are evaled later.
+       arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+       case $arg in
+       *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+         arg="\"$arg\""
+         ;;
+       esac
+       ;;
+      esac # arg
+
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+       compile_command="$compile_command $arg"
+       finalize_command="$finalize_command $arg"
+      fi
+    done # argument parsing loop
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+      eval arg=\"$export_dynamic_flag_spec\"
+      compile_command="$compile_command $arg"
+      finalize_command="$finalize_command $arg"
+    fi
+
+    oldlibs=
+    # calculate the name of the file, without its directory
+    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+    libobjs_save="$libobjs"
+
+    if test -n "$shlibpath_var"; then
+      # get the directories listed in $shlibpath_var
+      eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+    else
+      shlib_search_path=
+    fi
+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+    output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$output_objdir" = "X$output"; then
+      output_objdir="$objdir"
+    else
+      output_objdir="$output_objdir/$objdir"
+    fi
+    # Create the object directory.
+    if test ! -d "$output_objdir"; then
+      $show "$mkdir $output_objdir"
+      $run $mkdir $output_objdir
+      status=$?
+      if test "$status" -ne 0 && test ! -d "$output_objdir"; then
+       exit $status
+      fi
+    fi
+
+    # Determine the type of output
+    case $output in
+    "")
+      $echo "$modename: you must specify an output file" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
+
+    case $host in
+    *cygwin* | *mingw* | *pw32*)
+      # don't eliminate duplications in $postdeps and $predeps
+      duplicate_compiler_generated_deps=yes
+      ;;
+    *)
+      duplicate_compiler_generated_deps=$duplicate_deps
+      ;;
+    esac
+    specialdeplibs=
+
+    libs=
+    # Find all interdependent deplibs by searching for libraries
+    # that are linked more than once (e.g. -la -lb -la)
+    for deplib in $deplibs; do
+      if test "X$duplicate_deps" = "Xyes" ; then
+       case "$libs " in
+       *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+       esac
+      fi
+      libs="$libs $deplib"
+    done
+
+    if test "$linkmode" = lib; then
+      libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+      # Compute libraries that are listed more than once in $predeps
+      # $postdeps and mark them as special (i.e., whose duplicates are
+      # not to be eliminated).
+      pre_post_deps=
+      if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
+       for pre_post_dep in $predeps $postdeps; do
+         case "$pre_post_deps " in
+         *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+         esac
+         pre_post_deps="$pre_post_deps $pre_post_dep"
+       done
+      fi
+      pre_post_deps=
+    fi
+
+    deplibs=
+    newdependency_libs=
+    newlib_search_path=
+    need_relink=no # whether we're linking any uninstalled libtool libraries
+    notinst_deplibs= # not-installed libtool libraries
+    notinst_path= # paths that contain not-installed libtool libraries
+    case $linkmode in
+    lib)
+       passes="conv link"
+       for file in $dlfiles $dlprefiles; do
+         case $file in
+         *.la) ;;
+         *)
+           $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+           exit $EXIT_FAILURE
+           ;;
+         esac
+       done
+       ;;
+    prog)
+       compile_deplibs=
+       finalize_deplibs=
+       alldeplibs=no
+       newdlfiles=
+       newdlprefiles=
+       passes="conv scan dlopen dlpreopen link"
+       ;;
+    *)  passes="conv"
+       ;;
+    esac
+    for pass in $passes; do
+      if test "$linkmode,$pass" = "lib,link" ||
+        test "$linkmode,$pass" = "prog,scan"; then
+       libs="$deplibs"
+       deplibs=
+      fi
+      if test "$linkmode" = prog; then
+       case $pass in
+       dlopen) libs="$dlfiles" ;;
+       dlpreopen) libs="$dlprefiles" ;;
+       link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+       esac
+      fi
+      if test "$pass" = dlopen; then
+       # Collect dlpreopened libraries
+       save_deplibs="$deplibs"
+       deplibs=
+      fi
+      for deplib in $libs; do
+       lib=
+       found=no
+       case $deplib in
+       -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+         if test "$linkmode,$pass" = "prog,link"; then
+           compile_deplibs="$deplib $compile_deplibs"
+           finalize_deplibs="$deplib $finalize_deplibs"
+         else
+           compiler_flags="$compiler_flags $deplib"
+         fi
+         continue
+         ;;
+       -l*)
+         if test "$linkmode" != lib && test "$linkmode" != prog; then
+           $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
+           continue
+         fi
+         name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+         for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
+           for search_ext in .la $std_shrext .so .a; do
+             # Search the libtool library
+             lib="$searchdir/lib${name}${search_ext}"
+             if test -f "$lib"; then
+               if test "$search_ext" = ".la"; then
+                 found=yes
+               else
+                 found=no
+               fi
+               break 2
+             fi
+           done
+         done
+         if test "$found" != yes; then
+           # deplib doesn't seem to be a libtool library
+           if test "$linkmode,$pass" = "prog,link"; then
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           else
+             deplibs="$deplib $deplibs"
+             test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+           fi
+           continue
+         else # deplib is a libtool library
+           # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+           # We need to do some special things here, and not later.
+           if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+             case " $predeps $postdeps " in
+             *" $deplib "*)
+               if (${SED} -e '2q' $lib |
+                    grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+                 library_names=
+                 old_library=
+                 case $lib in
+                 */* | *\\*) . $lib ;;
+                 *) . ./$lib ;;
+                 esac
+                 for l in $old_library $library_names; do
+                   ll="$l"
+                 done
+                 if test "X$ll" = "X$old_library" ; then # only static version available
+                   found=no
+                   ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+                   test "X$ladir" = "X$lib" && ladir="."
+                   lib=$ladir/$old_library
+                   if test "$linkmode,$pass" = "prog,link"; then
+                     compile_deplibs="$deplib $compile_deplibs"
+                     finalize_deplibs="$deplib $finalize_deplibs"
+                   else
+                     deplibs="$deplib $deplibs"
+                     test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+                   fi
+                   continue
+                 fi
+               fi
+               ;;
+             *) ;;
+             esac
+           fi
+         fi
+         ;; # -l
+       -L*)
+         case $linkmode in
+         lib)
+           deplibs="$deplib $deplibs"
+           test "$pass" = conv && continue
+           newdependency_libs="$deplib $newdependency_libs"
+           newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+           ;;
+         prog)
+           if test "$pass" = conv; then
+             deplibs="$deplib $deplibs"
+             continue
+           fi
+           if test "$pass" = scan; then
+             deplibs="$deplib $deplibs"
+           else
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           fi
+           newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+           ;;
+         *)
+           $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
+           ;;
+         esac # linkmode
+         continue
+         ;; # -L
+       -R*)
+         if test "$pass" = link; then
+           dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+           # Make sure the xrpath contains only unique directories.
+           case "$xrpath " in
+           *" $dir "*) ;;
+           *) xrpath="$xrpath $dir" ;;
+           esac
+         fi
+         deplibs="$deplib $deplibs"
+         continue
+         ;;
+       *.la) lib="$deplib" ;;
+       *.$libext)
+         if test "$pass" = conv; then
+           deplibs="$deplib $deplibs"
+           continue
+         fi
+         case $linkmode in
+         lib)
+           valid_a_lib=no
+           case $deplibs_check_method in
+             match_pattern*)
+               set dummy $deplibs_check_method
+               match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+               if eval $echo \"$deplib\" 2>/dev/null \
+                   | $SED 10q \
+                   | $EGREP "$match_pattern_regex" > /dev/null; then
+                 valid_a_lib=yes
+               fi
+               ;;
+             pass_all)
+               valid_a_lib=yes
+               ;;
+            esac
+           if test "$valid_a_lib" != yes; then
+             $echo
+             $echo "*** Warning: Trying to link with static lib archive $deplib."
+             $echo "*** I have the capability to make that library automatically link in when"
+             $echo "*** you link to this library.  But I can only do this if you have a"
+             $echo "*** shared version of the library, which you do not appear to have"
+             $echo "*** because the file extensions .$libext of this argument makes me believe"
+             $echo "*** that it is just a static archive that I should not used here."
+           else
+             $echo
+             $echo "*** Warning: Linking the shared library $output against the"
+             $echo "*** static library $deplib is not portable!"
+             deplibs="$deplib $deplibs"
+           fi
+           continue
+           ;;
+         prog)
+           if test "$pass" != link; then
+             deplibs="$deplib $deplibs"
+           else
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           fi
+           continue
+           ;;
+         esac # linkmode
+         ;; # *.$libext
+       *.lo | *.$objext)
+         if test "$pass" = conv; then
+           deplibs="$deplib $deplibs"
+         elif test "$linkmode" = prog; then
+           if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+             # If there is no dlopen support or we're linking statically,
+             # we need to preload.
+             newdlprefiles="$newdlprefiles $deplib"
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           else
+             newdlfiles="$newdlfiles $deplib"
+           fi
+         fi
+         continue
+         ;;
+       %DEPLIBS%)
+         alldeplibs=yes
+         continue
+         ;;
+       esac # case $deplib
+       if test "$found" = yes || test -f "$lib"; then :
+       else
+         $echo "$modename: cannot find the library \`$lib'" 1>&2
+         exit $EXIT_FAILURE
+       fi
+
+       # Check to see that this really is a libtool archive.
+       if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+       else
+         $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+         exit $EXIT_FAILURE
+       fi
+
+       ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+       test "X$ladir" = "X$lib" && ladir="."
+
+       dlname=
+       dlopen=
+       dlpreopen=
+       libdir=
+       library_names=
+       old_library=
+       # If the library was installed with an old release of libtool,
+       # it will not redefine variables installed, or shouldnotlink
+       installed=yes
+       shouldnotlink=no
+       avoidtemprpath=
+
+
+       # Read the .la file
+       case $lib in
+       */* | *\\*) . $lib ;;
+       *) . ./$lib ;;
+       esac
+
+       if test "$linkmode,$pass" = "lib,link" ||
+          test "$linkmode,$pass" = "prog,scan" ||
+          { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+         test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+         test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+       fi
+
+       if test "$pass" = conv; then
+         # Only check for convenience libraries
+         deplibs="$lib $deplibs"
+         if test -z "$libdir"; then
+           if test -z "$old_library"; then
+             $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+             exit $EXIT_FAILURE
+           fi
+           # It is a libtool convenience library, so add in its objects.
+           convenience="$convenience $ladir/$objdir/$old_library"
+           old_convenience="$old_convenience $ladir/$objdir/$old_library"
+           tmp_libs=
+           for deplib in $dependency_libs; do
+             deplibs="$deplib $deplibs"
+              if test "X$duplicate_deps" = "Xyes" ; then
+               case "$tmp_libs " in
+               *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+               esac
+              fi
+             tmp_libs="$tmp_libs $deplib"
+           done
+         elif test "$linkmode" != prog && test "$linkmode" != lib; then
+           $echo "$modename: \`$lib' is not a convenience library" 1>&2
+           exit $EXIT_FAILURE
+         fi
+         continue
+       fi # $pass = conv
+
+
+       # Get the name of the library we link against.
+       linklib=
+       for l in $old_library $library_names; do
+         linklib="$l"
+       done
+       if test -z "$linklib"; then
+         $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+         exit $EXIT_FAILURE
+       fi
+
+       # This library was specified with -dlopen.
+       if test "$pass" = dlopen; then
+         if test -z "$libdir"; then
+           $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+           exit $EXIT_FAILURE
+         fi
+         if test -z "$dlname" ||
+            test "$dlopen_support" != yes ||
+            test "$build_libtool_libs" = no; then
+           # If there is no dlname, no dlopen support or we're linking
+           # statically, we need to preload.  We also need to preload any
+           # dependent libraries so libltdl's deplib preloader doesn't
+           # bomb out in the load deplibs phase.
+           dlprefiles="$dlprefiles $lib $dependency_libs"
+         else
+           newdlfiles="$newdlfiles $lib"
+         fi
+         continue
+       fi # $pass = dlopen
+
+       # We need an absolute path.
+       case $ladir in
+       [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+       *)
+         abs_ladir=`cd "$ladir" && pwd`
+         if test -z "$abs_ladir"; then
+           $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+           $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+           abs_ladir="$ladir"
+         fi
+         ;;
+       esac
+       laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+
+       # Find the relevant object directory and library name.
+       if test "X$installed" = Xyes; then
+         if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+           $echo "$modename: warning: library \`$lib' was moved." 1>&2
+           dir="$ladir"
+           absdir="$abs_ladir"
+           libdir="$abs_ladir"
+         else
+           dir="$libdir"
+           absdir="$libdir"
+         fi
+         test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+       else
+         if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+           dir="$ladir"
+           absdir="$abs_ladir"
+           # Remove this search path later
+           notinst_path="$notinst_path $abs_ladir"
+         else
+           dir="$ladir/$objdir"
+           absdir="$abs_ladir/$objdir"
+           # Remove this search path later
+           notinst_path="$notinst_path $abs_ladir"
+         fi
+       fi # $installed = yes
+       name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+       # This library was specified with -dlpreopen.
+       if test "$pass" = dlpreopen; then
+         if test -z "$libdir"; then
+           $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+           exit $EXIT_FAILURE
+         fi
+         # Prefer using a static library (so that no silly _DYNAMIC symbols
+         # are required to link).
+         if test -n "$old_library"; then
+           newdlprefiles="$newdlprefiles $dir/$old_library"
+         # Otherwise, use the dlname, so that lt_dlopen finds it.
+         elif test -n "$dlname"; then
+           newdlprefiles="$newdlprefiles $dir/$dlname"
+         else
+           newdlprefiles="$newdlprefiles $dir/$linklib"
+         fi
+       fi # $pass = dlpreopen
+
+       if test -z "$libdir"; then
+         # Link the convenience library
+         if test "$linkmode" = lib; then
+           deplibs="$dir/$old_library $deplibs"
+         elif test "$linkmode,$pass" = "prog,link"; then
+           compile_deplibs="$dir/$old_library $compile_deplibs"
+           finalize_deplibs="$dir/$old_library $finalize_deplibs"
+         else
+           deplibs="$lib $deplibs" # used for prog,scan pass
+         fi
+         continue
+       fi
+
+
+       if test "$linkmode" = prog && test "$pass" != link; then
+         newlib_search_path="$newlib_search_path $ladir"
+         deplibs="$lib $deplibs"
+
+         linkalldeplibs=no
+         if test "$link_all_deplibs" != no || test -z "$library_names" ||
+            test "$build_libtool_libs" = no; then
+           linkalldeplibs=yes
+         fi
+
+         tmp_libs=
+         for deplib in $dependency_libs; do
+           case $deplib in
+           -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+           esac
+           # Need to link against all dependency_libs?
+           if test "$linkalldeplibs" = yes; then
+             deplibs="$deplib $deplibs"
+           else
+             # Need to hardcode shared library paths
+             # or/and link against static libraries
+             newdependency_libs="$deplib $newdependency_libs"
+           fi
+           if test "X$duplicate_deps" = "Xyes" ; then
+             case "$tmp_libs " in
+             *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+             esac
+           fi
+           tmp_libs="$tmp_libs $deplib"
+         done # for deplib
+         continue
+       fi # $linkmode = prog...
+
+       if test "$linkmode,$pass" = "prog,link"; then
+         if test -n "$library_names" &&
+            { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+           # We need to hardcode the library path
+           if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+             # Make sure the rpath contains only unique directories.
+             case "$temp_rpath " in
+             *" $dir "*) ;;
+             *" $absdir "*) ;;
+             *) temp_rpath="$temp_rpath $dir" ;;
+             esac
+           fi
+
+           # Hardcode the library path.
+           # Skip directories that are in the system default run-time
+           # search path.
+           case " $sys_lib_dlsearch_path " in
+           *" $absdir "*) ;;
+           *)
+             case "$compile_rpath " in
+             *" $absdir "*) ;;
+             *) compile_rpath="$compile_rpath $absdir"
+             esac
+             ;;
+           esac
+           case " $sys_lib_dlsearch_path " in
+           *" $libdir "*) ;;
+           *)
+             case "$finalize_rpath " in
+             *" $libdir "*) ;;
+             *) finalize_rpath="$finalize_rpath $libdir"
+             esac
+             ;;
+           esac
+         fi # $linkmode,$pass = prog,link...
+
+         if test "$alldeplibs" = yes &&
+            { test "$deplibs_check_method" = pass_all ||
+              { test "$build_libtool_libs" = yes &&
+                test -n "$library_names"; }; }; then
+           # We only need to search for static libraries
+           continue
+         fi
+       fi
+
+       link_static=no # Whether the deplib will be linked statically
+       if test -n "$library_names" &&
+          { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+         if test "$installed" = no; then
+           notinst_deplibs="$notinst_deplibs $lib"
+           need_relink=yes
+         fi
+         # This is a shared library
+
+         # Warn about portability, can't link against -module's on
+         # some systems (darwin)
+         if test "$shouldnotlink" = yes && test "$pass" = link ; then
+           $echo
+           if test "$linkmode" = prog; then
+             $echo "*** Warning: Linking the executable $output against the loadable module"
+           else
+             $echo "*** Warning: Linking the shared library $output against the loadable module"
+           fi
+           $echo "*** $linklib is not portable!"
+         fi
+         if test "$linkmode" = lib &&
+            test "$hardcode_into_libs" = yes; then
+           # Hardcode the library path.
+           # Skip directories that are in the system default run-time
+           # search path.
+           case " $sys_lib_dlsearch_path " in
+           *" $absdir "*) ;;
+           *)
+             case "$compile_rpath " in
+             *" $absdir "*) ;;
+             *) compile_rpath="$compile_rpath $absdir"
+             esac
+             ;;
+           esac
+           case " $sys_lib_dlsearch_path " in
+           *" $libdir "*) ;;
+           *)
+             case "$finalize_rpath " in
+             *" $libdir "*) ;;
+             *) finalize_rpath="$finalize_rpath $libdir"
+             esac
+             ;;
+           esac
+         fi
+
+         if test -n "$old_archive_from_expsyms_cmds"; then
+           # figure out the soname
+           set dummy $library_names
+           realname="$2"
+           shift; shift
+           libname=`eval \\$echo \"$libname_spec\"`
+           # use dlname if we got it. it's perfectly good, no?
+           if test -n "$dlname"; then
+             soname="$dlname"
+           elif test -n "$soname_spec"; then
+             # bleh windows
+             case $host in
+             *cygwin* | mingw*)
+               major=`expr $current - $age`
+               versuffix="-$major"
+               ;;
+             esac
+             eval soname=\"$soname_spec\"
+           else
+             soname="$realname"
+           fi
+
+           # Make a new name for the extract_expsyms_cmds to use
+           soroot="$soname"
+           soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
+           newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
+
+           # If the library has no export list, then create one now
+           if test -f "$output_objdir/$soname-def"; then :
+           else
+             $show "extracting exported symbol list from \`$soname'"
+             save_ifs="$IFS"; IFS='~'
+             cmds=$extract_expsyms_cmds
+             for cmd in $cmds; do
+               IFS="$save_ifs"
+               eval cmd=\"$cmd\"
+               $show "$cmd"
+               $run eval "$cmd" || exit $?
+             done
+             IFS="$save_ifs"
+           fi
+
+           # Create $newlib
+           if test -f "$output_objdir/$newlib"; then :; else
+             $show "generating import library for \`$soname'"
+             save_ifs="$IFS"; IFS='~'
+             cmds=$old_archive_from_expsyms_cmds
+             for cmd in $cmds; do
+               IFS="$save_ifs"
+               eval cmd=\"$cmd\"
+               $show "$cmd"
+               $run eval "$cmd" || exit $?
+             done
+             IFS="$save_ifs"
+           fi
+           # make sure the library variables are pointing to the new library
+           dir=$output_objdir
+           linklib=$newlib
+         fi # test -n "$old_archive_from_expsyms_cmds"
+
+         if test "$linkmode" = prog || test "$mode" != relink; then
+           add_shlibpath=
+           add_dir=
+           add=
+           lib_linked=yes
+           case $hardcode_action in
+           immediate | unsupported)
+             if test "$hardcode_direct" = no; then
+               add="$dir/$linklib"
+               case $host in
+                 *-*-sco3.2v5* ) add_dir="-L$dir" ;;
+                 *-*-darwin* )
+                   # if the lib is a module then we can not link against
+                   # it, someone is ignoring the new warnings I added
+                   if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then
+                     $echo "** Warning, lib $linklib is a module, not a shared library"
+                     if test -z "$old_library" ; then
+                       $echo
+                       $echo "** And there doesn't seem to be a static archive available"
+                       $echo "** The link will probably fail, sorry"
+                     else
+                       add="$dir/$old_library"
+                     fi
+                   fi
+               esac
+             elif test "$hardcode_minus_L" = no; then
+               case $host in
+               *-*-sunos*) add_shlibpath="$dir" ;;
+               esac
+               add_dir="-L$dir"
+               add="-l$name"
+             elif test "$hardcode_shlibpath_var" = no; then
+               add_shlibpath="$dir"
+               add="-l$name"
+             else
+               lib_linked=no
+             fi
+             ;;
+           relink)
+             if test "$hardcode_direct" = yes; then
+               add="$dir/$linklib"
+             elif test "$hardcode_minus_L" = yes; then
+               add_dir="-L$dir"
+               # Try looking first in the location we're being installed to.
+               if test -n "$inst_prefix_dir"; then
+                 case "$libdir" in
+                   [\\/]*)
+                     add_dir="$add_dir -L$inst_prefix_dir$libdir"
+                     ;;
+                 esac
+               fi
+               add="-l$name"
+             elif test "$hardcode_shlibpath_var" = yes; then
+               add_shlibpath="$dir"
+               add="-l$name"
+             else
+               lib_linked=no
+             fi
+             ;;
+           *) lib_linked=no ;;
+           esac
+
+           if test "$lib_linked" != yes; then
+             $echo "$modename: configuration error: unsupported hardcode properties"
+             exit $EXIT_FAILURE
+           fi
+
+           if test -n "$add_shlibpath"; then
+             case :$compile_shlibpath: in
+             *":$add_shlibpath:"*) ;;
+             *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+             esac
+           fi
+           if test "$linkmode" = prog; then
+             test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+             test -n "$add" && compile_deplibs="$add $compile_deplibs"
+           else
+             test -n "$add_dir" && deplibs="$add_dir $deplibs"
+             test -n "$add" && deplibs="$add $deplibs"
+             if test "$hardcode_direct" != yes && \
+                test "$hardcode_minus_L" != yes && \
+                test "$hardcode_shlibpath_var" = yes; then
+               case :$finalize_shlibpath: in
+               *":$libdir:"*) ;;
+               *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+               esac
+             fi
+           fi
+         fi
+
+         if test "$linkmode" = prog || test "$mode" = relink; then
+           add_shlibpath=
+           add_dir=
+           add=
+           # Finalize command for both is simple: just hardcode it.
+           if test "$hardcode_direct" = yes; then
+             add="$libdir/$linklib"
+           elif test "$hardcode_minus_L" = yes; then
+             add_dir="-L$libdir"
+             add="-l$name"
+           elif test "$hardcode_shlibpath_var" = yes; then
+             case :$finalize_shlibpath: in
+             *":$libdir:"*) ;;
+             *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+             esac
+             add="-l$name"
+           elif test "$hardcode_automatic" = yes; then
+             if test -n "$inst_prefix_dir" &&
+                test -f "$inst_prefix_dir$libdir/$linklib" ; then
+               add="$inst_prefix_dir$libdir/$linklib"
+             else
+               add="$libdir/$linklib"
+             fi
+           else
+             # We cannot seem to hardcode it, guess we'll fake it.
+             add_dir="-L$libdir"
+             # Try looking first in the location we're being installed to.
+             if test -n "$inst_prefix_dir"; then
+               case "$libdir" in
+                 [\\/]*)
+                   add_dir="$add_dir -L$inst_prefix_dir$libdir"
+                   ;;
+               esac
+             fi
+             add="-l$name"
+           fi
+
+           if test "$linkmode" = prog; then
+             test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+             test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+           else
+             test -n "$add_dir" && deplibs="$add_dir $deplibs"
+             test -n "$add" && deplibs="$add $deplibs"
+           fi
+         fi
+       elif test "$linkmode" = prog; then
+         # Here we assume that one of hardcode_direct or hardcode_minus_L
+         # is not unsupported.  This is valid on all known static and
+         # shared platforms.
+         if test "$hardcode_direct" != unsupported; then
+           test -n "$old_library" && linklib="$old_library"
+           compile_deplibs="$dir/$linklib $compile_deplibs"
+           finalize_deplibs="$dir/$linklib $finalize_deplibs"
+         else
+           compile_deplibs="-l$name -L$dir $compile_deplibs"
+           finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+         fi
+       elif test "$build_libtool_libs" = yes; then
+         # Not a shared library
+         if test "$deplibs_check_method" != pass_all; then
+           # We're trying link a shared library against a static one
+           # but the system doesn't support it.
+
+           # Just print a warning and add the library to dependency_libs so
+           # that the program can be linked against the static library.
+           $echo
+           $echo "*** Warning: This system can not link to static lib archive $lib."
+           $echo "*** I have the capability to make that library automatically link in when"
+           $echo "*** you link to this library.  But I can only do this if you have a"
+           $echo "*** shared version of the library, which you do not appear to have."
+           if test "$module" = yes; then
+             $echo "*** But as you try to build a module library, libtool will still create "
+             $echo "*** a static module, that should work as long as the dlopening application"
+             $echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+             if test -z "$global_symbol_pipe"; then
+               $echo
+               $echo "*** However, this would only work if libtool was able to extract symbol"
+               $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+               $echo "*** not find such a program.  So, this module is probably useless."
+               $echo "*** \`nm' from GNU binutils and a full rebuild may help."
+             fi
+             if test "$build_old_libs" = no; then
+               build_libtool_libs=module
+               build_old_libs=yes
+             else
+               build_libtool_libs=no
+             fi
+           fi
+         else
+           convenience="$convenience $dir/$old_library"
+           old_convenience="$old_convenience $dir/$old_library"
+           deplibs="$dir/$old_library $deplibs"
+           link_static=yes
+         fi
+       fi # link shared/static library?
+
+       if test "$linkmode" = lib; then
+         if test -n "$dependency_libs" &&
+            { test "$hardcode_into_libs" != yes ||
+              test "$build_old_libs" = yes ||
+              test "$link_static" = yes; }; then
+           # Extract -R from dependency_libs
+           temp_deplibs=
+           for libdir in $dependency_libs; do
+             case $libdir in
+             -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+                  case " $xrpath " in
+                  *" $temp_xrpath "*) ;;
+                  *) xrpath="$xrpath $temp_xrpath";;
+                  esac;;
+             *) temp_deplibs="$temp_deplibs $libdir";;
+             esac
+           done
+           dependency_libs="$temp_deplibs"
+         fi
+
+         newlib_search_path="$newlib_search_path $absdir"
+         # Link against this library
+         test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+         # ... and its dependency_libs
+         tmp_libs=
+         for deplib in $dependency_libs; do
+           newdependency_libs="$deplib $newdependency_libs"
+           if test "X$duplicate_deps" = "Xyes" ; then
+             case "$tmp_libs " in
+             *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+             esac
+           fi
+           tmp_libs="$tmp_libs $deplib"
+         done
+
+         if test "$link_all_deplibs" != no; then
+           # Add the search paths of all dependency libraries
+           for deplib in $dependency_libs; do
+             case $deplib in
+             -L*) path="$deplib" ;;
+             *.la)
+               dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+               test "X$dir" = "X$deplib" && dir="."
+               # We need an absolute path.
+               case $dir in
+               [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+               *)
+                 absdir=`cd "$dir" && pwd`
+                 if test -z "$absdir"; then
+                   $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+                   absdir="$dir"
+                 fi
+                 ;;
+               esac
+               if grep "^installed=no" $deplib > /dev/null; then
+                 path="$absdir/$objdir"
+               else
+                 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+                 if test -z "$libdir"; then
+                   $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+                   exit $EXIT_FAILURE
+                 fi
+                 if test "$absdir" != "$libdir"; then
+                   $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+                 fi
+                 path="$absdir"
+               fi
+               depdepl=
+               case $host in
+               *-*-darwin*)
+                 # we do not want to link against static libs,
+                 # but need to link against shared
+                 eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+                 if test -n "$deplibrary_names" ; then
+                   for tmp in $deplibrary_names ; do
+                     depdepl=$tmp
+                   done
+                   if test -f "$path/$depdepl" ; then
+                     depdepl="$path/$depdepl"
+                   fi
+                   # do not add paths which are already there
+                   case " $newlib_search_path " in
+                   *" $path "*) ;;
+                   *) newlib_search_path="$newlib_search_path $path";;
+                   esac
+                 fi
+                 path=""
+                 ;;
+               *)
+                 path="-L$path"
+                 ;;
+               esac
+               ;;
+             -l*)
+               case $host in
+               *-*-darwin*)
+                 # Again, we only want to link against shared libraries
+                 eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
+                 for tmp in $newlib_search_path ; do
+                   if test -f "$tmp/lib$tmp_libs.dylib" ; then
+                     eval depdepl="$tmp/lib$tmp_libs.dylib"
+                     break
+                   fi
+                 done
+                 path=""
+                 ;;
+               *) continue ;;
+               esac
+               ;;
+             *) continue ;;
+             esac
+             case " $deplibs " in
+             *" $path "*) ;;
+             *) deplibs="$path $deplibs" ;;
+             esac
+             case " $deplibs " in
+             *" $depdepl "*) ;;
+             *) deplibs="$depdepl $deplibs" ;;
+             esac
+           done
+         fi # link_all_deplibs != no
+       fi # linkmode = lib
+      done # for deplib in $libs
+      dependency_libs="$newdependency_libs"
+      if test "$pass" = dlpreopen; then
+       # Link the dlpreopened libraries before other libraries
+       for deplib in $save_deplibs; do
+         deplibs="$deplib $deplibs"
+       done
+      fi
+      if test "$pass" != dlopen; then
+       if test "$pass" != conv; then
+         # Make sure lib_search_path contains only unique directories.
+         lib_search_path=
+         for dir in $newlib_search_path; do
+           case "$lib_search_path " in
+           *" $dir "*) ;;
+           *) lib_search_path="$lib_search_path $dir" ;;
+           esac
+         done
+         newlib_search_path=
+       fi
+
+       if test "$linkmode,$pass" != "prog,link"; then
+         vars="deplibs"
+       else
+         vars="compile_deplibs finalize_deplibs"
+       fi
+       for var in $vars dependency_libs; do
+         # Add libraries to $var in reverse order
+         eval tmp_libs=\"\$$var\"
+         new_libs=
+         for deplib in $tmp_libs; do
+           # FIXME: Pedantically, this is the right thing to do, so
+           #        that some nasty dependency loop isn't accidentally
+           #        broken:
+           #new_libs="$deplib $new_libs"
+           # Pragmatically, this seems to cause very few problems in
+           # practice:
+           case $deplib in
+           -L*) new_libs="$deplib $new_libs" ;;
+           -R*) ;;
+           *)
+             # And here is the reason: when a library appears more
+             # than once as an explicit dependence of a library, or
+             # is implicitly linked in more than once by the
+             # compiler, it is considered special, and multiple
+             # occurrences thereof are not removed.  Compare this
+             # with having the same library being listed as a
+             # dependency of multiple other libraries: in this case,
+             # we know (pedantically, we assume) the library does not
+             # need to be listed more than once, so we keep only the
+             # last copy.  This is not always right, but it is rare
+             # enough that we require users that really mean to play
+             # such unportable linking tricks to link the library
+             # using -Wl,-lname, so that libtool does not consider it
+             # for duplicate removal.
+             case " $specialdeplibs " in
+             *" $deplib "*) new_libs="$deplib $new_libs" ;;
+             *)
+               case " $new_libs " in
+               *" $deplib "*) ;;
+               *) new_libs="$deplib $new_libs" ;;
+               esac
+               ;;
+             esac
+             ;;
+           esac
+         done
+         tmp_libs=
+         for deplib in $new_libs; do
+           case $deplib in
+           -L*)
+             case " $tmp_libs " in
+             *" $deplib "*) ;;
+             *) tmp_libs="$tmp_libs $deplib" ;;
+             esac
+             ;;
+           *) tmp_libs="$tmp_libs $deplib" ;;
+           esac
+         done
+         eval $var=\"$tmp_libs\"
+       done # for var
+      fi
+      # Last step: remove runtime libs from dependency_libs
+      # (they stay in deplibs)
+      tmp_libs=
+      for i in $dependency_libs ; do
+       case " $predeps $postdeps $compiler_lib_search_path " in
+       *" $i "*)
+         i=""
+         ;;
+       esac
+       if test -n "$i" ; then
+         tmp_libs="$tmp_libs $i"
+       fi
+      done
+      dependency_libs=$tmp_libs
+    done # for pass
+    if test "$linkmode" = prog; then
+      dlfiles="$newdlfiles"
+      dlprefiles="$newdlprefiles"
+    fi
+
+    case $linkmode in
+    oldlib)
+      if test -n "$deplibs"; then
+       $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
+      fi
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+       $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+       $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+       $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+       $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$release"; then
+       $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+       $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+      fi
+
+      # Now set the variables for building old libraries.
+      build_libtool_libs=no
+      oldlibs="$output"
+      objs="$objs$old_deplibs"
+      ;;
+
+    lib)
+      # Make sure we only generate libraries of the form `libNAME.la'.
+      case $outputname in
+      lib*)
+       name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+       eval shared_ext=\"$shrext_cmds\"
+       eval libname=\"$libname_spec\"
+       ;;
+      *)
+       if test "$module" = no; then
+         $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+         $echo "$help" 1>&2
+         exit $EXIT_FAILURE
+       fi
+       if test "$need_lib_prefix" != no; then
+         # Add the "lib" prefix for modules if required
+         name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+         eval shared_ext=\"$shrext_cmds\"
+         eval libname=\"$libname_spec\"
+       else
+         libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+       fi
+       ;;
+      esac
+
+      if test -n "$objs"; then
+       if test "$deplibs_check_method" != pass_all; then
+         $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
+         exit $EXIT_FAILURE
+       else
+         $echo
+         $echo "*** Warning: Linking the shared library $output against the non-libtool"
+         $echo "*** objects $objs is not portable!"
+         libobjs="$libobjs $objs"
+       fi
+      fi
+
+      if test "$dlself" != no; then
+       $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
+      fi
+
+      set dummy $rpath
+      if test "$#" -gt 2; then
+       $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+      fi
+      install_libdir="$2"
+
+      oldlibs=
+      if test -z "$rpath"; then
+       if test "$build_libtool_libs" = yes; then
+         # Building a libtool convenience library.
+         # Some compilers have problems with a `.al' extension so
+         # convenience libraries should have the same extension an
+         # archive normally would.
+         oldlibs="$output_objdir/$libname.$libext $oldlibs"
+         build_libtool_libs=convenience
+         build_old_libs=yes
+       fi
+
+       if test -n "$vinfo"; then
+         $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
+       fi
+
+       if test -n "$release"; then
+         $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
+       fi
+      else
+
+       # Parse the version information argument.
+       save_ifs="$IFS"; IFS=':'
+       set dummy $vinfo 0 0 0
+       IFS="$save_ifs"
+
+       if test -n "$8"; then
+         $echo "$modename: too many parameters to \`-version-info'" 1>&2
+         $echo "$help" 1>&2
+         exit $EXIT_FAILURE
+       fi
+
+       # convert absolute version numbers to libtool ages
+       # this retains compatibility with .la files and attempts
+       # to make the code below a bit more comprehensible
+
+       case $vinfo_number in
+       yes)
+         number_major="$2"
+         number_minor="$3"
+         number_revision="$4"
+         #
+         # There are really only two kinds -- those that
+         # use the current revision as the major version
+         # and those that subtract age and use age as
+         # a minor version.  But, then there is irix
+         # which has an extra 1 added just for fun
+         #
+         case $version_type in
+         darwin|linux|osf|windows)
+           current=`expr $number_major + $number_minor`
+           age="$number_minor"
+           revision="$number_revision"
+           ;;
+         freebsd-aout|freebsd-elf|sunos)
+           current="$number_major"
+           revision="$number_minor"
+           age="0"
+           ;;
+         irix|nonstopux)
+           current=`expr $number_major + $number_minor - 1`
+           age="$number_minor"
+           revision="$number_minor"
+           ;;
+         esac
+         ;;
+       no)
+         current="$2"
+         revision="$3"
+         age="$4"
+         ;;
+       esac
+
+       # Check that each of the things are valid numbers.
+       case $current in
+       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+       *)
+         $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
+         $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+         exit $EXIT_FAILURE
+         ;;
+       esac
+
+       case $revision in
+       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+       *)
+         $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
+         $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+         exit $EXIT_FAILURE
+         ;;
+       esac
+
+       case $age in
+       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+       *)
+         $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
+         $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+         exit $EXIT_FAILURE
+         ;;
+       esac
+
+       if test "$age" -gt "$current"; then
+         $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+         $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+         exit $EXIT_FAILURE
+       fi
+
+       # Calculate the version variables.
+       major=
+       versuffix=
+       verstring=
+       case $version_type in
+       none) ;;
+
+       darwin)
+         # Like Linux, but with the current version available in
+         # verstring for coding it into the library header
+         major=.`expr $current - $age`
+         versuffix="$major.$age.$revision"
+         # Darwin ld doesn't like 0 for these options...
+         minor_current=`expr $current + 1`
+         verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+         ;;
+
+       freebsd-aout)
+         major=".$current"
+         versuffix=".$current.$revision";
+         ;;
+
+       freebsd-elf)
+         major=".$current"
+         versuffix=".$current";
+         ;;
+
+       irix | nonstopux)
+         major=`expr $current - $age + 1`
+
+         case $version_type in
+           nonstopux) verstring_prefix=nonstopux ;;
+           *)         verstring_prefix=sgi ;;
+         esac
+         verstring="$verstring_prefix$major.$revision"
+
+         # Add in all the interfaces that we are compatible with.
+         loop=$revision
+         while test "$loop" -ne 0; do
+           iface=`expr $revision - $loop`
+           loop=`expr $loop - 1`
+           verstring="$verstring_prefix$major.$iface:$verstring"
+         done
+
+         # Before this point, $major must not contain `.'.
+         major=.$major
+         versuffix="$major.$revision"
+         ;;
+
+       linux)
+         major=.`expr $current - $age`
+         versuffix="$major.$age.$revision"
+         ;;
+
+       osf)
+         major=.`expr $current - $age`
+         versuffix=".$current.$age.$revision"
+         verstring="$current.$age.$revision"
+
+         # Add in all the interfaces that we are compatible with.
+         loop=$age
+         while test "$loop" -ne 0; do
+           iface=`expr $current - $loop`
+           loop=`expr $loop - 1`
+           verstring="$verstring:${iface}.0"
+         done
+
+         # Make executables depend on our current version.
+         verstring="$verstring:${current}.0"
+         ;;
+
+       sunos)
+         major=".$current"
+         versuffix=".$current.$revision"
+         ;;
+
+       windows)
+         # Use '-' rather than '.', since we only want one
+         # extension on DOS 8.3 filesystems.
+         major=`expr $current - $age`
+         versuffix="-$major"
+         ;;
+
+       *)
+         $echo "$modename: unknown library version type \`$version_type'" 1>&2
+         $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+         exit $EXIT_FAILURE
+         ;;
+       esac
+
+       # Clear the version info if we defaulted, and they specified a release.
+       if test -z "$vinfo" && test -n "$release"; then
+         major=
+         case $version_type in
+         darwin)
+           # we can't check for "0.0" in archive_cmds due to quoting
+           # problems, so we reset it completely
+           verstring=
+           ;;
+         *)
+           verstring="0.0"
+           ;;
+         esac
+         if test "$need_version" = no; then
+           versuffix=
+         else
+           versuffix=".0.0"
+         fi
+       fi
+
+       # Remove version info from name if versioning should be avoided
+       if test "$avoid_version" = yes && test "$need_version" = no; then
+         major=
+         versuffix=
+         verstring=""
+       fi
+
+       # Check to see if the archive will have undefined symbols.
+       if test "$allow_undefined" = yes; then
+         if test "$allow_undefined_flag" = unsupported; then
+           $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+           build_libtool_libs=no
+           build_old_libs=yes
+         fi
+       else
+         # Don't allow undefined symbols.
+         allow_undefined_flag="$no_undefined_flag"
+       fi
+      fi
+
+      if test "$mode" != relink; then
+       # Remove our outputs, but don't remove object files since they
+       # may have been created when compiling PIC objects.
+       removelist=
+       tempremovelist=`$echo "$output_objdir/*"`
+       for p in $tempremovelist; do
+         case $p in
+           *.$objext)
+              ;;
+           $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+              if test "X$precious_files_regex" != "X"; then
+                if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+                then
+                  continue
+                fi
+              fi
+              removelist="$removelist $p"
+              ;;
+           *) ;;
+         esac
+       done
+       if test -n "$removelist"; then
+         $show "${rm}r $removelist"
+         $run ${rm}r $removelist
+       fi
+      fi
+
+      # Now set the variables for building old libraries.
+      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+       oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+       # Transform .lo files to .o files.
+       oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+      fi
+
+      # Eliminate all temporary directories.
+      for path in $notinst_path; do
+       lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'`
+       deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'`
+       dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'`
+      done
+
+      if test -n "$xrpath"; then
+       # If the user specified any rpath flags, then add them.
+       temp_xrpath=
+       for libdir in $xrpath; do
+         temp_xrpath="$temp_xrpath -R$libdir"
+         case "$finalize_rpath " in
+         *" $libdir "*) ;;
+         *) finalize_rpath="$finalize_rpath $libdir" ;;
+         esac
+       done
+       if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+         dependency_libs="$temp_xrpath $dependency_libs"
+       fi
+      fi
+
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
+      old_dlfiles="$dlfiles"
+      dlfiles=
+      for lib in $old_dlfiles; do
+       case " $dlprefiles $dlfiles " in
+       *" $lib "*) ;;
+       *) dlfiles="$dlfiles $lib" ;;
+       esac
+      done
+
+      # Make sure dlprefiles contains only unique files
+      old_dlprefiles="$dlprefiles"
+      dlprefiles=
+      for lib in $old_dlprefiles; do
+       case "$dlprefiles " in
+       *" $lib "*) ;;
+       *) dlprefiles="$dlprefiles $lib" ;;
+       esac
+      done
+
+      if test "$build_libtool_libs" = yes; then
+       if test -n "$rpath"; then
+         case $host in
+         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+           # these systems don't actually have a c library (as such)!
+           ;;
+         *-*-rhapsody* | *-*-darwin1.[012])
+           # Rhapsody C library is in the System framework
+           deplibs="$deplibs -framework System"
+           ;;
+         *-*-netbsd*)
+           # Don't link with libc until the a.out ld.so is fixed.
+           ;;
+         *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+           # Do not include libc due to us having libc/libc_r.
+           test "X$arg" = "X-lc" && continue
+           ;;
+         *)
+           # Add libc to deplibs on all other systems if necessary.
+           if test "$build_libtool_need_lc" = "yes"; then
+             deplibs="$deplibs -lc"
+           fi
+           ;;
+         esac
+       fi
+
+       # Transform deplibs into only deplibs that can be linked in shared.
+       name_save=$name
+       libname_save=$libname
+       release_save=$release
+       versuffix_save=$versuffix
+       major_save=$major
+       # I'm not sure if I'm treating the release correctly.  I think
+       # release should show up in the -l (ie -lgmp5) so we don't want to
+       # add it in twice.  Is that correct?
+       release=""
+       versuffix=""
+       major=""
+       newdeplibs=
+       droppeddeps=no
+       case $deplibs_check_method in
+       pass_all)
+         # Don't check for shared/static.  Everything works.
+         # This might be a little naive.  We might want to check
+         # whether the library exists or not.  But this is on
+         # osf3 & osf4 and I'm not really sure... Just
+         # implementing what was already the behavior.
+         newdeplibs=$deplibs
+         ;;
+       test_compile)
+         # This code stresses the "libraries are programs" paradigm to its
+         # limits. Maybe even breaks it.  We compile a program, linking it
+         # against the deplibs as a proxy for the library.  Then we can check
+         # whether they linked in statically or dynamically with ldd.
+         $rm conftest.c
+         cat > conftest.c <<EOF
+         int main() { return 0; }
+EOF
+         $rm conftest
+         $LTCC -o conftest conftest.c $deplibs
+         if test "$?" -eq 0 ; then
+           ldd_output=`ldd conftest`
+           for i in $deplibs; do
+             name="`expr $i : '-l\(.*\)'`"
+             # If $name is empty we are operating on a -L argument.
+              if test "$name" != "" && test "$name" -ne "0"; then
+               if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+                 case " $predeps $postdeps " in
+                 *" $i "*)
+                   newdeplibs="$newdeplibs $i"
+                   i=""
+                   ;;
+                 esac
+               fi
+               if test -n "$i" ; then
+                 libname=`eval \\$echo \"$libname_spec\"`
+                 deplib_matches=`eval \\$echo \"$library_names_spec\"`
+                 set dummy $deplib_matches
+                 deplib_match=$2
+                 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+                   newdeplibs="$newdeplibs $i"
+                 else
+                   droppeddeps=yes
+                   $echo
+                   $echo "*** Warning: dynamic linker does not accept needed library $i."
+                   $echo "*** I have the capability to make that library automatically link in when"
+                   $echo "*** you link to this library.  But I can only do this if you have a"
+                   $echo "*** shared version of the library, which I believe you do not have"
+                   $echo "*** because a test_compile did reveal that the linker did not use it for"
+                   $echo "*** its dynamic dependency list that programs get resolved with at runtime."
+                 fi
+               fi
+             else
+               newdeplibs="$newdeplibs $i"
+             fi
+           done
+         else
+           # Error occurred in the first compile.  Let's try to salvage
+           # the situation: Compile a separate program for each library.
+           for i in $deplibs; do
+             name="`expr $i : '-l\(.*\)'`"
+             # If $name is empty we are operating on a -L argument.
+              if test "$name" != "" && test "$name" != "0"; then
+               $rm conftest
+               $LTCC -o conftest conftest.c $i
+               # Did it work?
+               if test "$?" -eq 0 ; then
+                 ldd_output=`ldd conftest`
+                 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+                   case " $predeps $postdeps " in
+                   *" $i "*)
+                     newdeplibs="$newdeplibs $i"
+                     i=""
+                     ;;
+                   esac
+                 fi
+                 if test -n "$i" ; then
+                   libname=`eval \\$echo \"$libname_spec\"`
+                   deplib_matches=`eval \\$echo \"$library_names_spec\"`
+                   set dummy $deplib_matches
+                   deplib_match=$2
+                   if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+                     newdeplibs="$newdeplibs $i"
+                   else
+                     droppeddeps=yes
+                     $echo
+                     $echo "*** Warning: dynamic linker does not accept needed library $i."
+                     $echo "*** I have the capability to make that library automatically link in when"
+                     $echo "*** you link to this library.  But I can only do this if you have a"
+                     $echo "*** shared version of the library, which you do not appear to have"
+                     $echo "*** because a test_compile did reveal that the linker did not use this one"
+                     $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+                   fi
+                 fi
+               else
+                 droppeddeps=yes
+                 $echo
+                 $echo "*** Warning!  Library $i is needed by this library but I was not able to"
+                 $echo "***  make it link in!  You will probably need to install it or some"
+                 $echo "*** library that it depends on before this library will be fully"
+                 $echo "*** functional.  Installing it before continuing would be even better."
+               fi
+             else
+               newdeplibs="$newdeplibs $i"
+             fi
+           done
+         fi
+         ;;
+       file_magic*)
+         set dummy $deplibs_check_method
+         file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+         for a_deplib in $deplibs; do
+           name="`expr $a_deplib : '-l\(.*\)'`"
+           # If $name is empty we are operating on a -L argument.
+            if test "$name" != "" && test  "$name" != "0"; then
+             if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+               case " $predeps $postdeps " in
+               *" $a_deplib "*)
+                 newdeplibs="$newdeplibs $a_deplib"
+                 a_deplib=""
+                 ;;
+               esac
+             fi
+             if test -n "$a_deplib" ; then
+               libname=`eval \\$echo \"$libname_spec\"`
+               for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+                 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+                 for potent_lib in $potential_libs; do
+                     # Follow soft links.
+                     if ls -lLd "$potent_lib" 2>/dev/null \
+                        | grep " -> " >/dev/null; then
+                       continue
+                     fi
+                     # The statement above tries to avoid entering an
+                     # endless loop below, in case of cyclic links.
+                     # We might still enter an endless loop, since a link
+                     # loop can be closed while we follow links,
+                     # but so what?
+                     potlib="$potent_lib"
+                     while test -h "$potlib" 2>/dev/null; do
+                       potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+                       case $potliblink in
+                       [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+                       *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+                       esac
+                     done
+                     if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
+                        | ${SED} 10q \
+                        | $EGREP "$file_magic_regex" > /dev/null; then
+                       newdeplibs="$newdeplibs $a_deplib"
+                       a_deplib=""
+                       break 2
+                     fi
+                 done
+               done
+             fi
+             if test -n "$a_deplib" ; then
+               droppeddeps=yes
+               $echo
+               $echo "*** Warning: linker path does not have real file for library $a_deplib."
+               $echo "*** I have the capability to make that library automatically link in when"
+               $echo "*** you link to this library.  But I can only do this if you have a"
+               $echo "*** shared version of the library, which you do not appear to have"
+               $echo "*** because I did check the linker path looking for a file starting"
+               if test -z "$potlib" ; then
+                 $echo "*** with $libname but no candidates were found. (...for file magic test)"
+               else
+                 $echo "*** with $libname and none of the candidates passed a file format test"
+                 $echo "*** using a file magic. Last file checked: $potlib"
+               fi
+             fi
+           else
+             # Add a -L argument.
+             newdeplibs="$newdeplibs $a_deplib"
+           fi
+         done # Gone through all deplibs.
+         ;;
+       match_pattern*)
+         set dummy $deplibs_check_method
+         match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+         for a_deplib in $deplibs; do
+           name="`expr $a_deplib : '-l\(.*\)'`"
+           # If $name is empty we are operating on a -L argument.
+           if test -n "$name" && test "$name" != "0"; then
+             if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+               case " $predeps $postdeps " in
+               *" $a_deplib "*)
+                 newdeplibs="$newdeplibs $a_deplib"
+                 a_deplib=""
+                 ;;
+               esac
+             fi
+             if test -n "$a_deplib" ; then
+               libname=`eval \\$echo \"$libname_spec\"`
+               for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+                 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+                 for potent_lib in $potential_libs; do
+                   potlib="$potent_lib" # see symlink-check above in file_magic test
+                   if eval $echo \"$potent_lib\" 2>/dev/null \
+                       | ${SED} 10q \
+                       | $EGREP "$match_pattern_regex" > /dev/null; then
+                     newdeplibs="$newdeplibs $a_deplib"
+                     a_deplib=""
+                     break 2
+                   fi
+                 done
+               done
+             fi
+             if test -n "$a_deplib" ; then
+               droppeddeps=yes
+               $echo
+               $echo "*** Warning: linker path does not have real file for library $a_deplib."
+               $echo "*** I have the capability to make that library automatically link in when"
+               $echo "*** you link to this library.  But I can only do this if you have a"
+               $echo "*** shared version of the library, which you do not appear to have"
+               $echo "*** because I did check the linker path looking for a file starting"
+               if test -z "$potlib" ; then
+                 $echo "*** with $libname but no candidates were found. (...for regex pattern test)"
+               else
+                 $echo "*** with $libname and none of the candidates passed a file format test"
+                 $echo "*** using a regex pattern. Last file checked: $potlib"
+               fi
+             fi
+           else
+             # Add a -L argument.
+             newdeplibs="$newdeplibs $a_deplib"
+           fi
+         done # Gone through all deplibs.
+         ;;
+       none | unknown | *)
+         newdeplibs=""
+         tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
+           -e 's/ -[LR][^ ]*//g'`
+         if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+           for i in $predeps $postdeps ; do
+             # can't use Xsed below, because $i might contain '/'
+             tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
+           done
+         fi
+         if $echo "X $tmp_deplibs" | $Xsed -e 's/[     ]//g' \
+           | grep . >/dev/null; then
+           $echo
+           if test "X$deplibs_check_method" = "Xnone"; then
+             $echo "*** Warning: inter-library dependencies are not supported in this platform."
+           else
+             $echo "*** Warning: inter-library dependencies are not known to be supported."
+           fi
+           $echo "*** All declared inter-library dependencies are being dropped."
+           droppeddeps=yes
+         fi
+         ;;
+       esac
+       versuffix=$versuffix_save
+       major=$major_save
+       release=$release_save
+       libname=$libname_save
+       name=$name_save
+
+       case $host in
+       *-*-rhapsody* | *-*-darwin1.[012])
+         # On Rhapsody replace the C library is the System framework
+         newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
+         ;;
+       esac
+
+       if test "$droppeddeps" = yes; then
+         if test "$module" = yes; then
+           $echo
+           $echo "*** Warning: libtool could not satisfy all declared inter-library"
+           $echo "*** dependencies of module $libname.  Therefore, libtool will create"
+           $echo "*** a static module, that should work as long as the dlopening"
+           $echo "*** application is linked with the -dlopen flag."
+           if test -z "$global_symbol_pipe"; then
+             $echo
+             $echo "*** However, this would only work if libtool was able to extract symbol"
+             $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+             $echo "*** not find such a program.  So, this module is probably useless."
+             $echo "*** \`nm' from GNU binutils and a full rebuild may help."
+           fi
+           if test "$build_old_libs" = no; then
+             oldlibs="$output_objdir/$libname.$libext"
+             build_libtool_libs=module
+             build_old_libs=yes
+           else
+             build_libtool_libs=no
+           fi
+         else
+           $echo "*** The inter-library dependencies that have been dropped here will be"
+           $echo "*** automatically added whenever a program is linked with this library"
+           $echo "*** or is declared to -dlopen it."
+
+           if test "$allow_undefined" = no; then
+             $echo
+             $echo "*** Since this library must not contain undefined symbols,"
+             $echo "*** because either the platform does not support them or"
+             $echo "*** it was explicitly requested with -no-undefined,"
+             $echo "*** libtool will only create a static version of it."
+             if test "$build_old_libs" = no; then
+               oldlibs="$output_objdir/$libname.$libext"
+               build_libtool_libs=module
+               build_old_libs=yes
+             else
+               build_libtool_libs=no
+             fi
+           fi
+         fi
+       fi
+       # Done checking deplibs!
+       deplibs=$newdeplibs
+      fi
+
+      # All the library-specific variables (install_libdir is set above).
+      library_names=
+      old_library=
+      dlname=
+
+      # Test again, we may have decided not to build it any more
+      if test "$build_libtool_libs" = yes; then
+       if test "$hardcode_into_libs" = yes; then
+         # Hardcode the library paths
+         hardcode_libdirs=
+         dep_rpath=
+         rpath="$finalize_rpath"
+         test "$mode" != relink && rpath="$compile_rpath$rpath"
+         for libdir in $rpath; do
+           if test -n "$hardcode_libdir_flag_spec"; then
+             if test -n "$hardcode_libdir_separator"; then
+               if test -z "$hardcode_libdirs"; then
+                 hardcode_libdirs="$libdir"
+               else
+                 # Just accumulate the unique libdirs.
+                 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+                 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+                   ;;
+                 *)
+                   hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+                   ;;
+                 esac
+               fi
+             else
+               eval flag=\"$hardcode_libdir_flag_spec\"
+               dep_rpath="$dep_rpath $flag"
+             fi
+           elif test -n "$runpath_var"; then
+             case "$perm_rpath " in
+             *" $libdir "*) ;;
+             *) perm_rpath="$perm_rpath $libdir" ;;
+             esac
+           fi
+         done
+         # Substitute the hardcoded libdirs into the rpath.
+         if test -n "$hardcode_libdir_separator" &&
+            test -n "$hardcode_libdirs"; then
+           libdir="$hardcode_libdirs"
+           if test -n "$hardcode_libdir_flag_spec_ld"; then
+             eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
+           else
+             eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+           fi
+         fi
+         if test -n "$runpath_var" && test -n "$perm_rpath"; then
+           # We should set the runpath_var.
+           rpath=
+           for dir in $perm_rpath; do
+             rpath="$rpath$dir:"
+           done
+           eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+         fi
+         test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+       fi
+
+       shlibpath="$finalize_shlibpath"
+       test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+       if test -n "$shlibpath"; then
+         eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+       fi
+
+       # Get the real and link names of the library.
+       eval shared_ext=\"$shrext_cmds\"
+       eval library_names=\"$library_names_spec\"
+       set dummy $library_names
+       realname="$2"
+       shift; shift
+
+       if test -n "$soname_spec"; then
+         eval soname=\"$soname_spec\"
+       else
+         soname="$realname"
+       fi
+       if test -z "$dlname"; then
+         dlname=$soname
+       fi
+
+       lib="$output_objdir/$realname"
+       for link
+       do
+         linknames="$linknames $link"
+       done
+
+       # Use standard objects if they are pic
+       test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+
+       # Prepare the list of exported symbols
+       if test -z "$export_symbols"; then
+         if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+           $show "generating symbol list for \`$libname.la'"
+           export_symbols="$output_objdir/$libname.exp"
+           $run $rm $export_symbols
+           cmds=$export_symbols_cmds
+           save_ifs="$IFS"; IFS='~'
+           for cmd in $cmds; do
+             IFS="$save_ifs"
+             eval cmd=\"$cmd\"
+             if len=`expr "X$cmd" : ".*"` &&
+              test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+               $show "$cmd"
+               $run eval "$cmd" || exit $?
+               skipped_export=false
+             else
+               # The command line is too long to execute in one step.
+               $show "using reloadable object file for export list..."
+               skipped_export=:
+             fi
+           done
+           IFS="$save_ifs"
+           if test -n "$export_symbols_regex"; then
+             $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
+             $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+             $show "$mv \"${export_symbols}T\" \"$export_symbols\""
+             $run eval '$mv "${export_symbols}T" "$export_symbols"'
+           fi
+         fi
+       fi
+
+       if test -n "$export_symbols" && test -n "$include_expsyms"; then
+         $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
+       fi
+
+       tmp_deplibs=
+       for test_deplib in $deplibs; do
+               case " $convenience " in
+               *" $test_deplib "*) ;;
+               *)
+                       tmp_deplibs="$tmp_deplibs $test_deplib"
+                       ;;
+               esac
+       done
+       deplibs="$tmp_deplibs"
+
+       if test -n "$convenience"; then
+         if test -n "$whole_archive_flag_spec"; then
+           save_libobjs=$libobjs
+           eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+         else
+           gentop="$output_objdir/${outputname}x"
+           generated="$generated $gentop"
+
+           func_extract_archives $gentop $convenience
+           libobjs="$libobjs $func_extract_archives_result"
+         fi
+       fi
+       
+       if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+         eval flag=\"$thread_safe_flag_spec\"
+         linker_flags="$linker_flags $flag"
+       fi
+
+       # Make a backup of the uninstalled library when relinking
+       if test "$mode" = relink; then
+         $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
+       fi
+
+       # Do each of the archive commands.
+       if test "$module" = yes && test -n "$module_cmds" ; then
+         if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+           eval test_cmds=\"$module_expsym_cmds\"
+           cmds=$module_expsym_cmds
+         else
+           eval test_cmds=\"$module_cmds\"
+           cmds=$module_cmds
+         fi
+       else
+       if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+         eval test_cmds=\"$archive_expsym_cmds\"
+         cmds=$archive_expsym_cmds
+       else
+         eval test_cmds=\"$archive_cmds\"
+         cmds=$archive_cmds
+         fi
+       fi
+
+       if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` &&
+          test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+         :
+       else
+         # The command line is too long to link in one step, link piecewise.
+         $echo "creating reloadable object files..."
+
+         # Save the value of $output and $libobjs because we want to
+         # use them later.  If we have whole_archive_flag_spec, we
+         # want to use save_libobjs as it was before
+         # whole_archive_flag_spec was expanded, because we can't
+         # assume the linker understands whole_archive_flag_spec.
+         # This may have to be revisited, in case too many
+         # convenience libraries get linked in and end up exceeding
+         # the spec.
+         if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+           save_libobjs=$libobjs
+         fi
+         save_output=$output
+         output_la=`$echo "X$output" | $Xsed -e "$basename"`
+
+         # Clear the reloadable object creation command queue and
+         # initialize k to one.
+         test_cmds=
+         concat_cmds=
+         objlist=
+         delfiles=
+         last_robj=
+         k=1
+         output=$output_objdir/$output_la-${k}.$objext
+         # Loop over the list of objects to be linked.
+         for obj in $save_libobjs
+         do
+           eval test_cmds=\"$reload_cmds $objlist $last_robj\"
+           if test "X$objlist" = X ||
+              { len=`expr "X$test_cmds" : ".*"` &&
+                test "$len" -le "$max_cmd_len"; }; then
+             objlist="$objlist $obj"
+           else
+             # The command $test_cmds is almost too long, add a
+             # command to the queue.
+             if test "$k" -eq 1 ; then
+               # The first file doesn't have a previous command to add.
+               eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+             else
+               # All subsequent reloadable object files will link in
+               # the last one created.
+               eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
+             fi
+             last_robj=$output_objdir/$output_la-${k}.$objext
+             k=`expr $k + 1`
+             output=$output_objdir/$output_la-${k}.$objext
+             objlist=$obj
+             len=1
+           fi
+         done
+         # Handle the remaining objects by creating one last
+         # reloadable object file.  All subsequent reloadable object
+         # files will link in the last one created.
+         test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+         eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+
+         if ${skipped_export-false}; then
+           $show "generating symbol list for \`$libname.la'"
+           export_symbols="$output_objdir/$libname.exp"
+           $run $rm $export_symbols
+           libobjs=$output
+           # Append the command to create the export file.
+           eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
+          fi
+
+         # Set up a command to remove the reloadable object files
+         # after they are used.
+         i=0
+         while test "$i" -lt "$k"
+         do
+           i=`expr $i + 1`
+           delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
+         done
+
+         $echo "creating a temporary reloadable object file: $output"
+
+         # Loop through the commands generated above and execute them.
+         save_ifs="$IFS"; IFS='~'
+         for cmd in $concat_cmds; do
+           IFS="$save_ifs"
+           $show "$cmd"
+           $run eval "$cmd" || exit $?
+         done
+         IFS="$save_ifs"
+
+         libobjs=$output
+         # Restore the value of output.
+         output=$save_output
+
+         if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+           eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+         fi
+         # Expand the library linking commands again to reset the
+         # value of $libobjs for piecewise linking.
+
+         # Do each of the archive commands.
+         if test "$module" = yes && test -n "$module_cmds" ; then
+           if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+             cmds=$module_expsym_cmds
+           else
+             cmds=$module_cmds
+           fi
+         else
+         if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+           cmds=$archive_expsym_cmds
+         else
+           cmds=$archive_cmds
+           fi
+         fi
+
+         # Append the command to remove the reloadable object files
+         # to the just-reset $cmds.
+         eval cmds=\"\$cmds~\$rm $delfiles\"
+       fi
+       save_ifs="$IFS"; IFS='~'
+       for cmd in $cmds; do
+         IFS="$save_ifs"
+         eval cmd=\"$cmd\"
+         $show "$cmd"
+         $run eval "$cmd" || exit $?
+       done
+       IFS="$save_ifs"
+
+       # Restore the uninstalled library and exit
+       if test "$mode" = relink; then
+         $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+         exit $EXIT_SUCCESS
+       fi
+
+       # Create links to the real library.
+       for linkname in $linknames; do
+         if test "$realname" != "$linkname"; then
+           $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
+           $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
+         fi
+       done
+
+       # If -module or -export-dynamic was specified, set the dlname.
+       if test "$module" = yes || test "$export_dynamic" = yes; then
+         # On all known operating systems, these are identical.
+         dlname="$soname"
+       fi
+      fi
+      ;;
+
+    obj)
+      if test -n "$deplibs"; then
+       $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
+      fi
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+       $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+       $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+       $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+       $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$release"; then
+       $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
+      fi
+
+      case $output in
+      *.lo)
+       if test -n "$objs$old_deplibs"; then
+         $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+         exit $EXIT_FAILURE
+       fi
+       libobj="$output"
+       obj=`$echo "X$output" | $Xsed -e "$lo2o"`
+       ;;
+      *)
+       libobj=
+       obj="$output"
+       ;;
+      esac
+
+      # Delete the old objects.
+      $run $rm $obj $libobj
+
+      # Objects from convenience libraries.  This assumes
+      # single-version convenience libraries.  Whenever we create
+      # different ones for PIC/non-PIC, this we'll have to duplicate
+      # the extraction.
+      reload_conv_objs=
+      gentop=
+      # reload_cmds runs $LD directly, so let us get rid of
+      # -Wl from whole_archive_flag_spec
+      wl=
+
+      if test -n "$convenience"; then
+       if test -n "$whole_archive_flag_spec"; then
+         eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+       else
+         gentop="$output_objdir/${obj}x"
+         generated="$generated $gentop"
+
+         func_extract_archives $gentop $convenience
+         reload_conv_objs="$reload_objs $func_extract_archives_result"
+       fi
+      fi
+
+      # Create the old-style object.
+      reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+      output="$obj"
+      cmds=$reload_cmds
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+       IFS="$save_ifs"
+       eval cmd=\"$cmd\"
+       $show "$cmd"
+       $run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+
+      # Exit if we aren't doing a library object file.
+      if test -z "$libobj"; then
+       if test -n "$gentop"; then
+         $show "${rm}r $gentop"
+         $run ${rm}r $gentop
+       fi
+
+       exit $EXIT_SUCCESS
+      fi
+
+      if test "$build_libtool_libs" != yes; then
+       if test -n "$gentop"; then
+         $show "${rm}r $gentop"
+         $run ${rm}r $gentop
+       fi
+
+       # Create an invalid libtool object if no PIC, so that we don't
+       # accidentally link it into a program.
+       # $show "echo timestamp > $libobj"
+       # $run eval "echo timestamp > $libobj" || exit $?
+       exit $EXIT_SUCCESS
+      fi
+
+      if test -n "$pic_flag" || test "$pic_mode" != default; then
+       # Only do commands if we really have different PIC objects.
+       reload_objs="$libobjs $reload_conv_objs"
+       output="$libobj"
+       cmds=$reload_cmds
+       save_ifs="$IFS"; IFS='~'
+       for cmd in $cmds; do
+         IFS="$save_ifs"
+         eval cmd=\"$cmd\"
+         $show "$cmd"
+         $run eval "$cmd" || exit $?
+       done
+       IFS="$save_ifs"
+      fi
+
+      if test -n "$gentop"; then
+       $show "${rm}r $gentop"
+       $run ${rm}r $gentop
+      fi
+
+      exit $EXIT_SUCCESS
+      ;;
+
+    prog)
+      case $host in
+       *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
+      esac
+      if test -n "$vinfo"; then
+       $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+      fi
+
+      if test -n "$release"; then
+       $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
+      fi
+
+      if test "$preload" = yes; then
+       if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
+          test "$dlopen_self_static" = unknown; then
+         $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
+       fi
+      fi
+
+      case $host in
+      *-*-rhapsody* | *-*-darwin1.[012])
+       # On Rhapsody replace the C library is the System framework
+       compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+       finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+       ;;
+      esac
+
+      case $host in
+      *darwin*)
+        # Don't allow lazy linking, it breaks C++ global constructors
+        if test "$tagname" = CXX ; then
+        compile_command="$compile_command ${wl}-bind_at_load"
+        finalize_command="$finalize_command ${wl}-bind_at_load"
+        fi
+        ;;
+      esac
+
+      compile_command="$compile_command $compile_deplibs"
+      finalize_command="$finalize_command $finalize_deplibs"
+
+      if test -n "$rpath$xrpath"; then
+       # If the user specified any rpath flags, then add them.
+       for libdir in $rpath $xrpath; do
+         # This is the magic to use -rpath.
+         case "$finalize_rpath " in
+         *" $libdir "*) ;;
+         *) finalize_rpath="$finalize_rpath $libdir" ;;
+         esac
+       done
+      fi
+
+      # Now hardcode the library paths
+      rpath=
+      hardcode_libdirs=
+      for libdir in $compile_rpath $finalize_rpath; do
+       if test -n "$hardcode_libdir_flag_spec"; then
+         if test -n "$hardcode_libdir_separator"; then
+           if test -z "$hardcode_libdirs"; then
+             hardcode_libdirs="$libdir"
+           else
+             # Just accumulate the unique libdirs.
+             case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+             *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+               ;;
+             *)
+               hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+               ;;
+             esac
+           fi
+         else
+           eval flag=\"$hardcode_libdir_flag_spec\"
+           rpath="$rpath $flag"
+         fi
+       elif test -n "$runpath_var"; then
+         case "$perm_rpath " in
+         *" $libdir "*) ;;
+         *) perm_rpath="$perm_rpath $libdir" ;;
+         esac
+       fi
+       case $host in
+       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+         case :$dllsearchpath: in
+         *":$libdir:"*) ;;
+         *) dllsearchpath="$dllsearchpath:$libdir";;
+         esac
+         ;;
+       esac
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+        test -n "$hardcode_libdirs"; then
+       libdir="$hardcode_libdirs"
+       eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      compile_rpath="$rpath"
+
+      rpath=
+      hardcode_libdirs=
+      for libdir in $finalize_rpath; do
+       if test -n "$hardcode_libdir_flag_spec"; then
+         if test -n "$hardcode_libdir_separator"; then
+           if test -z "$hardcode_libdirs"; then
+             hardcode_libdirs="$libdir"
+           else
+             # Just accumulate the unique libdirs.
+             case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+             *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+               ;;
+             *)
+               hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+               ;;
+             esac
+           fi
+         else
+           eval flag=\"$hardcode_libdir_flag_spec\"
+           rpath="$rpath $flag"
+         fi
+       elif test -n "$runpath_var"; then
+         case "$finalize_perm_rpath " in
+         *" $libdir "*) ;;
+         *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+         esac
+       fi
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+        test -n "$hardcode_libdirs"; then
+       libdir="$hardcode_libdirs"
+       eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      finalize_rpath="$rpath"
+
+      if test -n "$libobjs" && test "$build_old_libs" = yes; then
+       # Transform all the library objects into standard objects.
+       compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+       finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+      fi
+
+      dlsyms=
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+       if test -n "$NM" && test -n "$global_symbol_pipe"; then
+         dlsyms="${outputname}S.c"
+       else
+         $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+       fi
+      fi
+
+      if test -n "$dlsyms"; then
+       case $dlsyms in
+       "") ;;
+       *.c)
+         # Discover the nlist of each of the dlfiles.
+         nlist="$output_objdir/${outputname}.nm"
+
+         $show "$rm $nlist ${nlist}S ${nlist}T"
+         $run $rm "$nlist" "${nlist}S" "${nlist}T"
+
+         # Parse the name list into a source file.
+         $show "creating $output_objdir/$dlsyms"
+
+         test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* Prevent the only kind of declaration conflicts we can make. */
+#define lt_preloaded_symbols some_other_symbol
+
+/* External symbol declarations for the compiler. */\
+"
+
+         if test "$dlself" = yes; then
+           $show "generating symbol list for \`$output'"
+
+           test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
+
+           # Add our own program objects to the symbol list.
+           progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+           for arg in $progfiles; do
+             $show "extracting global C symbols from \`$arg'"
+             $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+           done
+
+           if test -n "$exclude_expsyms"; then
+             $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+             $run eval '$mv "$nlist"T "$nlist"'
+           fi
+
+           if test -n "$export_symbols_regex"; then
+             $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+             $run eval '$mv "$nlist"T "$nlist"'
+           fi
+
+           # Prepare the list of exported symbols
+           if test -z "$export_symbols"; then
+             export_symbols="$output_objdir/$outputname.exp"
+             $run $rm $export_symbols
+             $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+           else
+             $run eval "${SED} -e 's/\([ ][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+             $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+             $run eval 'mv "$nlist"T "$nlist"'
+           fi
+         fi
+
+         for arg in $dlprefiles; do
+           $show "extracting global C symbols from \`$arg'"
+           name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
+           $run eval '$echo ": $name " >> "$nlist"'
+           $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+         done
+
+         if test -z "$run"; then
+           # Make sure we have at least an empty file.
+           test -f "$nlist" || : > "$nlist"
+
+           if test -n "$exclude_expsyms"; then
+             $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+             $mv "$nlist"T "$nlist"
+           fi
+
+           # Try sorting and uniquifying the output.
+           if grep -v "^: " < "$nlist" |
+               if sort -k 3 </dev/null >/dev/null 2>&1; then
+                 sort -k 3
+               else
+                 sort +2
+               fi |
+               uniq > "$nlist"S; then
+             :
+           else
+             grep -v "^: " < "$nlist" > "$nlist"S
+           fi
+
+           if test -f "$nlist"S; then
+             eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
+           else
+             $echo '/* NONE */' >> "$output_objdir/$dlsyms"
+           fi
+
+           $echo >> "$output_objdir/$dlsyms" "\
+
+#undef lt_preloaded_symbols
+
+#if defined (__STDC__) && __STDC__
+# define lt_ptr void *
+#else
+# define lt_ptr char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+"
+
+           case $host in
+           *cygwin* | *mingw* )
+         $echo >> "$output_objdir/$dlsyms" "\
+/* DATA imports from DLLs on WIN32 can't be const, because
+   runtime relocations are performed -- see ld's documentation
+   on pseudo-relocs */
+struct {
+"
+             ;;
+           * )
+         $echo >> "$output_objdir/$dlsyms" "\
+const struct {
+"
+             ;;
+           esac
+
+
+         $echo >> "$output_objdir/$dlsyms" "\
+  const char *name;
+  lt_ptr address;
+}
+lt_preloaded_symbols[] =
+{\
+"
+
+           eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
+
+           $echo >> "$output_objdir/$dlsyms" "\
+  {0, (lt_ptr) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+         fi
+
+         pic_flag_for_symtable=
+         case $host in
+         # compiling the symbol table file with pic_flag works around
+         # a FreeBSD bug that causes programs to crash when -lm is
+         # linked before any other PIC object.  But we must not use
+         # pic_flag when linking with -static.  The problem exists in
+         # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+         *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+           case "$compile_command " in
+           *" -static "*) ;;
+           *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
+           esac;;
+         *-*-hpux*)
+           case "$compile_command " in
+           *" -static "*) ;;
+           *) pic_flag_for_symtable=" $pic_flag";;
+           esac
+         esac
+
+         # Now compile the dynamic symbol file.
+         $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+         $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+         # Clean up the generated files.
+         $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+         $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+         # Transform the symbol file into the correct name.
+         compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+         finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+         ;;
+       *)
+         $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+         exit $EXIT_FAILURE
+         ;;
+       esac
+      else
+       # We keep going just in case the user didn't refer to
+       # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
+       # really was required.
+
+       # Nullify the symbol file.
+       compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+       finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+      fi
+
+      if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+       # Replace the output file specification.
+       compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+       link_command="$compile_command$compile_rpath"
+
+       # We have no uninstalled library dependencies, so finalize right now.
+       $show "$link_command"
+       $run eval "$link_command"
+       status=$?
+
+       # Delete the generated files.
+       if test -n "$dlsyms"; then
+         $show "$rm $output_objdir/${outputname}S.${objext}"
+         $run $rm "$output_objdir/${outputname}S.${objext}"
+       fi
+
+       exit $status
+      fi
+
+      if test -n "$shlibpath_var"; then
+       # We should set the shlibpath_var
+       rpath=
+       for dir in $temp_rpath; do
+         case $dir in
+         [\\/]* | [A-Za-z]:[\\/]*)
+           # Absolute path.
+           rpath="$rpath$dir:"
+           ;;
+         *)
+           # Relative path: add a thisdir entry.
+           rpath="$rpath\$thisdir/$dir:"
+           ;;
+         esac
+       done
+       temp_rpath="$rpath"
+      fi
+
+      if test -n "$compile_shlibpath$finalize_shlibpath"; then
+       compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+      fi
+      if test -n "$finalize_shlibpath"; then
+       finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+      fi
+
+      compile_var=
+      finalize_var=
+      if test -n "$runpath_var"; then
+       if test -n "$perm_rpath"; then
+         # We should set the runpath_var.
+         rpath=
+         for dir in $perm_rpath; do
+           rpath="$rpath$dir:"
+         done
+         compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+       fi
+       if test -n "$finalize_perm_rpath"; then
+         # We should set the runpath_var.
+         rpath=
+         for dir in $finalize_perm_rpath; do
+           rpath="$rpath$dir:"
+         done
+         finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+       fi
+      fi
+
+      if test "$no_install" = yes; then
+       # We don't need to create a wrapper script.
+       link_command="$compile_var$compile_command$compile_rpath"
+       # Replace the output file specification.
+       link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+       # Delete the old output file.
+       $run $rm $output
+       # Link the executable and exit
+       $show "$link_command"
+       $run eval "$link_command" || exit $?
+       exit $EXIT_SUCCESS
+      fi
+
+      if test "$hardcode_action" = relink; then
+       # Fast installation is not supported
+       link_command="$compile_var$compile_command$compile_rpath"
+       relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+       $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
+       $echo "$modename: \`$output' will be relinked during installation" 1>&2
+      else
+       if test "$fast_install" != no; then
+         link_command="$finalize_var$compile_command$finalize_rpath"
+         if test "$fast_install" = yes; then
+           relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+         else
+           # fast_install is set to needless
+           relink_command=
+         fi
+       else
+         link_command="$compile_var$compile_command$compile_rpath"
+         relink_command="$finalize_var$finalize_command$finalize_rpath"
+       fi
+      fi
+
+      # Replace the output file specification.
+      link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+      # Delete the old output files.
+      $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+      $show "$link_command"
+      $run eval "$link_command" || exit $?
+
+      # Now create the wrapper script.
+      $show "creating $output"
+
+      # Quote the relink command for shipping.
+      if test -n "$relink_command"; then
+       # Preserve any variables that may affect compiler behavior
+       for var in $variables_saved_for_relink; do
+         if eval test -z \"\${$var+set}\"; then
+           relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+         elif eval var_value=\$$var; test -z "$var_value"; then
+           relink_command="$var=; export $var; $relink_command"
+         else
+           var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+           relink_command="$var=\"$var_value\"; export $var; $relink_command"
+         fi
+       done
+       relink_command="(cd `pwd`; $relink_command)"
+       relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Quote $echo for shipping.
+      if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
+       case $progpath in
+       [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
+       *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
+       esac
+       qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
+      else
+       qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Only actually do things if our run command is non-null.
+      if test -z "$run"; then
+       # win32 will think the script is a binary if it has
+       # a .exe suffix, so we strip it off here.
+       case $output in
+         *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
+       esac
+       # test for cygwin because mv fails w/o .exe extensions
+       case $host in
+         *cygwin*)
+           exeext=.exe
+           outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
+         *) exeext= ;;
+       esac
+       case $host in
+         *cygwin* | *mingw* )
+           cwrappersource=`$echo ${objdir}/lt-${outputname}.c`
+           cwrapper=`$echo ${output}.exe`
+           $rm $cwrappersource $cwrapper
+           trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+           cat > $cwrappersource <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+   Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+
+   The $output program cannot be directly executed until all the libtool
+   libraries that it depends on are installed.
+
+   This wrapper executable should never be moved out of the build directory.
+   If it is, it will not operate correctly.
+
+   Currently, it simply execs the wrapper *script* "/bin/sh $output",
+   but could eventually absorb all of the scripts functionality and
+   exec $objdir/$outputname directly.
+*/
+EOF
+           cat >> $cwrappersource<<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef DIR_SEPARATOR
+#define DIR_SEPARATOR '/'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+  defined (__OS2__)
+#define HAVE_DOS_BASED_FILE_SYSTEM
+#ifndef DIR_SEPARATOR_2
+#define DIR_SEPARATOR_2 '\\'
+#endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+        (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+  if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+const char *program_name = NULL;
+
+void * xmalloc (size_t num);
+char * xstrdup (const char *string);
+char * basename (const char *name);
+char * fnqualify(const char *path);
+char * strendzap(char *str, const char *pat);
+void lt_fatal (const char *message, ...);
+
+int
+main (int argc, char *argv[])
+{
+  char **newargz;
+  int i;
+
+  program_name = (char *) xstrdup ((char *) basename (argv[0]));
+  newargz = XMALLOC(char *, argc+2);
+EOF
+
+           cat >> $cwrappersource <<EOF
+  newargz[0] = "$SHELL";
+EOF
+
+           cat >> $cwrappersource <<"EOF"
+  newargz[1] = fnqualify(argv[0]);
+  /* we know the script has the same name, without the .exe */
+  /* so make sure newargz[1] doesn't end in .exe */
+  strendzap(newargz[1],".exe");
+  for (i = 1; i < argc; i++)
+    newargz[i+1] = xstrdup(argv[i]);
+  newargz[argc+1] = NULL;
+EOF
+
+           cat >> $cwrappersource <<EOF
+  execv("$SHELL",newargz);
+EOF
+
+           cat >> $cwrappersource <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+  void * p = (void *) malloc (num);
+  if (!p)
+    lt_fatal ("Memory exhausted");
+
+  return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+  return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
+;
+}
+
+char *
+basename (const char *name)
+{
+  const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  /* Skip over the disk name in MSDOS pathnames. */
+  if (isalpha (name[0]) && name[1] == ':')
+    name += 2;
+#endif
+
+  for (base = name; *name; name++)
+    if (IS_DIR_SEPARATOR (*name))
+      base = name + 1;
+  return (char *) base;
+}
+
+char *
+fnqualify(const char *path)
+{
+  size_t size;
+  char *p;
+  char tmp[LT_PATHMAX + 1];
+
+  assert(path != NULL);
+
+  /* Is it qualified already? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  if (isalpha (path[0]) && path[1] == ':')
+    return xstrdup (path);
+#endif
+  if (IS_DIR_SEPARATOR (path[0]))
+    return xstrdup (path);
+
+  /* prepend the current directory */
+  /* doesn't handle '~' */
+  if (getcwd (tmp, LT_PATHMAX) == NULL)
+    lt_fatal ("getcwd failed");
+  size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */
+  p = XMALLOC(char, size);
+  sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path);
+  return p;
+}
+
+char *
+strendzap(char *str, const char *pat)
+{
+  size_t len, patlen;
+
+  assert(str != NULL);
+  assert(pat != NULL);
+
+  len = strlen(str);
+  patlen = strlen(pat);
+
+  if (patlen <= len)
+  {
+    str += len - patlen;
+    if (strcmp(str, pat) == 0)
+      *str = '\0';
+  }
+  return str;
+}
+
+static void
+lt_error_core (int exit_status, const char * mode,
+          const char * message, va_list ap)
+{
+  fprintf (stderr, "%s: %s: ", program_name, mode);
+  vfprintf (stderr, message, ap);
+  fprintf (stderr, ".\n");
+
+  if (exit_status >= 0)
+    exit (exit_status);
+}
+
+void
+lt_fatal (const char *message, ...)
+{
+  va_list ap;
+  va_start (ap, message);
+  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
+  va_end (ap);
+}
+EOF
+         # we should really use a build-platform specific compiler
+         # here, but OTOH, the wrappers (shell script and this C one)
+         # are only useful if you want to execute the "real" binary.
+         # Since the "real" binary is built for $host, then this
+         # wrapper might as well be built for $host, too.
+         $run $LTCC -s -o $cwrapper $cwrappersource
+         ;;
+       esac
+       $rm $output
+       trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
+
+       $echo > $output "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='${SED} -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# 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
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variable:
+  notinst_deplibs='$notinst_deplibs'
+else
+  # When we are sourced in execute mode, \$file and \$echo are already set.
+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
+    echo=\"$qecho\"
+    file=\"\$0\"
+    # Make sure echo works.
+    if test \"X\$1\" = X--no-reexec; then
+      # Discard the --no-reexec flag, and continue.
+      shift
+    elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
+      # Yippee, \$echo works!
+      :
+    else
+      # Restart under the correct shell, and then maybe \$echo will work.
+      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+    fi
+  fi\
+"
+       $echo >> $output "\
+
+  # Find the directory that this script lives in.
+  thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
+
+    file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+  done
+
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+       if test "$fast_install" = yes; then
+         $echo >> $output "\
+  program=lt-'$outputname'$exeext
+  progdir=\"\$thisdir/$objdir\"
+
+  if test ! -f \"\$progdir/\$program\" || \\
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+    file=\"\$\$-\$program\"
+
+    if test ! -d \"\$progdir\"; then
+      $mkdir \"\$progdir\"
+    else
+      $rm \"\$progdir/\$file\"
+    fi"
+
+         $echo >> $output "\
+
+    # relink executable if necessary
+    if test -n \"\$relink_command\"; then
+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+      else
+       $echo \"\$relink_command_output\" >&2
+       $rm \"\$progdir/\$file\"
+       exit $EXIT_FAILURE
+      fi
+    fi
+
+    $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+    { $rm \"\$progdir/\$program\";
+      $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+    $rm \"\$progdir/\$file\"
+  fi"
+       else
+         $echo >> $output "\
+  program='$outputname'
+  progdir=\"\$thisdir/$objdir\"
+"
+       fi
+
+       $echo >> $output "\
+
+  if test -f \"\$progdir/\$program\"; then"
+
+       # Export our shlibpath_var if we have one.
+       if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+         $echo >> $output "\
+    # Add our own library path to $shlibpath_var
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+    # Some systems cannot cope with colon-terminated $shlibpath_var
+    # The second colon is a workaround for a bug in BeOS R4 sed
+    $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+    export $shlibpath_var
+"
+       fi
+
+       # fixup the dll searchpath if we need to.
+       if test -n "$dllsearchpath"; then
+         $echo >> $output "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+       fi
+
+       $echo >> $output "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+"
+       case $host in
+       # Backslashes separate directories on plain windows
+       *-*-mingw | *-*-os2*)
+         $echo >> $output "\
+      exec \$progdir\\\\\$program \${1+\"\$@\"}
+"
+         ;;
+
+       *)
+         $echo >> $output "\
+      exec \$progdir/\$program \${1+\"\$@\"}
+"
+         ;;
+       esac
+       $echo >> $output "\
+      \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+      exit $EXIT_FAILURE
+    fi
+  else
+    # The program doesn't exist.
+    \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
+    \$echo \"This script is just a wrapper for \$program.\" 1>&2
+    $echo \"See the $PACKAGE documentation for more information.\" 1>&2
+    exit $EXIT_FAILURE
+  fi
+fi\
+"
+       chmod +x $output
+      fi
+      exit $EXIT_SUCCESS
+      ;;
+    esac
+
+    # See if we need to build an old-fashioned archive.
+    for oldlib in $oldlibs; do
+
+      if test "$build_libtool_libs" = convenience; then
+       oldobjs="$libobjs_save"
+       addlibs="$convenience"
+       build_libtool_libs=no
+      else
+       if test "$build_libtool_libs" = module; then
+         oldobjs="$libobjs_save"
+         build_libtool_libs=no
+       else
+         oldobjs="$old_deplibs $non_pic_objects"
+       fi
+       addlibs="$old_convenience"
+      fi
+
+      if test -n "$addlibs"; then
+       gentop="$output_objdir/${outputname}x"
+       generated="$generated $gentop"
+
+       func_extract_archives $gentop $addlibs
+       oldobjs="$oldobjs $func_extract_archives_result"
+      fi
+
+      # Do each command in the archive commands.
+      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+       cmds=$old_archive_from_new_cmds
+      else
+       # POSIX demands no paths to be encoded in archives.  We have
+       # to avoid creating archives with duplicate basenames if we
+       # might have to extract them afterwards, e.g., when creating a
+       # static archive out of a convenience library, or when linking
+       # the entirety of a libtool archive into another (currently
+       # not supported by libtool).
+       if (for obj in $oldobjs
+           do
+             $echo "X$obj" | $Xsed -e 's%^.*/%%'
+           done | sort | sort -uc >/dev/null 2>&1); then
+         :
+       else
+         $echo "copying selected object files to avoid basename conflicts..."
+
+         if test -z "$gentop"; then
+           gentop="$output_objdir/${outputname}x"
+           generated="$generated $gentop"
+
+           $show "${rm}r $gentop"
+           $run ${rm}r "$gentop"
+           $show "$mkdir $gentop"
+           $run $mkdir "$gentop"
+           status=$?
+           if test "$status" -ne 0 && test ! -d "$gentop"; then
+             exit $status
+           fi
+         fi
+
+         save_oldobjs=$oldobjs
+         oldobjs=
+         counter=1
+         for obj in $save_oldobjs
+         do
+           objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+           case " $oldobjs " in
+           " ") oldobjs=$obj ;;
+           *[\ /]"$objbase "*)
+             while :; do
+               # Make sure we don't pick an alternate name that also
+               # overlaps.
+               newobj=lt$counter-$objbase
+               counter=`expr $counter + 1`
+               case " $oldobjs " in
+               *[\ /]"$newobj "*) ;;
+               *) if test ! -f "$gentop/$newobj"; then break; fi ;;
+               esac
+             done
+             $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+             $run ln "$obj" "$gentop/$newobj" ||
+             $run cp "$obj" "$gentop/$newobj"
+             oldobjs="$oldobjs $gentop/$newobj"
+             ;;
+           *) oldobjs="$oldobjs $obj" ;;
+           esac
+         done
+       fi
+
+       eval cmds=\"$old_archive_cmds\"
+
+       if len=`expr "X$cmds" : ".*"` &&
+            test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+         cmds=$old_archive_cmds
+       else
+         # the command line is too long to link in one step, link in parts
+         $echo "using piecewise archive linking..."
+         save_RANLIB=$RANLIB
+         RANLIB=:
+         objlist=
+         concat_cmds=
+         save_oldobjs=$oldobjs
+
+         # Is there a better way of finding the last object in the list?
+         for obj in $save_oldobjs
+         do
+           last_oldobj=$obj
+         done
+         for obj in $save_oldobjs
+         do
+           oldobjs="$objlist $obj"
+           objlist="$objlist $obj"
+           eval test_cmds=\"$old_archive_cmds\"
+           if len=`expr "X$test_cmds" : ".*"` &&
+              test "$len" -le "$max_cmd_len"; then
+             :
+           else
+             # the above command should be used before it gets too long
+             oldobjs=$objlist
+             if test "$obj" = "$last_oldobj" ; then
+               RANLIB=$save_RANLIB
+             fi
+             test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+             eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+             objlist=
+           fi
+         done
+         RANLIB=$save_RANLIB
+         oldobjs=$objlist
+         if test "X$oldobjs" = "X" ; then
+           eval cmds=\"\$concat_cmds\"
+         else
+           eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+         fi
+       fi
+      fi
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+        eval cmd=\"$cmd\"
+       IFS="$save_ifs"
+       $show "$cmd"
+       $run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$generated"; then
+      $show "${rm}r$generated"
+      $run ${rm}r$generated
+    fi
+
+    # Now create the libtool archive.
+    case $output in
+    *.la)
+      old_library=
+      test "$build_old_libs" = yes && old_library="$libname.$libext"
+      $show "creating $output"
+
+      # Preserve any variables that may affect compiler behavior
+      for var in $variables_saved_for_relink; do
+       if eval test -z \"\${$var+set}\"; then
+         relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+       elif eval var_value=\$$var; test -z "$var_value"; then
+         relink_command="$var=; export $var; $relink_command"
+       else
+         var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+         relink_command="$var=\"$var_value\"; export $var; $relink_command"
+       fi
+      done
+      # Quote the link command for shipping.
+      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+      relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      if test "$hardcode_automatic" = yes ; then
+       relink_command=
+      fi
+
+
+      # Only create the output if not a dry run.
+      if test -z "$run"; then
+       for installed in no yes; do
+         if test "$installed" = yes; then
+           if test -z "$install_libdir"; then
+             break
+           fi
+           output="$output_objdir/$outputname"i
+           # Replace all uninstalled libtool libraries with the installed ones
+           newdependency_libs=
+           for deplib in $dependency_libs; do
+             case $deplib in
+             *.la)
+               name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+               eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+               if test -z "$libdir"; then
+                 $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+                 exit $EXIT_FAILURE
+               fi
+               newdependency_libs="$newdependency_libs $libdir/$name"
+               ;;
+             *) newdependency_libs="$newdependency_libs $deplib" ;;
+             esac
+           done
+           dependency_libs="$newdependency_libs"
+           newdlfiles=
+           for lib in $dlfiles; do
+             name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+             eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+             if test -z "$libdir"; then
+               $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+               exit $EXIT_FAILURE
+             fi
+             newdlfiles="$newdlfiles $libdir/$name"
+           done
+           dlfiles="$newdlfiles"
+           newdlprefiles=
+           for lib in $dlprefiles; do
+             name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+             eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+             if test -z "$libdir"; then
+               $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+               exit $EXIT_FAILURE
+             fi
+             newdlprefiles="$newdlprefiles $libdir/$name"
+           done
+           dlprefiles="$newdlprefiles"
+         else
+           newdlfiles=
+           for lib in $dlfiles; do
+             case $lib in
+               [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+               *) abs=`pwd`"/$lib" ;;
+             esac
+             newdlfiles="$newdlfiles $abs"
+           done
+           dlfiles="$newdlfiles"
+           newdlprefiles=
+           for lib in $dlprefiles; do
+             case $lib in
+               [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+               *) abs=`pwd`"/$lib" ;;
+             esac
+             newdlprefiles="$newdlprefiles $abs"
+           done
+           dlprefiles="$newdlprefiles"
+         fi
+         $rm $output
+         # place dlname in correct position for cygwin
+         tdlname=$dlname
+         case $host,$output,$installed,$module,$dlname in
+           *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+         esac
+         $echo > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+         if test "$installed" = no && test "$need_relink" = yes; then
+           $echo >> $output "\
+relink_command=\"$relink_command\""
+         fi
+       done
+      fi
+
+      # Do a symbolic link so that the libtool archive can be found in
+      # LD_LIBRARY_PATH before the program is installed.
+      $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
+      $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
+      ;;
+    esac
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool install mode
+  install)
+    modename="$modename: install"
+
+    # There may be an optional sh(1) argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+       # Allow the use of GNU shtool's install command.
+       $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
+      # Aesthetically quote it.
+      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+       arg="\"$arg\""
+       ;;
+      esac
+      install_prog="$arg "
+      arg="$1"
+      shift
+    else
+      install_prog=
+      arg="$nonopt"
+    fi
+
+    # The real first argument should be the name of the installation program.
+    # Aesthetically quote it.
+    arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+    case $arg in
+    *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+      arg="\"$arg\""
+      ;;
+    esac
+    install_prog="$install_prog$arg"
+
+    # We need to accept at least all the BSD install flags.
+    dest=
+    files=
+    opts=
+    prev=
+    install_type=
+    isdir=no
+    stripme=
+    for arg
+    do
+      if test -n "$dest"; then
+       files="$files $dest"
+       dest="$arg"
+       continue
+      fi
+
+      case $arg in
+      -d) isdir=yes ;;
+      -f) prev="-f" ;;
+      -g) prev="-g" ;;
+      -m) prev="-m" ;;
+      -o) prev="-o" ;;
+      -s)
+       stripme=" -s"
+       continue
+       ;;
+      -*) ;;
+
+      *)
+       # If the previous option needed an argument, then skip it.
+       if test -n "$prev"; then
+         prev=
+       else
+         dest="$arg"
+         continue
+       fi
+       ;;
+      esac
+
+      # Aesthetically quote the argument.
+      arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+       arg="\"$arg\""
+       ;;
+      esac
+      install_prog="$install_prog $arg"
+    done
+
+    if test -z "$install_prog"; then
+      $echo "$modename: you must specify an install program" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prev' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test -z "$files"; then
+      if test -z "$dest"; then
+       $echo "$modename: no file or destination specified" 1>&2
+      else
+       $echo "$modename: you must specify a destination" 1>&2
+      fi
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    # Strip any trailing slash from the destination.
+    dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+
+    # Check to see that the destination is a directory.
+    test -d "$dest" && isdir=yes
+    if test "$isdir" = yes; then
+      destdir="$dest"
+      destname=
+    else
+      destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
+      test "X$destdir" = "X$dest" && destdir=.
+      destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+
+      # Not a directory, so check to see that there is only one file specified.
+      set dummy $files
+      if test "$#" -gt 2; then
+       $echo "$modename: \`$dest' is not a directory" 1>&2
+       $echo "$help" 1>&2
+       exit $EXIT_FAILURE
+      fi
+    fi
+    case $destdir in
+    [\\/]* | [A-Za-z]:[\\/]*) ;;
+    *)
+      for file in $files; do
+       case $file in
+       *.lo) ;;
+       *)
+         $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+         $echo "$help" 1>&2
+         exit $EXIT_FAILURE
+         ;;
+       esac
+      done
+      ;;
+    esac
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    staticlibs=
+    future_libdirs=
+    current_libdirs=
+    for file in $files; do
+
+      # Do each installation.
+      case $file in
+      *.$libext)
+       # Do the static libraries later.
+       staticlibs="$staticlibs $file"
+       ;;
+
+      *.la)
+       # Check to see that this really is a libtool archive.
+       if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+       else
+         $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+         $echo "$help" 1>&2
+         exit $EXIT_FAILURE
+       fi
+
+       library_names=
+       old_library=
+       relink_command=
+       # If there is no directory component, then add one.
+       case $file in
+       */* | *\\*) . $file ;;
+       *) . ./$file ;;
+       esac
+
+       # Add the libdir to current_libdirs if it is the destination.
+       if test "X$destdir" = "X$libdir"; then
+         case "$current_libdirs " in
+         *" $libdir "*) ;;
+         *) current_libdirs="$current_libdirs $libdir" ;;
+         esac
+       else
+         # Note the libdir as a future libdir.
+         case "$future_libdirs " in
+         *" $libdir "*) ;;
+         *) future_libdirs="$future_libdirs $libdir" ;;
+         esac
+       fi
+
+       dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
+       test "X$dir" = "X$file/" && dir=
+       dir="$dir$objdir"
+
+       if test -n "$relink_command"; then
+         # Determine the prefix the user has applied to our future dir.
+         inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
+
+         # Don't allow the user to place us outside of our expected
+         # location b/c this prevents finding dependent libraries that
+         # are installed to the same prefix.
+         # At present, this check doesn't affect windows .dll's that
+         # are installed into $libdir/../bin (currently, that works fine)
+         # but it's something to keep an eye on.
+         if test "$inst_prefix_dir" = "$destdir"; then
+           $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
+           exit $EXIT_FAILURE
+         fi
+
+         if test -n "$inst_prefix_dir"; then
+           # Stick the inst_prefix_dir data into the link command.
+           relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+         else
+           relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
+         fi
+
+         $echo "$modename: warning: relinking \`$file'" 1>&2
+         $show "$relink_command"
+         if $run eval "$relink_command"; then :
+         else
+           $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+           exit $EXIT_FAILURE
+         fi
+       fi
+
+       # See the names of the shared library.
+       set dummy $library_names
+       if test -n "$2"; then
+         realname="$2"
+         shift
+         shift
+
+         srcname="$realname"
+         test -n "$relink_command" && srcname="$realname"T
+
+         # Install the shared library and build the symlinks.
+         $show "$install_prog $dir/$srcname $destdir/$realname"
+         $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+         if test -n "$stripme" && test -n "$striplib"; then
+           $show "$striplib $destdir/$realname"
+           $run eval "$striplib $destdir/$realname" || exit $?
+         fi
+
+         if test "$#" -gt 0; then
+           # Delete the old symlinks, and create new ones.
+           for linkname
+           do
+             if test "$linkname" != "$realname"; then
+               $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+               $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+             fi
+           done
+         fi
+
+         # Do each command in the postinstall commands.
+         lib="$destdir/$realname"
+         cmds=$postinstall_cmds
+         save_ifs="$IFS"; IFS='~'
+         for cmd in $cmds; do
+           IFS="$save_ifs"
+           eval cmd=\"$cmd\"
+           $show "$cmd"
+           $run eval "$cmd" || exit $?
+         done
+         IFS="$save_ifs"
+       fi
+
+       # Install the pseudo-library for information purposes.
+       name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+       instname="$dir/$name"i
+       $show "$install_prog $instname $destdir/$name"
+       $run eval "$install_prog $instname $destdir/$name" || exit $?
+
+       # Maybe install the static library, too.
+       test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+       ;;
+
+      *.lo)
+       # Install (i.e. copy) a libtool object.
+
+       # Figure out destination file name, if it wasn't already specified.
+       if test -n "$destname"; then
+         destfile="$destdir/$destname"
+       else
+         destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+         destfile="$destdir/$destfile"
+       fi
+
+       # Deduce the name of the destination old-style object file.
+       case $destfile in
+       *.lo)
+         staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
+         ;;
+       *.$objext)
+         staticdest="$destfile"
+         destfile=
+         ;;
+       *)
+         $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+         $echo "$help" 1>&2
+         exit $EXIT_FAILURE
+         ;;
+       esac
+
+       # Install the libtool object if requested.
+       if test -n "$destfile"; then
+         $show "$install_prog $file $destfile"
+         $run eval "$install_prog $file $destfile" || exit $?
+       fi
+
+       # Install the old object if enabled.
+       if test "$build_old_libs" = yes; then
+         # Deduce the name of the old-style object file.
+         staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+
+         $show "$install_prog $staticobj $staticdest"
+         $run eval "$install_prog \$staticobj \$staticdest" || exit $?
+       fi
+       exit $EXIT_SUCCESS
+       ;;
+
+      *)
+       # Figure out destination file name, if it wasn't already specified.
+       if test -n "$destname"; then
+         destfile="$destdir/$destname"
+       else
+         destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+         destfile="$destdir/$destfile"
+       fi
+
+       # If the file is missing, and there is a .exe on the end, strip it
+       # because it is most likely a libtool script we actually want to
+       # install
+       stripped_ext=""
+       case $file in
+         *.exe)
+           if test ! -f "$file"; then
+             file=`$echo $file|${SED} 's,.exe$,,'`
+             stripped_ext=".exe"
+           fi
+           ;;
+       esac
+
+       # Do a test to see if this is really a libtool program.
+       case $host in
+       *cygwin*|*mingw*)
+           wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
+           ;;
+       *)
+           wrapper=$file
+           ;;
+       esac
+       if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
+         notinst_deplibs=
+         relink_command=
+
+         # To insure that "foo" is sourced, and not "foo.exe",
+         # finese the cygwin/MSYS system by explicitly sourcing "foo."
+         # which disallows the automatic-append-.exe behavior.
+         case $build in
+         *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
+         *) wrapperdot=${wrapper} ;;
+         esac
+         # If there is no directory component, then add one.
+         case $file in
+         */* | *\\*) . ${wrapperdot} ;;
+         *) . ./${wrapperdot} ;;
+         esac
+
+         # Check the variables that should have been set.
+         if test -z "$notinst_deplibs"; then
+           $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
+           exit $EXIT_FAILURE
+         fi
+
+         finalize=yes
+         for lib in $notinst_deplibs; do
+           # Check to see that each library is installed.
+           libdir=
+           if test -f "$lib"; then
+             # If there is no directory component, then add one.
+             case $lib in
+             */* | *\\*) . $lib ;;
+             *) . ./$lib ;;
+             esac
+           fi
+           libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+           if test -n "$libdir" && test ! -f "$libfile"; then
+             $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+             finalize=no
+           fi
+         done
+
+         relink_command=
+         # To insure that "foo" is sourced, and not "foo.exe",
+         # finese the cygwin/MSYS system by explicitly sourcing "foo."
+         # which disallows the automatic-append-.exe behavior.
+         case $build in
+         *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
+         *) wrapperdot=${wrapper} ;;
+         esac
+         # If there is no directory component, then add one.
+         case $file in
+         */* | *\\*) . ${wrapperdot} ;;
+         *) . ./${wrapperdot} ;;
+         esac
+
+         outputname=
+         if test "$fast_install" = no && test -n "$relink_command"; then
+           if test "$finalize" = yes && test -z "$run"; then
+             tmpdir="/tmp"
+             test -n "$TMPDIR" && tmpdir="$TMPDIR"
+             tmpdir="$tmpdir/libtool-$$"
+             save_umask=`umask`
+             umask 0077
+             if $mkdir "$tmpdir"; then
+               umask $save_umask
+             else
+               umask $save_umask
+               $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
+               continue
+             fi
+             file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
+             outputname="$tmpdir/$file"
+             # Replace the output file specification.
+             relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+
+             $show "$relink_command"
+             if $run eval "$relink_command"; then :
+             else
+               $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+               ${rm}r "$tmpdir"
+               continue
+             fi
+             file="$outputname"
+           else
+             $echo "$modename: warning: cannot relink \`$file'" 1>&2
+           fi
+         else
+           # Install the binary that we compiled earlier.
+           file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+         fi
+       fi
+
+       # remove .exe since cygwin /usr/bin/install will append another
+       # one anyways
+       case $install_prog,$host in
+       */usr/bin/install*,*cygwin*)
+         case $file:$destfile in
+         *.exe:*.exe)
+           # this is ok
+           ;;
+         *.exe:*)
+           destfile=$destfile.exe
+           ;;
+         *:*.exe)
+           destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
+           ;;
+         esac
+         ;;
+       esac
+       $show "$install_prog$stripme $file $destfile"
+       $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
+       test -n "$outputname" && ${rm}r "$tmpdir"
+       ;;
+      esac
+    done
+
+    for file in $staticlibs; do
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+      # Set up the ranlib parameters.
+      oldlib="$destdir/$name"
+
+      $show "$install_prog $file $oldlib"
+      $run eval "$install_prog \$file \$oldlib" || exit $?
+
+      if test -n "$stripme" && test -n "$old_striplib"; then
+       $show "$old_striplib $oldlib"
+       $run eval "$old_striplib $oldlib" || exit $?
+      fi
+
+      # Do each command in the postinstall commands.
+      cmds=$old_postinstall_cmds
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+       IFS="$save_ifs"
+       eval cmd=\"$cmd\"
+       $show "$cmd"
+       $run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$future_libdirs"; then
+      $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+    fi
+
+    if test -n "$current_libdirs"; then
+      # Maybe just do a dry run.
+      test -n "$run" && current_libdirs=" -n$current_libdirs"
+      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+    else
+      exit $EXIT_SUCCESS
+    fi
+    ;;
+
+  # libtool finish mode
+  finish)
+    modename="$modename: finish"
+    libdirs="$nonopt"
+    admincmds=
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      for dir
+      do
+       libdirs="$libdirs $dir"
+      done
+
+      for libdir in $libdirs; do
+       if test -n "$finish_cmds"; then
+         # Do each command in the finish commands.
+         cmds=$finish_cmds
+         save_ifs="$IFS"; IFS='~'
+         for cmd in $cmds; do
+           IFS="$save_ifs"
+           eval cmd=\"$cmd\"
+           $show "$cmd"
+           $run eval "$cmd" || admincmds="$admincmds
+       $cmd"
+         done
+         IFS="$save_ifs"
+       fi
+       if test -n "$finish_eval"; then
+         # Do the single finish_eval.
+         eval cmds=\"$finish_eval\"
+         $run eval "$cmds" || admincmds="$admincmds
+       $cmds"
+       fi
+      done
+    fi
+
+    # Exit here if they wanted silent mode.
+    test "$show" = : && exit $EXIT_SUCCESS
+
+    $echo "----------------------------------------------------------------------"
+    $echo "Libraries have been installed in:"
+    for libdir in $libdirs; do
+      $echo "   $libdir"
+    done
+    $echo
+    $echo "If you ever happen to want to link against installed libraries"
+    $echo "in a given directory, LIBDIR, you must either use libtool, and"
+    $echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+    $echo "flag during linking and do at least one of the following:"
+    if test -n "$shlibpath_var"; then
+      $echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+      $echo "     during execution"
+    fi
+    if test -n "$runpath_var"; then
+      $echo "   - add LIBDIR to the \`$runpath_var' environment variable"
+      $echo "     during linking"
+    fi
+    if test -n "$hardcode_libdir_flag_spec"; then
+      libdir=LIBDIR
+      eval flag=\"$hardcode_libdir_flag_spec\"
+
+      $echo "   - use the \`$flag' linker flag"
+    fi
+    if test -n "$admincmds"; then
+      $echo "   - have your system administrator run these commands:$admincmds"
+    fi
+    if test -f /etc/ld.so.conf; then
+      $echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+    fi
+    $echo
+    $echo "See any operating system documentation about shared libraries for"
+    $echo "more information, such as the ld(1) and ld.so(8) manual pages."
+    $echo "----------------------------------------------------------------------"
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool execute mode
+  execute)
+    modename="$modename: execute"
+
+    # The first argument is the command name.
+    cmd="$nonopt"
+    if test -z "$cmd"; then
+      $echo "$modename: you must specify a COMMAND" 1>&2
+      $echo "$help"
+      exit $EXIT_FAILURE
+    fi
+
+    # Handle -dlopen flags immediately.
+    for file in $execute_dlfiles; do
+      if test ! -f "$file"; then
+       $echo "$modename: \`$file' is not a file" 1>&2
+       $echo "$help" 1>&2
+       exit $EXIT_FAILURE
+      fi
+
+      dir=
+      case $file in
+      *.la)
+       # Check to see that this really is a libtool archive.
+       if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+       else
+         $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+         $echo "$help" 1>&2
+         exit $EXIT_FAILURE
+       fi
+
+       # Read the libtool library.
+       dlname=
+       library_names=
+
+       # If there is no directory component, then add one.
+       case $file in
+       */* | *\\*) . $file ;;
+       *) . ./$file ;;
+       esac
+
+       # Skip this library if it cannot be dlopened.
+       if test -z "$dlname"; then
+         # Warn if it was a shared library.
+         test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
+         continue
+       fi
+
+       dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+       test "X$dir" = "X$file" && dir=.
+
+       if test -f "$dir/$objdir/$dlname"; then
+         dir="$dir/$objdir"
+       else
+         $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+         exit $EXIT_FAILURE
+       fi
+       ;;
+
+      *.lo)
+       # Just add the directory containing the .lo file.
+       dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+       test "X$dir" = "X$file" && dir=.
+       ;;
+
+      *)
+       $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+       continue
+       ;;
+      esac
+
+      # Get the absolute pathname.
+      absdir=`cd "$dir" && pwd`
+      test -n "$absdir" && dir="$absdir"
+
+      # Now add the directory to shlibpath_var.
+      if eval "test -z \"\$$shlibpath_var\""; then
+       eval "$shlibpath_var=\"\$dir\""
+      else
+       eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+      fi
+    done
+
+    # This variable tells wrapper scripts just to set shlibpath_var
+    # rather than running their programs.
+    libtool_execute_magic="$magic"
+
+    # Check if any of the arguments is a wrapper script.
+    args=
+    for file
+    do
+      case $file in
+      -*) ;;
+      *)
+       # Do a test to see if this is really a libtool program.
+       if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+         # If there is no directory component, then add one.
+         case $file in
+         */* | *\\*) . $file ;;
+         *) . ./$file ;;
+         esac
+
+         # Transform arg to wrapped name.
+         file="$progdir/$program"
+       fi
+       ;;
+      esac
+      # Quote arguments (to preserve shell metacharacters).
+      file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
+      args="$args \"$file\""
+    done
+
+    if test -z "$run"; then
+      if test -n "$shlibpath_var"; then
+       # Export the shlibpath_var.
+       eval "export $shlibpath_var"
+      fi
+
+      # Restore saved environment variables
+      if test "${save_LC_ALL+set}" = set; then
+       LC_ALL="$save_LC_ALL"; export LC_ALL
+      fi
+      if test "${save_LANG+set}" = set; then
+       LANG="$save_LANG"; export LANG
+      fi
+
+      # Now prepare to actually exec the command.
+      exec_cmd="\$cmd$args"
+    else
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+       eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
+       $echo "export $shlibpath_var"
+      fi
+      $echo "$cmd$args"
+      exit $EXIT_SUCCESS
+    fi
+    ;;
+
+  # libtool clean and uninstall mode
+  clean | uninstall)
+    modename="$modename: $mode"
+    rm="$nonopt"
+    files=
+    rmforce=
+    exit_status=0
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    for arg
+    do
+      case $arg in
+      -f) rm="$rm $arg"; rmforce=yes ;;
+      -*) rm="$rm $arg" ;;
+      *) files="$files $arg" ;;
+      esac
+    done
+
+    if test -z "$rm"; then
+      $echo "$modename: you must specify an RM program" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    rmdirs=
+
+    origobjdir="$objdir"
+    for file in $files; do
+      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+      if test "X$dir" = "X$file"; then
+       dir=.
+       objdir="$origobjdir"
+      else
+       objdir="$dir/$origobjdir"
+      fi
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+      test "$mode" = uninstall && objdir="$dir"
+
+      # Remember objdir for removal later, being careful to avoid duplicates
+      if test "$mode" = clean; then
+       case " $rmdirs " in
+         *" $objdir "*) ;;
+         *) rmdirs="$rmdirs $objdir" ;;
+       esac
+      fi
+
+      # Don't error if the file doesn't exist and rm -f was used.
+      if (test -L "$file") >/dev/null 2>&1 \
+       || (test -h "$file") >/dev/null 2>&1 \
+       || test -f "$file"; then
+       :
+      elif test -d "$file"; then
+       exit_status=1
+       continue
+      elif test "$rmforce" = yes; then
+       continue
+      fi
+
+      rmfiles="$file"
+
+      case $name in
+      *.la)
+       # Possibly a libtool archive, so verify it.
+       if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+         . $dir/$name
+
+         # Delete the libtool libraries and symlinks.
+         for n in $library_names; do
+           rmfiles="$rmfiles $objdir/$n"
+         done
+         test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+         test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+
+         if test "$mode" = uninstall; then
+           if test -n "$library_names"; then
+             # Do each command in the postuninstall commands.
+             cmds=$postuninstall_cmds
+             save_ifs="$IFS"; IFS='~'
+             for cmd in $cmds; do
+               IFS="$save_ifs"
+               eval cmd=\"$cmd\"
+               $show "$cmd"
+               $run eval "$cmd"
+               if test "$?" -ne 0 && test "$rmforce" != yes; then
+                 exit_status=1
+               fi
+             done
+             IFS="$save_ifs"
+           fi
+
+           if test -n "$old_library"; then
+             # Do each command in the old_postuninstall commands.
+             cmds=$old_postuninstall_cmds
+             save_ifs="$IFS"; IFS='~'
+             for cmd in $cmds; do
+               IFS="$save_ifs"
+               eval cmd=\"$cmd\"
+               $show "$cmd"
+               $run eval "$cmd"
+               if test "$?" -ne 0 && test "$rmforce" != yes; then
+                 exit_status=1
+               fi
+             done
+             IFS="$save_ifs"
+           fi
+           # FIXME: should reinstall the best remaining shared library.
+         fi
+       fi
+       ;;
+
+      *.lo)
+       # Possibly a libtool object, so verify it.
+       if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+
+         # Read the .lo file
+         . $dir/$name
+
+         # Add PIC object to the list of files to remove.
+         if test -n "$pic_object" \
+            && test "$pic_object" != none; then
+           rmfiles="$rmfiles $dir/$pic_object"
+         fi
+
+         # Add non-PIC object to the list of files to remove.
+         if test -n "$non_pic_object" \
+            && test "$non_pic_object" != none; then
+           rmfiles="$rmfiles $dir/$non_pic_object"
+         fi
+       fi
+       ;;
+
+      *)
+       if test "$mode" = clean ; then
+         noexename=$name
+         case $file in
+         *.exe)
+           file=`$echo $file|${SED} 's,.exe$,,'`
+           noexename=`$echo $name|${SED} 's,.exe$,,'`
+           # $file with .exe has already been added to rmfiles,
+           # add $file without .exe
+           rmfiles="$rmfiles $file"
+           ;;
+         esac
+         # Do a test to see if this is a libtool program.
+         if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+           relink_command=
+           . $dir/$noexename
+
+           # note $name still contains .exe if it was in $file originally
+           # as does the version of $file that was added into $rmfiles
+           rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+           if test "$fast_install" = yes && test -n "$relink_command"; then
+             rmfiles="$rmfiles $objdir/lt-$name"
+           fi
+           if test "X$noexename" != "X$name" ; then
+             rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+           fi
+         fi
+       fi
+       ;;
+      esac
+      $show "$rm $rmfiles"
+      $run $rm $rmfiles || exit_status=1
+    done
+    objdir="$origobjdir"
+
+    # Try to remove the ${objdir}s in the directories where we deleted files
+    for dir in $rmdirs; do
+      if test -d "$dir"; then
+       $show "rmdir $dir"
+       $run rmdir $dir >/dev/null 2>&1
+      fi
+    done
+
+    exit $exit_status
+    ;;
+
+  "")
+    $echo "$modename: you must specify a MODE" 1>&2
+    $echo "$generic_help" 1>&2
+    exit $EXIT_FAILURE
+    ;;
+  esac
+
+  if test -z "$exec_cmd"; then
+    $echo "$modename: invalid operation mode \`$mode'" 1>&2
+    $echo "$generic_help" 1>&2
+    exit $EXIT_FAILURE
+  fi
+fi # test -z "$show_help"
+
+if test -n "$exec_cmd"; then
+  eval exec $exec_cmd
+  exit $EXIT_FAILURE
+fi
+
+# We need to display help for each of the modes.
+case $mode in
+"") $echo \
+"Usage: $modename [OPTION]... [MODE-ARG]...
+
+Provide generalized library-building support services.
+
+    --config          show all configuration variables
+    --debug           enable verbose shell tracing
+-n, --dry-run         display commands without modifying any files
+    --features        display basic configuration information and exit
+    --finish          same as \`--mode=finish'
+    --help            display this help message and exit
+    --mode=MODE       use operation mode MODE [default=inferred from MODE-ARGS]
+    --quiet           same as \`--silent'
+    --silent          don't print informational messages
+    --tag=TAG         use configuration variables from tag TAG
+    --version         print version information
+
+MODE must be one of the following:
+
+      clean           remove files from the build directory
+      compile         compile a source file into a libtool object
+      execute         automatically set library path, then run a program
+      finish          complete the installation of libtool libraries
+      install         install libraries or executables
+      link            create a library or an executable
+      uninstall       remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE.  Try \`$modename --help --mode=MODE' for
+a more detailed description of MODE.
+
+Report bugs to <bug-libtool@gnu.org>."
+  exit $EXIT_SUCCESS
+  ;;
+
+clean)
+  $echo \
+"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+compile)
+  $echo \
+"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
+  -prefer-pic       try to building PIC objects only
+  -prefer-non-pic   try to building non-PIC objects only
+  -static           always build a \`.o' file suitable for static linking
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+  ;;
+
+execute)
+  $echo \
+"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+  -dlopen FILE      add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+  ;;
+
+finish)
+  $echo \
+"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges.  Use
+the \`--dry-run' option if you just want to see what would be executed."
+  ;;
+
+install)
+  $echo \
+"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command.  The first component should be
+either the \`install' or \`cp' program.
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+  ;;
+
+link)
+  $echo \
+"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+  -all-static       do not do any dynamic linking at all
+  -avoid-version    do not add a version suffix if possible
+  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+  -export-symbols SYMFILE
+                   try to export only the symbols listed in SYMFILE
+  -export-symbols-regex REGEX
+                   try to export only the symbols matching REGEX
+  -LLIBDIR          search LIBDIR for required installed libraries
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -module           build a library that can dlopened
+  -no-fast-install  disable the fast-install mode
+  -no-install       link a not-installable executable
+  -no-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -objectlist FILE  Use a list of object files found in FILE to specify objects
+  -precious-files-regex REGEX
+                    don't remove output files matching REGEX
+  -release RELEASE  specify package release information
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
+  -static           do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+                   specify library version info [each variable defaults to 0]
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename.  Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+  ;;
+
+uninstall)
+  $echo \
+"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+*)
+  $echo "$modename: invalid operation mode \`$mode'" 1>&2
+  $echo "$help" 1>&2
+  exit $EXIT_FAILURE
+  ;;
+esac
+
+$echo
+$echo "Try \`$modename --help' for more information about other modes."
+
+exit $?
+
+# The TAGs below are defined such that we never get into a situation
+# in which we disable both kinds of libraries.  Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them.  This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration.  But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+build_libtool_libs=no
+build_old_libs=yes
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac`
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
index f9e9475..8ca6cbd 100644 (file)
@@ -1,4 +1,4 @@
-## $Id: changelog.am,v 1.1.4.1 2003/11/03 23:11:11 ensc Exp $  ---*- makefile -*---
+## $Id: changelog.am,v 1.3 2003/10/13 19:50:09 ensc Exp $      ---*- makefile -*---
 
 ## Copyright (C) 2002 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 ##  
index c054ae6..e1a8cab 100644 (file)
@@ -1,4 +1,4 @@
-dnl $Id: ensc_cflags.m4,v 1.1.4.2 2004/03/04 03:12:34 ensc Exp $
+dnl $Id: ensc_cflags.m4,v 1.3 2004/03/04 03:00:42 ensc Exp $
 
 dnl Copyright (C) 2002 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 dnl  
index a66fc25..190b6cd 100644 (file)
@@ -1,4 +1,4 @@
-dnl $Id: ensc_changelog.m4,v 1.1.2.1 2003/11/03 23:11:11 ensc Exp $
+dnl $Id: ensc_changelog.m4,v 1.2 2003/11/04 01:31:56 ensc Exp $
 
 dnl Copyright (C) 2002 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 dnl  
diff --git a/m4/ensc_cxxcompiler.m4 b/m4/ensc_cxxcompiler.m4
new file mode 100644 (file)
index 0000000..910bf4f
--- /dev/null
@@ -0,0 +1,66 @@
+dnl $Id: ensc_cxxcompiler.m4,v 1.3 2005/04/10 00:52:57 ensc Exp $
+
+dnl Copyright (C) 2002 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+dnl  
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; version 2 of the License.
+dnl  
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl GNU General Public License for more details.
+dnl  
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+AC_DEFUN([ENSC_CXXCOMPILER],
+[
+       AC_REQUIRE([AC_PROG_CXX])
+
+       AC_CACHE_CHECK([whether $CXX is a C++ compiler], [ensc_cv_cxx_cxxcompiler],
+        [
+               AC_LANG_PUSH(C++)
+               AC_COMPILE_IFELSE([
+                   #include <ostream>
+                ],
+                [ensc_cv_cxx_cxxcompiler=yes],
+                [ensc_cv_cxx_cxxcompiler=no])
+               AC_LANG_POP(C++)
+        ])
+
+       AM_CONDITIONAL(ENSC_HAVE_CXX_COMPILER,
+                       [test x"$ensc_cv_cxx_cxxcompiler" = xyes])
+
+       if test x"$ensc_cv_cxx_cxxcompiler" = xno; then
+               AC_MSG_WARN([*** some programs will not be built because a C++ compiler is lacking])
+       fi
+])
+
+AC_DEFUN([ENSC_C99COMPILER],
+[
+       AC_REQUIRE([AC_PROG_CC])
+
+       AC_CACHE_CHECK([whether $CC is a C99 compiler], [ensc_cv_c99_c99compiler],
+        [
+               AC_LANG_PUSH(C)
+               AC_COMPILE_IFELSE([
+int main(int argc, char *argv[]) {
+  struct { int x; }   a = { .x = argc };
+  if (0) return 0;
+  int b;
+}
+                ],
+                [ensc_cv_c99_c99compiler=yes],
+                [ensc_cv_c99_c99compiler=no])
+               AC_LANG_POP(C)
+        ])
+
+       AM_CONDITIONAL(ENSC_HAVE_C99_COMPILER,
+                       [test x"$ensc_cv_c99_c99compiler" = xyes])
+
+       if test x"$ensc_cv_c99_c99compiler" = xno; then
+               AC_MSG_WARN([*** some programs will not be built because system is lacking a C99 compiler])
+       fi
+])
diff --git a/m4/ensc_dietlibc.m4 b/m4/ensc_dietlibc.m4
new file mode 100644 (file)
index 0000000..02d1647
--- /dev/null
@@ -0,0 +1,154 @@
+dnl $Id: ensc_dietlibc.m4,v 1.15 2005/05/05 19:13:52 ensc Exp $
+
+dnl Copyright (C) 2002 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+dnl  
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; version 2 of the License.
+dnl  
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl GNU General Public License for more details.
+dnl  
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+AC_DEFUN([_ENSC_DIETLIBC_C99],
+[
+       AH_TEMPLATE([ENSC_DIETLIBC_C99], [Define to 1 if dietlibc supports C99])
+
+       AC_CACHE_CHECK([whether dietlibc supports C99], [ensc_cv_c_dietlibc_c99],
+       [
+               _ensc_dietlibc_c99_old_CFLAGS=$CFLAGS
+               _ensc_dietlibc_c99_old_CC=$CC
+
+               CFLAGS="-std=c99"
+               CC="${DIET:-diet} $CC"
+
+               AC_LANG_PUSH(C)
+               AC_COMPILE_IFELSE([/* */],[
+                       AC_COMPILE_IFELSE([
+                               #include <stdint.h>
+                               #include <sys/cdefs.h>
+                               #if defined(inline)
+                               #  error 'inline' badly defined
+                               #endif
+                               volatile uint64_t       a;
+                       ],
+                       [ensc_cv_c_dietlibc_c99=yes],
+                       [ensc_cv_c_dietlibc_c99=no])],
+                       [ensc_cv_c_dietlibc_c99='skipped (compiler does not support C99)'])
+               AC_LANG_POP
+
+               CC=$_ensc_dietlibc_c99_old_CC
+               CFLAGS=$_ensc_dietlibc_c99_old_CFLAGS
+       ])
+
+       if test x"$ensc_cv_c_dietlibc_c99" = xyes; then
+               AC_DEFINE(ENSC_DIETLIBC_C99,1)
+       fi
+])
+
+dnl Usage: ENSC_ENABLE_DIETLIBC(<conditional>[,<min-version>])
+dnl        <conditional> ... automake-conditional which will be set when
+dnl                          dietlibc shall be enabled
+dnl        provides:
+dnl        * $ENSC_VERSION_DIETLIBC_NUM and
+dnl        * $ENSC_VERSION_DIETLIBC
+
+AC_DEFUN([ENSC_ENABLE_DIETLIBC],
+[
+       AC_MSG_CHECKING([whether to enable dietlibc])
+
+       AC_ARG_VAR(DIET,      [The 'diet' wrapper (default: diet)])
+       AC_ARG_VAR(DIETFLAGS, [Flags passed to the 'diet' wrapper (default: -O)])
+
+       : ${DIET:=diet}
+       : ${DIETFLAGS=-Os}
+
+       AC_ARG_ENABLE([dietlibc],
+                     [AS_HELP_STRING([--disable-dietlibc],
+                                     [do not use dietlibc resp. enforce its usage
+                                      (with --enable-dietlibc) (default: autodetect dietlibc)])],
+                     [case "$enableval" in
+                         (yes) use_dietlibc=forced;;
+                         (no)  use_dietlibc=forced_no;;
+                         (*)   AC_MSG_ERROR(['$enableval' is not a valid value for --enable-dietlibc]);;
+                      esac],
+                     [which "$DIET" >/dev/null 2>/dev/null && use_dietlibc=detected || use_dietlibc=detected_no])
+
+       if test "$use_dietlibc" = detected -a "$2"; then
+           _dietlibc_ver=$($DIET -v 2>&1 | sed '1p;d')
+           _dietlibc_ver=${_dietlibc_ver##*diet version }
+           _dietlibc_ver=${_dietlibc_ver##*dietlibc-}
+           _dietlibc_ver_maj=${_dietlibc_ver%%.*}
+           _dietlibc_ver_min=${_dietlibc_ver##*.}
+           _dietlibc_ver_min=${_dietlibc_ver_min%%[[!0-9]]*}
+           _dietlibc_cmp="$2"
+           _dietlibc_cmp_maj=${_dietlibc_cmp%%.*}
+           _dietlibc_cmp_min=${_dietlibc_cmp##*.}
+
+           ENSC_VERSION_DIETLIBC=$_dietlibc_ver_maj.$_dietlibc_ver_min
+
+           let _dietlibc_ver=_dietlibc_ver_maj*1000+_dietlibc_ver_min 2>/dev/null || _dietlibc_ver=0
+           let _dietlibc_cmp=_dietlibc_cmp_maj*1000+_dietlibc_cmp_min
+
+           test $_dietlibc_ver -ge $_dietlibc_cmp || use_dietlibc=detected_old
+       else
+           ENSC_VERSION_DIETLIBC=
+           _dietlibc_ver=-1
+        fi
+
+       ENSC_VERSION_DIETLIBC_NUM=$_dietlibc_ver
+       ensc_have_dietlibc=no
+
+       case x"$use_dietlibc" in
+           xdetected)
+               AM_CONDITIONAL($1, true)
+               AC_MSG_RESULT([yes (autodetected, $ENSC_VERSION_DIETLIBC)])
+               ensc_have_dietlibc=yes
+               ;;
+           xforced)
+               AM_CONDITIONAL($1, true)
+               AC_MSG_RESULT([yes (forced)])
+               ensc_have_dietlibc=yes
+               ;;
+           xdetected_no)
+               AM_CONDITIONAL($1, false)
+               AC_MSG_RESULT([no (detected)])
+               ;;
+           xdetected_old)
+               AM_CONDITIONAL($1, false)
+               AC_MSG_RESULT([no (too old; $2+ required, $ENSC_VERSION_DIETLIBC found)])
+               ;;
+           xforced_no)
+               AM_CONDITIONAL($1, false)
+               AC_MSG_RESULT([no (forced)])
+               ;;
+           *)
+               AC_MSG_ERROR([internal error, use_dietlibc was "$use_dietlibc"])
+               ;;
+       esac
+
+       if test x"$ensc_have_dietlibc" != xno; then
+               _ENSC_DIETLIBC_C99
+       fi
+])
+
+
+dnl Usage: ENSC_DIETLIBC_SANITYCHECK
+AC_DEFUN([ENSC_DIETLIBC_SANITYCHECK],
+[
+       AC_REQUIRE([AC_CANONICAL_HOST])
+       AC_REQUIRE([ENSC_ENABLE_DIETLIBC])
+
+       if test "$host_cpu" = x86_64 -a $ENSC_VERSION_DIETLIBC_NUM -le 0027; then
+               AC_MSG_WARN([***                                                             ***])
+               AC_MSG_WARN([*** dietlibc<=0.27 is known to be broken for x86_64 systems     ***])
+               AC_MSG_WARN([*** please make sure that at least the environ.S fix is applied ***])
+               AC_MSG_WARN([*** and lib/__nice.c added                                      ***])
+               AC_MSG_WARN([***                                                             ***])
+       fi
+])
diff --git a/m4/ensc_dietlibc_compat.m4 b/m4/ensc_dietlibc_compat.m4
new file mode 100644 (file)
index 0000000..30de1c2
--- /dev/null
@@ -0,0 +1,55 @@
+dnl $Id: ensc_dietlibc_compat.m4,v 1.4 2005/04/24 20:28:23 ensc Exp $
+
+dnl Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+dnl  
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; version 2 of the License.
+dnl  
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl GNU General Public License for more details.
+dnl  
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+AC_DEFUN([ENSC_DIETLIBC_NEED_COMPAT],
+[
+       AC_REQUIRE([ENSC_ENABLE_DIETLIBC])
+       AC_REQUIRE([ENSC_SYSCALL_ALTERNATIVE])
+       AC_CACHE_CHECK([whether dietlibc needs '-lcompat'], [ensc_cv_c_dietlibc_compat],
+       [
+               AC_LANG_PUSH(C)
+               ensc_dietlibc_need_compat_old_CC=$CC
+               CC="${DIET:-diet} $CC"
+               AC_LINK_IFELSE([
+                       AC_LANG_PROGRAM([
+#include "$srcdir/lib/syscall-wrap.h"
+#include <errno.h>
+
+#define __NR_foo0              42
+#define __NR_foo1              42
+#define __NR_foo2              42
+#define __NR_foo3              42
+#define __NR_foo4              42
+#define __NR_foo5              42
+inline static _syscall0(int, foo0)
+inline static _syscall1(int, foo1, int, a)
+inline static _syscall2(int, foo2, int, a, int, b)
+inline static _syscall3(int, foo3, int, a, int, b, int, c)
+inline static _syscall4(int, foo4, int, a, int, b, int, c, int, d)
+inline static _syscall5(int, foo5, int, a, int, b, int, c, int, d, int, e)
+],
+                       [foo0(); foo1(0); foo2(0,0); foo3(0,0,0); foo4(0,0,0,0); foo5(0,0,0,0,0);])],
+                       [ensc_cv_c_dietlibc_compat=no],
+                       [ensc_cv_c_dietlibc_compat=yes])
+               CC=$ensc_dietlibc_need_compat_old_CC
+               AC_LANG_POP
+       ])
+
+       if test x"$1" != x; then
+               AM_CONDITIONAL($1, test x"$ensc_cv_c_dietlibc_compat" = xyes)
+       fi
+])
index 1bab20d..8d18bc9 100644 (file)
@@ -1,4 +1,4 @@
-dnl $Id: ensc_e2fscheck.m4,v 1.1.2.2 2004/02/19 22:56:27 ensc Exp $
+dnl $Id: ensc_e2fscheck.m4,v 1.3 2004/02/19 22:31:04 ensc Exp $
 
 dnl Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 dnl  
diff --git a/m4/ensc_initrddir.m4 b/m4/ensc_initrddir.m4
new file mode 100644 (file)
index 0000000..8d1606b
--- /dev/null
@@ -0,0 +1,39 @@
+dnl $Id: ensc_initrddir.m4,v 1.2 2005/03/09 14:42:39 ensc Exp $
+
+dnl Copyright (C) 2002 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+dnl  
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; version 2 of the License.
+dnl  
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl GNU General Public License for more details.
+dnl  
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+dnl Usage: ENSC_INITRDDIR(<variable>)
+
+AC_DEFUN([ENSC_INITRDDIR],
+[
+       AC_MSG_CHECKING([for initrddir])
+       AC_ARG_WITH([initrddir],
+                   [AC_HELP_STRING([--with-initrddir <DIR>],
+                                   [use <DIR> as directory for SysV init-files (default: $sysconfdir/init.d)])],
+                   [case "$withval" in
+                       yes|no) AC_MSG_ERROR(['$withval' is not a valid value for '--with-initrddir']);;
+                       *)      ensc_initrddir=$withval;;
+                    esac],
+                   [ensc_initrddir='$(sysconfdir)/init.d'])
+
+       if test "$1"; then
+               $1=$ensc_initrddir
+               AC_SUBST($1)
+       fi
+
+       AC_MSG_RESULT($ensc_initrddir)
+])
+               
index 3a34fcc..0020696 100644 (file)
@@ -1,4 +1,4 @@
-dnl $Id: ensc_kerneldir.m4,v 1.1.2.3 2004/03/04 03:12:34 ensc Exp $
+dnl $Id: ensc_kerneldir.m4,v 1.3 2004/02/14 01:20:35 ensc Exp $
 
 dnl Copyright (C) 2002 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 dnl  
diff --git a/m4/ensc_pathprog.m4 b/m4/ensc_pathprog.m4
new file mode 100644 (file)
index 0000000..96d345b
--- /dev/null
@@ -0,0 +1,99 @@
+dnl $Id: ensc_pathprog.m4,v 1.2 2005/02/02 14:09:28 ensc Exp $
+
+dnl Copyright (C) 2002 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+dnl  
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; version 2 of the License.
+dnl  
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl GNU General Public License for more details.
+dnl  
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+dnl Usage: ENSC_SET_SEARCHPATH(<PATH>)
+AC_DEFUN([ENSC_SET_SEARCHPATH],
+[
+       ensc_searchpath="$1"
+])
+
+dnl Usage: ENSC_PATHPROG_INIT
+AC_DEFUN([ENSC_PATHPROG_INIT],
+[
+       ENSC_PATHPROG_SED=
+       AC_SUBST([ENSC_PATHPROG_SED])
+])
+
+
+dnl Usage: ENSC_PATHPROG(<VAR>, <PROG>[, <DFLT>, <DESCR>])
+AC_DEFUN([ENSC_PATHPROG],
+[
+       AC_REQUIRE([ENSC_SET_SEARCHPATH])
+       AC_REQUIRE([ENSC_PATHPROG_INIT])
+
+       if test -z "$3"; then
+               rq=true
+       else
+               rq=false
+       fi
+
+       if $rq; then
+               ensc_dflt=
+       else
+               ensc_dflt="$3"
+       fi
+
+       AC_PATH_PROGS($1, [$2], [$ensc_dflt], [$ensc_searchpath])
+
+       if test -z "${$1}" && $rq; then
+               if test -z "$4"; then
+                       AC_MSG_ERROR([Can not find the '$2' tool within '${ensc_searchpath:-$PATH}'.])
+               else
+                       AC_MSG_ERROR([
+Can not find the '$2' tool within '${ensc_searchpath:-$PATH}'.
+$4])
+               fi
+       fi
+
+       test "${$1}" && ENSC_PATHPROG_SED="${ENSC_PATHPROG_SED}s!@'$1'@!${$1}!g;"
+
+       test "${$1}"])
+
+
+
+dnl Usage: ENSC_PATHPROG_STANDARD_TOOLS)
+AC_DEFUN([ENSC_PATHPROG_STANDARD_TOOLS],
+[
+       ENSC_PATHPROG(AWK,       awk)
+       ENSC_PATHPROG(CAT,       cat)
+       ENSC_PATHPROG(CHOWN,     chown)
+       ENSC_PATHPROG(CMP,       cmp)
+       ENSC_PATHPROG(CP,        cp)
+       ENSC_PATHPROG(DIRNAME,   dirname)
+       ENSC_PATHPROG(EGREP,     egrep)
+       ENSC_PATHPROG(ENV,       env)
+       ENSC_PATHPROG(GREP,      grep)
+       ENSC_PATHPROG(LN,        ln)
+       ENSC_PATHPROG(MKDIR,     mkdir)
+       ENSC_PATHPROG(MKFIFO,    mkfifo)
+       ENSC_PATHPROG(MKTEMP,    mktemp)
+       ENSC_PATHPROG(MOUNT,     mount)
+       ENSC_PATHPROG(MV,        mv)
+       ENSC_PATHPROG(NICE,      nice)
+       ENSC_PATHPROG(PS,        ps)
+       ENSC_PATHPROG(RM,        rm)
+       ENSC_PATHPROG(RMDIR,     rmdir)
+       ENSC_PATHPROG(SED,       sed)
+       ENSC_PATHPROG(SH,        sh)
+       ENSC_PATHPROG(TAC,       tac)
+       ENSC_PATHPROG(TAR,       tar)
+       ENSC_PATHPROG(TOUCH,     touch)
+       ENSC_PATHPROG(TTY,       tty)
+       ENSC_PATHPROG(UMOUNT,    umount)
+       ENSC_PATHPROG(WC,        wc)
+])
+       
diff --git a/m4/ensc_personality.m4 b/m4/ensc_personality.m4
new file mode 100644 (file)
index 0000000..69340e4
--- /dev/null
@@ -0,0 +1,44 @@
+dnl $Id: ensc_personality.m4,v 1.1 2005/07/15 19:40:15 ensc Exp $
+
+dnl Copyright (C) 2002 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+dnl  
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; version 2 of the License.
+dnl  
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl GNU General Public License for more details.
+dnl  
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+dnl Usage: ENSC_CHECK_PERSONALITY_FLAGS
+AC_DEFUN([ENSC_CHECK_PERSONALITY_FLAGS],
+[
+       AC_MSG_CHECKING([for declarations in <linux/personality.h>])
+       AC_MSG_RESULT([])
+
+       AC_LANG_PUSH(C)
+       AC_CHECK_DECLS([MMAP_PAGE_ZERO, ADDR_LIMIT_32BIT, SHORT_INODE,
+                       WHOLE_SECONDS, STICKY_TIMEOUTS, ADDR_LIMIT_3GB],
+                      [],[],
+                      [
+#include <linux/personality.h>
+                       ])
+
+       AC_CHECK_DECLS([PER_LINUX, PER_LINUX_32BIT, PER_SVR4, PER_SVR3,
+                        PER_SCOSVR3, PER_OSR5, PER_WYSEV386, PER_ISCR4,
+                       PER_BSD, PER_SUNOS, PER_XENIX, PER_LINUX32,
+                       PER_LINUX32_3GB, PER_IRIX32, PER_IRIXN32,
+                       PER_IRIX64, PER_RISCOS, PER_SOLARIS, PER_UW7,
+                       PER_HPUX, PER_OSF4],
+                      [], [],
+                      [
+#include <linux/personality.h>
+                       ])
+       AC_LANG_POP
+])
+
diff --git a/m4/ensc_release.m4 b/m4/ensc_release.m4
new file mode 100644 (file)
index 0000000..387e111
--- /dev/null
@@ -0,0 +1,43 @@
+dnl $Id: ensc_release.m4,v 1.2 2003/12/26 00:22:49 uid68581 Exp $
+
+dnl Copyright (C) 2002 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+dnl  
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; version 2 of the License.
+dnl  
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl GNU General Public License for more details.
+dnl  
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+dnl Usage: ENSC_RELEASE(<cppflag-variable>)
+dnl        <cppflag-variable> ... name of variable which will get the preprocessor
+dnl                               flags and which will be AC_SUBST'ed
+
+AC_DEFUN([ENSC_RELEASE],
+[
+       AC_MSG_CHECKING([whether to enable release-mode])
+       AC_ARG_ENABLE([release],
+                     [AC_HELP_STRING([--enable-release],
+                                     [enable release mode (default: no)])],
+                     [case "$enableval" in
+                         yes)  ensc_release_mode=yes;;
+                         no)   ensc_release_mode=no;;
+                         *)    AC_MSG_ERROR(['$enableval' is not a valid value for '--enable-release']);;
+                      esac],
+                     [ ensc_release_mode=no ])
+
+       if test x"$ensc_release_mode" = xno; then
+               $1=
+       else
+               $1='-DNDEBUG'
+       fi
+
+       AC_SUBST($1)
+       AC_MSG_RESULT($ensc_release_mode)
+])
index 4994120..641812d 100644 (file)
@@ -1,4 +1,4 @@
-dnl $Id: ensc_syscall.m4,v 1.2.2.2 2004/03/04 03:12:34 ensc Exp $
+dnl $Id: ensc_syscall.m4,v 1.6 2005/05/19 18:04:12 ensc Exp $
 
 dnl Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 dnl  
@@ -17,9 +17,31 @@ dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
 dnl Usage: ENSC_SYSCALL
 
+AC_DEFUN([ENSC_SYSCALL_ALTERNATIVE],
+[
+       AC_MSG_CHECKING([whether to use alternative _syscallX macros])
+       AC_ARG_ENABLE([alternative-syscalls],
+                     [AC_HELP_STRING([--disable-alternative-syscalls],
+                                     [do not use the alternative _syscallX macros
+                                      provided by Herbert Poetzl (default: use them)])],
+                     [case $enableval in
+                          (yes|no)   ensc_use_alternative_syscall_macros=$enableval;;
+                          (*)        AC_MSG_ERROR(['$enableval' is not a valid value for '--disable-alternative-syscalls']);;
+                      esac],
+                      [ensc_use_alternative_syscall_macros=yes])
+
+       case $ensc_use_alternative_syscall_macros in
+               (yes)   AC_DEFINE(ENSC_USE_ALTERNATIVE_SYSCALL_MACROS, 1, [Use alternative _syscallX macros]);;
+       esac
+
+       AC_MSG_RESULT([$ensc_use_alternative_syscall_macros])
+])
+
 AC_DEFUN([ENSC_SYSCALL],
 [
        AC_REQUIRE([ENSC_KERNEL_HEADERS])
+       AC_REQUIRE([ENSC_SYSCALL_ALTERNATIVE])
+
         AC_MSG_CHECKING([for syscall(2) invocation method])
         AC_ARG_WITH([syscall],
                    [AC_HELP_STRING([--with-syscall=METHOD],
@@ -29,14 +51,14 @@ AC_DEFUN([ENSC_SYSCALL],
         AC_MSG_RESULT([$with_syscall])
         
         case x"$with_syscall" in
-            xauto)
+            (xauto)
                AC_CACHE_CHECK([which syscall(2) invocation works], [ensc_cv_test_syscall],
                               [
                                AC_LANG_PUSH(C)
-                               AC_COMPILE_IFELSE([
-#include <asm/unistd.h>
-#include <syscall.h>
+                               AC_COMPILE_IFELSE(AC_LANG_SOURCE([
+#include "$srcdir/lib/syscall-wrap.h"
 #include <errno.h>
+
 #define __NR_foo0      300
 #define __NR_foo1      301
 #define __NR_foo2      302
@@ -58,7 +80,7 @@ int main() {
          foo4(1,2,3,4) || \
         foo5(1,2,3,4,5);
 }
-                               ],
+                               ]),
                                [ensc_cv_test_syscall=fast],
                                [ensc_cv_test_syscall=traditional])
 
@@ -66,13 +88,17 @@ int main() {
                ])
                with_syscall=$ensc_cv_test_syscall
                ;;
-            xfast|xtraditional)
+            (xfast|xtraditional)
                ;;
             *)
                AC_MSG_ERROR(['$with_syscall' is not a valid value for '--with-syscall'])
                ;;
         esac
 
+       if test x"$with_syscall $ensc_use_alternative_syscall_macros" = 'xfast yes'; then
+           with_syscall='alternative'
+        fi
+
         if test x"$with_syscall" = xtraditional; then
             AC_DEFINE(ENSC_SYSCALL_TRADITIONAL,  1, [Define to 1 when the fast syscall(2) invocation does not work])
         fi
index ff01d04..868ca38 100644 (file)
@@ -1,4 +1,4 @@
-dnl $Id: ensc_syscallnr.m4,v 1.1.2.5 2004/03/09 04:16:21 ensc Exp $
+dnl $Id: ensc_syscallnr.m4,v 1.6 2004/03/08 19:55:28 ensc Exp $
 
 dnl Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 dnl  
index 000d2f9..cbf365c 100644 (file)
@@ -1,4 +1,4 @@
-dnl $Id: ensc_uv_vrootdir.m4,v 1.1.2.2 2004/01/26 18:21:28 ensc Exp $
+dnl $Id: ensc_uv_vrootdir.m4,v 1.2 2003/12/26 00:22:49 uid68581 Exp $
 
 dnl Copyright (C) 2002 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 dnl  
index bad1a9c..76ab2de 100644 (file)
@@ -1,4 +1,4 @@
-## $Id: gpgsig.am,v 1.1 2003/09/29 22:01:57 ensc Exp $
+## $Id: gpgsig.am,v 1.2 2004/05/21 15:46:40 ensc Exp $
 
 ## Copyright (C) 2002 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 ##  
@@ -16,4 +16,5 @@
 ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
 gpgsig:
-                       gpg --armor --detach-sign $(distdir).tar.bz2
+                       gpgkey=$(GPG_KEY); \
+                       gpg $${gpgkey:+--default-key "$$gpgkey"} --armor --detach-sign $(distdir).tar.bz2
diff --git a/m4/install-notify.am b/m4/install-notify.am
new file mode 100644 (file)
index 0000000..41ae8b9
--- /dev/null
@@ -0,0 +1,36 @@
+## $Id: install-notify.am,v 1.2 2005/05/05 09:17:41 ensc Exp $
+
+## Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+##  
+## 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; version 2 of the License.
+##  
+## 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.
+
+install-exec-hook install-data-hook:   install-notify-xtra
+
+
+install-notify-xtra:
+               @echo
+               @echo
+               @echo '***************************'
+               @echo '*'
+               @echo '* NOTE: a plain "make install" installs only the files under $$(prefix)'
+               @echo '*       which might be insufficient. To complete the installation,'
+               @echo '*       "make install-distribution" should be executed. See README,'
+               @echo '*       "Notes for distributors" for details.'
+               @echo '*'
+               @echo '***************************'
+               @echo
+               @echo
+
+
+.PHONY:                        install-notify-xtra
diff --git a/m4/libsel.am b/m4/libsel.am
new file mode 100644 (file)
index 0000000..7028752
--- /dev/null
@@ -0,0 +1,43 @@
+## $Id: libsel.am,v 1.1 2005/04/10 00:53:56 ensc Exp $
+
+## Copyright (C) 2002,2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+##  
+## 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; version 2 of the License.
+##  
+## 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.
+##  
+
+
+if !ENSC_USE_DIETLIBC
+nodist_lib_dietlibc_not_enabled_error_a_SOURCES = \
+                               lib-dietlibc-not-enabled-error.c
+endif
+
+if !ENSC_USE_GLIBC
+nodist_lib_glibc_not_enabled_error_a_SOURCES = \
+                               lib-glibc-not-enabled-error.c
+endif
+
+# if !ENSC_USE_DIETLIBC
+# if !ENSC_USE_GLIBC
+# nodist_lib_nolib_enabled_error_a_SOURCES = \
+#                              lib-nolib-enabled-error.c
+# endif
+# endif
+
+
+.PHONY:                lib-glibc-not-enabled-error.a \
+               lib-glibc-not-enabled-error.c \
+               lib-dietlibc-not-enabled-error.a \
+               lib-dietlibc-not-enabled-error.c \
+               lib-nolib-enabled-error.a \
+               lib-nolib-enabled-error.c
diff --git a/m4/pkgconfig.am b/m4/pkgconfig.am
new file mode 100644 (file)
index 0000000..e17d2af
--- /dev/null
@@ -0,0 +1,55 @@
+## $Id: pkgconfig.am,v 1.1 2003/10/13 19:50:29 ensc Exp $      ---*- makefile -*---
+
+## Copyright (C) 2002 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+##  
+## 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; version 2 of the License.
+##  
+## 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.
+##  
+
+BAD_INC_PATHS          =  /usr/include|/usr/local/include
+BAD_LIB_PATHS          =  /usr/lib
+
+pkgconfdir              =  $(libdir)/pkgconfig
+pkgconf_DATA            =  $(addsuffix .pc, $(PKGCONFIG_FILES))
+
+CLEANFILES             += $(addsuffix .pc,       $(PKGCONFIG_FILES))
+EXTRA_DIST             += $(addsuffix .pc.subst, $(PKGCONFIG_FILES))
+
+
+%.pc:                  %.pc.subst Makefile
+                       rm -f $@
+                       @case '$(libdir)' in                                                    \
+                               $(BAD_LIB_PATHS))       libflags=;;                             \
+                               *)                      libflags='-L$${libdir} ';;              \
+                       esac;                                                                   \
+                       case '$(pkgincludedir)' in                                              \
+                               $(BAD_INC_PATHS))       pkgincflags=;;                          \
+                               *)                      pkgincflags='-I$${pkgincludedir} ';;    \
+                       esac;                                                                   \
+                       case '$(includedir)' in                                                 \
+                               $(BAD_INC_PATHS))       incflags=;;                             \
+                               *)                      incflags='-I$${includedir} ';;          \
+                       esac;                                                                   \
+                       sed -e 's!@'PACKAGE'@!$(PACKAGE)!g;                                     \
+                               s!@'VERSION'@!$(VERSION)!g;                                     \
+                               s!@'prefix'@!$(prefix)!g;                                       \
+                               s!@'exec_prefix'@!$(exec_prefix)!g;                             \
+                               s!@'libdir'@!$(libdir)!g;                                       \
+                               s!@'includedir'@!$(includedir)!g;                               \
+                               s!@'libflags"@!$${libflags}$(pkgconf_LIBFLAGS)!g;"'             \
+                               s!@'incflags"@!$${incflags}$(pkgconf_INCFLAGS)!g;"'             \
+                               s!@'pkgincflags"@!$${pkgincflags}$(pkgconf_PKGINCFLAGS)!g;"'    \
+                               s!@'pkgincludedir'@!$(pkgincludedir)!g'                         \
+                        $< >$@
+                       test -z "$(CHMOD_REFERENCE)" || $(CHMOD_REFERENCE) '$<' '$@'
+                       chmod a-w $@
index 8436f62..6373194 100644 (file)
@@ -1,4 +1,4 @@
-## $Id: validate.am,v 1.1.4.2 2004/03/04 03:12:34 ensc Exp $   ---*- makefile -*---
+## $Id: validate.am,v 1.3 2004/01/14 00:01:15 ensc Exp $       ---*- makefile -*---
 
 ## Copyright (C) 2002 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 ##  
index 32816db..ddcca29 100644 (file)
@@ -1,4 +1,4 @@
-## $Id: Makefile-files,v 1.1.4.1 2003/10/30 01:34:24 ensc Exp $  -*- makefile -*-
+## $Id: Makefile-files,v 1.4 2004/03/10 02:30:34 ensc Exp $  -*- makefile -*-
 
 ## Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 ##  
 ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 ##  
 
-man_DATMAN             =  man/chbind.8 \
+man_pages              =  man/chbind.8 \
                           man/chcontext.8 \
                           man/distrib-info.8 \
                           man/rebootmgr.8 \
                           man/reducecap.8 \
                           man/vps.8 \
                           man/vpstree.8 \
-                          man/vrpm.8 \
                           man/vserver-copy.8 \
                           man/vserver-stat.8 \
                           man/vserver.8 \
                           man/vtop.8
+
+man_MANS +=            $(man_pages)
+EXTRA_DIST +=          $(man_pages)
diff --git a/missing b/missing
index e7ef83a..09edd88 100755 (executable)
--- a/missing
+++ b/missing
@@ -1,9 +1,9 @@
 #! /bin/sh
 # Common stub for a few missing GNU programs while installing.
 
-scriptversion=2003-09-02.23
+scriptversion=2005-02-08.22
 
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003 
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
 #   Free Software Foundation, Inc.
 # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
 
@@ -60,11 +60,6 @@ case "$1" in
     msg="probably too old"
   fi
   ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case "$1" in
 
   -h|--h|--he|--hel|--help)
     echo "\
@@ -92,10 +87,12 @@ Supported PROGRAM values:
   yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
 
 Send bug reports to <bug-automake@gnu.org>."
+    exit $?
     ;;
 
   -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
     echo "missing $scriptversion (GNU Automake)"
+    exit $?
     ;;
 
   -*)
@@ -104,12 +101,42 @@ Send bug reports to <bug-automake@gnu.org>."
     exit 1
     ;;
 
-  aclocal*)
+esac
+
+# Now exit if we have it, but it failed.  Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).
+case "$1" in
+  lex|yacc)
+    # Not GNU programs, they don't have --version.
+    ;;
+
+  tar)
+    if test -n "$run"; then
+       echo 1>&2 "ERROR: \`tar' requires --run"
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       exit 1
+    fi
+    ;;
+
+  *)
     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
        # We have it, but it failed.
        exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       # Could not run --version or --help.  This is probably someone
+       # running `$TOOL --version' or `$TOOL --help' to check whether
+       # $TOOL exists and not knowing $TOOL uses missing.
+       exit 1
     fi
+    ;;
+esac
 
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case "$1" in
+  aclocal*)
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
          you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
@@ -119,11 +146,6 @@ WARNING: \`$1' is $msg.  You should only need it if
     ;;
 
   autoconf)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    fi
-
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
          you modified \`${configure_ac}'.  You might want to install the
@@ -133,11 +155,6 @@ WARNING: \`$1' is $msg.  You should only need it if
     ;;
 
   autoheader)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    fi
-
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
          you modified \`acconfig.h' or \`${configure_ac}'.  You might want
@@ -157,11 +174,6 @@ WARNING: \`$1' is $msg.  You should only need it if
     ;;
 
   automake*)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    fi
-
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
          you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
@@ -173,11 +185,6 @@ WARNING: \`$1' is $msg.  You should only need it if
     ;;
 
   autom4te)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    fi
-
     echo 1>&2 "\
 WARNING: \`$1' is needed, but is $msg.
          You might have modified some files without having the
@@ -254,11 +261,6 @@ WARNING: \`$1' is $msg.  You should only need it if
     ;;
 
   help2man)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    fi
-
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
         you modified a dependency of a manual page.  You may need the
@@ -279,11 +281,6 @@ WARNING: \`$1' is $msg.  You should only need it if
     ;;
 
   makeinfo)
-    if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
-       # We have makeinfo, but it failed.
-       exit 1
-    fi
-
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
          you modified a \`.texi' or \`.texinfo' file, or any other file
@@ -291,20 +288,20 @@ WARNING: \`$1' is $msg.  You should only need it if
          call might also be the consequence of using a buggy \`make' (AIX,
          DU, IRIX).  You might want to install the \`Texinfo' package or
          the \`GNU make' package.  Grab either from any GNU archive site."
+    # The file to touch is that specified with -o ...
     file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
     if test -z "$file"; then
-      file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
-      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
+      # ... or it is the one specified with @setfilename ...
+      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
+      # ... or it is derived from the source name (dir/f.texi becomes f.info)
+      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
     fi
     touch $file
     ;;
 
   tar)
     shift
-    if test -n "$run"; then
-      echo 1>&2 "ERROR: \`tar' requires --run"
-      exit 1
-    fi
 
     # We have already tried tar in the generic part.
     # Look for gnutar/gtar before invocation to avoid ugly error
diff --git a/pathconfig.h.pathsubst b/pathconfig.h.pathsubst
new file mode 100644 (file)
index 0000000..8e0f72b
--- /dev/null
@@ -0,0 +1,52 @@
+// $Id: pathconfig.h.pathsubst,v 1.11 2004/08/19 14:06:59 ensc Exp $    --*- c++ -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_PATHCONFIG_H
+#define H_UTIL_VSERVER_PATHCONFIG_H
+
+#define PKGLIBDIR              "@PKGLIBDIR@"
+#define SBINDIR                        "@SBINDIR@"
+#define CONFDIR                        "@CONFDIR@"
+#define SYSCONFDIR             "@SYSCONFDIR@"
+#define LOCKDIR                        "/var/lock"
+#define PKGLIBDEFAULTDIR       PKGLIBDIR "/defaults"
+
+#define DEFAULT_VSERVERDIR     "@VSERVERDIR@"
+#define DEFAULT_VSERVERPKGDIR  "@VSERVERPKGDIR@"
+#define DEFAULT_PKGSTATEDIR    "@PKGSTATEDIR@"
+#define DEFAULT_PKGSTATEREVDIR "@PKGSTATEREVDIR@"
+
+#define MOUNT_PROG             "@MOUNT@"
+#define UMOUNT_PROG            "@UMOUNT@"
+#define PS_PROG                        "@PS@"
+
+#define VPKG_PROG              PKGLIBDIR "/vpkg"
+#define RESOLVER_PROG          PKGLIBDIR "/rpm-fake-resolver"
+
+#define PROG_IP                        "@IP@"
+#define PROG_MODPROBE          "@MODPROBE@"
+#define PROG_NAMEIF            "@NAMEIF@"
+#define PROG_VCONFIG           "@VCONFIG@"
+
+#define PROG_SECURE_MOUNT      PKGLIBDIR "/secure-mount"
+
+#define PATH_VSERVER_START     PKGLIBDIR "/vserver.start"
+#define PATH_FUNCTIONS         PKGLIBDIR "/functions"
+#define PATH_UTILVSERVER_VARS  PKGLIBDIR "/util-vserver-vars"
+
+#endif //  H_UTIL_VSERVER_PATHCONFIG_H
index cec9518..d90cf0d 100644 (file)
@@ -1,4 +1,4 @@
-## $Id: Makefile-files,v 1.1.4.3 2003/12/03 00:06:37 ensc Exp $  -*- makefile -*-
+## $Id: Makefile-files,v 1.33 2005/04/28 17:45:34 ensc Exp $  -*- makefile -*-
 
 ## Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 ##  
 ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 ##  
 
-scriptscfgdir          =  $(sbindir)
-
-scripts_src_SCRPTS     =  scripts/distrib-info \
-                          scripts/rootshell \
-                          scripts/save_s_context \
-                          scripts/vprofile \
-                          scripts/vserverkillall \
-                          scripts/vservers.grabinfo.sh \
-                          scripts/vsysvwrapper
-scripts_gen_SCRPTS     =
-
-scripts_src_LEGSCRPTS  =  scripts/vunify.sh
-scripts_gen_LEGSCRPTS  =  scripts/vkill
-
-
-scripts_src_PRGS       =  scripts/vpstree \
-                          scripts/vrpm \
-                          scripts/vserver \
-                          scripts/vserver-copy \
-                          scripts/vtop
-scripts_gen_PRGS       =  scripts/vps
-
-scripts_PRGS           =  $(scripts_src_PRGS) $(scripts_gen_PRGS)
-scripts_SCRPTS         =  $(scripts_src_SCRPTS) $(scripts_gen_SCRPTS)
-scripts_LEGSCRPTS      =  $(scripts_src_LEGSCRPTS) $(scripts_gen_LEGSCRPTS)
-scriptscfg_DATA                =  scripts/util-vserver-vars
-
-scripts_XTRAS          =  scripts/util-vserver-vars.subst \
-                          scripts/vkill.subst \
-                          scripts/vps.subst \
-                          $(scripts_src_SCRPTS) $(scripts_src_PRGS) \
-                          $(scripts_src_LEGSCRPTS)
-
-scripts_GENSCRPTS      =  scripts/util-vserver-vars \
-                          $(scripts_gen_SCRPTS) $(scripts_gen_PRGS) \
-                          $(scripts_gen_LEGSCRPTS)
-
-scripts/%:             scripts/%.subst
-                       @mkdir -p $$(dirname '$@')
-                       sed -e 's!@'PKGLIBDIR'@!$(pkglibdir)!g; \
-                               s!@'SBINDIR'@!$(sbindir)!g; \
-                               s!@'VSERVERDIR'@!$(vserverdir)!g' '$<' >'$@.tmp'
-                       @-chmod --reference='$<' '$@.tmp'
-                       @-rm -f '$@'
-                       mv '$@.tmp' '$@'
-                       @chmod a-w '$@'
+AM_INSTALLCHECK_STD_OPTIONS_EXEMPT += \
+                               scripts/vapt-get-worker \
+                               scripts/vrpm-worker \
+                               scripts/vyum-worker \
+                               scripts/vrpm-preload \
+                               scripts/save_s_context \
+                               scripts/vservers.grabinfo.sh \
+                               scripts/vpstree \
+                               scripts/vserver-wrapper \
+                               scripts/vsysvwrapper \
+                               scripts/vtop \
+                               scripts/legacy/distrib-info \
+                               scripts/legacy/vps \
+                               scripts/legacy/save_s_context \
+                               scripts/legacy/vserver \
+                               scripts/legacy/rootshell \
+                               scripts/legacy/vserver-copy \
+                               scripts/legacy/vserverkillall
+
+
+scripts_pkglib_src_DTA =       scripts/functions \
+                               scripts/vserver-build.apt-rpm \
+                               scripts/vserver-build.skeleton \
+                               scripts/vserver-build.debootstrap \
+                               scripts/vserver-build.rpm \
+                               scripts/vserver-build.yum \
+                               scripts/vserver-build.functions \
+                               scripts/vserver-build.functions.apt \
+                               scripts/vserver-build.functions.rpm \
+                               scripts/vserver-build.functions.pkgmgmt \
+                               scripts/vserver-build.functions.yum \
+                               scripts/vserver-setup.functions \
+                               scripts/vserver.functions \
+                               scripts/vserver.start \
+                               scripts/vserver.stop \
+                               scripts/vserver.suexec
+
+scripts_pkglib_gen_DTA =       scripts/util-vserver-vars
+
+scripts_pkglib_src_SCRPTS =    scripts/pkgmgmt \
+                               scripts/vapt-get-worker \
+                               scripts/vpkg \
+                               scripts/vrpm-worker \
+                               scripts/vrpm-preload \
+                               scripts/start-vservers \
+                               scripts/vprocunhide \
+                               scripts/vserver-build \
+                               scripts/vserver-wrapper \
+                               scripts/vservers.grabinfo.sh \
+                               scripts/vshelper \
+                               scripts/vsysvwrapper \
+                               scripts/vyum-worker
+
+scripts_legacy_src_SCRPTS =    scripts/legacy/save_s_context \
+                               scripts/legacy/vserver \
+                               scripts/legacy/rootshell \
+                               scripts/legacy/distrib-info \
+                               scripts/legacy/vserverkillall
+scripts_legacy_gen_SCRPTS =    scripts/legacy/vps
+scripts_legacy_src_PRGS =      scripts/legacy/vserver-copy
+
+scripts_sbin_src_PRGS =                scripts/chcontext \
+                               scripts/vapt-get \
+                               scripts/vpstree \
+                               scripts/vrpm \
+                               scripts/vserver \
+                               scripts/vsomething \
+                               scripts/vtop \
+                               scripts/vyum
+
+scripts_sbin_gen_PRGS =
+scripts_sbincfg_gen_DTA =
+
+scripts_subst_SRCS =           scripts/util-vserver-vars.pathsubst \
+                               scripts/legacy/vps.pathsubst
+
+
+
+sbin_SCRIPTS +=                        $(scripts_sbin_src_PRGS) $(scripts_sbin_gen_PRGS) \
+                               $(scripts_legacy_src_PRGS)
+scripts_sbincfg_DTA =          $(scripts_sbincfg_gen_DTA)
+pkglib_SCRIPTS +=              $(scripts_pkglib_src_SCRPTS)
+legacy_SCRIPTS +=              $(scripts_legacy_src_SCRPTS) $(scripts_legacy_gen_SCRPTS)
+pkglib_DATA +=                 $(scripts_pkglib_src_DTA) $(scripts_pkglib_gen_DTA)
+
+CLEANFILES +=                  $(scripts_pkglib_gen_DTA) \
+                               $(scripts_sbin_gen_PRGS) \
+                               $(scripts_sbincfg_gen_DTA) \
+                               $(scripts_legacy_gen_SCRPTS)
+
+EXTRA_DIST +=                  $(scripts_pkglib_src_DTA) \
+                               $(scripts_pkglib_src_SCRPTS) \
+                               $(scripts_legacy_src_SCRPTS) \
+                               $(scripts_legacy_src_PRGS) \
+                               $(scripts_sbin_src_PRGS) \
+                               $(scripts_subst_SRCS)
+
+scripts/util-vserver-vars:     scripts/.util-vserver-vars.pathsubst.stamp
+scripts/legacy/vps:            scripts/legacy/.vps.pathsubst.stamp
diff --git a/scripts/chcontext b/scripts/chcontext
new file mode 100755 (executable)
index 0000000..bfe2d51
--- /dev/null
@@ -0,0 +1,176 @@
+#! /bin/bash
+# $Id: chcontext,v 1.19 2005/04/08 19:14:47 ensc Exp $
+
+# Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
+test -e "$UTIL_VSERVER_VARS" || {
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
+    exit 1
+}
+. "$UTIL_VSERVER_VARS"
+. "$_LIB_FUNCTIONS"
+
+function showHelp()
+{
+    echo \
+$"Usage: /usr/sbin/chcontext [--cap [!]<cap_name>] [--secure] [--xid <num>] [--disconnect]
+       [--domainname <name>] [--hostname <name>] [--flag <flags>+]
+       [--silent] [--] command arguments ...
+
+chcontext allocate a new security context and executes
+a command in that context.
+By default, a new/unused context is allocated
+
+--cap CAP_NAME
+    Add a capability from the command. This option may be
+    repeated several time.
+    See /usr/include/linux/capability.h
+    In general, this option is used with the --secure option
+    --secure removes most critical capabilities and --cap
+    adds specific ones.
+
+--cap !CAP_NAME
+    Remove a capability from the command. This option may be
+    repeated several time.
+    See /usr/include/linux/capability.h
+
+--xid num
+    Select the context. On root in context 0 is allowed to
+    select a specific context.
+    Context number 1 is special. It can see all processes
+    in any contexts, but can't kill them though.
+    Option --xid may be repeated several times to specify up to 16 contexts.
+--disconnect
+    Start the command in background and make the process
+    a child of process 1.
+--domainname new_domainname
+    Set the domainname (NIS) in the new security context.
+    Use "none" to unset the domain name.
+--flag
+    Set one flag in the new or current security context. The following
+    flags are supported. The option may be used several time.
+
+        fakeinit: The new process will believe it is process number 1.
+                  Useful to run a real /sbin/init in a vserver.
+        lock:     The new process is trapped and can't use chcontext anymore.
+        sched:    The new process and its children will share a common 
+                  execution priority.
+        nproc:    Limit the number of process in the vserver according to
+                  ulimit setting. Normally, ulimit is a per user thing.
+                  With this flag, it becomes a per vserver thing.
+        private:  No one can join this security context once created.
+        ulimit:   Apply the current ulimit to the whole context
+--hostname new_hostname
+    Set the hostname in the new security context
+    This is need because if you create a less privileged
+    security context, it may be unable to change its hostname
+--secure
+    Remove all the capabilities to make a virtual server trustable
+--silent
+    Do not print the allocated context number.
+
+Report bugs to <$PACKAGE_BUGREPORT>."
+    exit $1
+}
+
+function showVersion()
+{
+    echo \
+$"chcontext $PACKAGE_VERSION -- allocates/enters a security context
+This program is part of $PACKAGE_STRING
+
+Copyright (C) 2004 Enrico Scholz
+This program is free software; you may redistribute it under the terms of
+the GNU General Public License.  This program has absolutely no warranty."
+    exit $1
+}
+
+$_VSERVER_INFO - FEATURE migrate || exec $_CHCONTEXT_COMPAT "$@"
+
+tmp=$(getopt -o + --long cap:,ctx:,xid:,disconnect,domainname:,flag:,hostname:,secure,silent,help,version -n "$0" -- "$@") || exit 1
+eval set -- "$tmp"
+
+OPT_CAPS=()
+OPT_CTX=
+OPT_DISCONNECT=
+OPT_FLAGS=()
+OPT_SECURE=
+OPT_SILENT=
+OPT_INITPID=
+
+while true; do
+    case "$1" in
+       --help)         showHelp $0 ;;
+       --version)      showVersion ;;
+       --cap)          OPT_CAPS=( "${OPT_CAPS[@]}" "$2" ); shift;;
+       --ctx|--xid)    OPT_CTX=$2; shift;;
+       --disconnect)   OPT_DISCONNECT=1;;
+       --domainname)   OPT_DOMAINNAME=$2; shift;;
+       --hostname)     OPT_HOSTNAME=$2;   shift;;
+       --flag)
+           test "$2" != "fakeinit" || OPT_INITPID=--initpid
+           OPT_FLAGS=( "${OPT_FLAGS[@]}" "$2" )
+           shift
+           ;;
+       --secure)       OPT_SECURE=1;;
+       --silent)       OPT_SILENT=1;;
+       --)             shift; break;;
+       *)              echo $"chcontext: internal error; arg=='$1'" >&2; exit 1;;
+    esac
+    shift
+done
+
+create_cmd=( $_VCONTEXT --create --silentexist
+            ${OPT_SILENT:+--silent}
+            ${OPT_CTX:+--xid "$OPT_CTX"} )
+
+chain_cmd=()
+
+old_IFS=$IFS
+IFS=,$IFS
+
+test -z "$OPT_DOMAINNAME$OPT_HOSTNAME" || \
+    chain_cmd=( "${chain_cmd[@]}"
+               --
+               $_VUNAME --set --xid self
+               ${OPT_DOMAINNAME:+-t domainname="$OPT_DOMAINNAME"}
+               ${OPT_HOSTNAME:+  -t nodename="$OPT_HOSTNAME"} )
+
+chain_cmd=( "${chain_cmd[@]}"
+               --
+               $_VATTRIBUTE --set
+               ${OPT_CAPS:+--bcap "${OPT_CAPS[*]}"}
+               ${OPT_FLAGS:+--flag "${OPT_FLAGS[*]}"}
+               ${OPT_SECURE:+--secure} )
+               
+migrate_cmd=( $_VCONTEXT
+             ${OPT_SILENT:+--silent}
+             ${OPT_DISCONNECT:+--disconnect}
+             $OPT_INITPID )
+
+IFS=$old_IFS
+
+if test -z "$OPT_CTX" || $_VSERVER_INFO -q "$OPT_CTX" XIDTYPE static; then
+    "${create_cmd[@]}" "${chain_cmd[@]}" -- \
+       "${migrate_cmd[@]}" --endsetup --migrate-self -- "$@"
+    rc=$?
+else
+    rc=254
+fi
+
+test "$rc" -ne 254 || exec "${migrate_cmd[@]}" --xid "$OPT_CTX" --migrate -- "$@"
+exit $rc
diff --git a/scripts/functions b/scripts/functions
new file mode 100644 (file)
index 0000000..a8f451d
--- /dev/null
@@ -0,0 +1,994 @@
+# $Id: functions,v 1.62 2005/07/03 17:42:49 ensc Exp $ --*- sh -*--
+
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+_VS_LOGFILE=
+_VS_ERRFILE=
+
+_VS_NEWLINE='
+'
+declare -r _VS_NEWLINE=${_VS_NEWLINE:0-1}
+declare -r VS_ALLVSERVERS_ARGS=all,marked,unmarked,stopped,running
+
+function findObject
+{
+    local _fo_mod=$1
+    local _fo_var=$2
+    local _fo_file=
+    local _fo_i=X
+    shift 2
+    
+    for _fo_i; do
+       test -n "$_fo_i"         || continue
+       test ! $_fo_mod "$_fo_i" || { _fo_file=$_fo_i; break; }
+    done
+
+    test -z "$_fo_i" -o -n "$_fo_file" || {
+       echo "Can not find file for '$_fo_var'; aborting"
+       exit 1
+    } >&2
+
+    eval "$_fo_var=\"$_fo_file\""
+}
+
+function findFile
+{
+    findObject -f "$@"
+}
+
+function findDir
+{
+    findObject -d "$@"
+}
+
+function findAndCopy
+{
+    local dst=$1
+    test ! -s "$dst"         || return 0
+    
+    local tmp
+    shift
+    findFile tmp "$@"
+
+    test -n "$tmp" -a -s "$tmp" || return 0
+    $_CP -af "$tmp" "$dst"
+}
+
+## Usage: isRegularFile <filename> [<mod>]
+function isRegularFile
+{
+    test ${2:--f} "$1" || return 1
+
+    case $1 in
+       (*.rpmsave|*.rpmnew|*.rpmorig|*.cfsaved*|*.~*~) return 1;;
+    esac
+
+    return 0
+}
+
+function getPhysicalDir
+{
+    ( set -P && cd "$1" && pwd )
+}
+
+## Usage: logging <message>
+function logging
+{
+    if test -n "$_VS_LOGFILE"; then
+       echo "$@" >>"$_VS_LOGFILE"
+    else
+       echo "$@"
+    fi
+}
+
+## Usage: warning <message>
+function warning
+{
+    if test -n "$_VS_ERRFILE"; then
+       echo "$@" >>"$_VS_ERRFILE"
+    else
+       echo "$@" >&2
+    fi
+}
+
+## Usage: panic <message>
+function panic
+{
+    if test -n "$_VS_ERRFILE"; then
+       echo "$@" >>"$_VS_ERRFILE"
+    else
+       echo "$@" >&2
+    fi
+
+    exit 1
+}
+
+## Usage: execute <message>
+function execute
+{
+    test -z "${DEBUG_EXEC:-}"       || echo "$@"
+    test "${DEBUG_EXEC:-}" = noexec || exec "$@"
+    exit 0
+}
+
+
+## Usage: spawn <message>
+function spawn
+{
+    test -z "${DEBUG_EXEC:-}"       || echo  "$@"
+    test "${DEBUG_EXEC:-}" = noexec || "$@"
+}
+
+## Usage: isNumber <arg>
+function isNumber
+{
+    local tmp
+    let tmp=$1+0 2>/dev/null || test -z "${1//0/}" -a -n "$1" || return 1
+    return 0
+}
+
+## Usage: hasSubstring <haystack> <needle>+
+function hasSubstring
+{
+    local pat=$1
+    local i
+    
+    shift
+
+    for i; do
+       test x"${pat/*$i*/$i}" = x"$i" || continue
+       return 0
+    done
+
+    return 1
+}
+
+## Usage: colorize <style> <command>
+function colorize
+{
+    local      style=$1
+    shift
+    
+    if ! $_TTY -s; then
+       "$@"
+    else
+       local   cfile
+       findFile cfile "$__CONFDIR"/.defaults/styles/"$style" ''
+       if test -n "$cfile"; then
+         $_CAT "$cfile"
+       else
+         case "$style" in
+           (bold)      echo -ne "\e[1m";;
+           (emph)      echo -ne "\e[34m";;
+           (info)      echo -ne "\e[0;34m";;
+           (warn*)     echo -ne "\e[1;31m";;
+           (error)     echo -ne "\e[1;33;41m";;
+           (*)         ;;
+         esac
+       fi
+           
+       "$@"
+       echo -ne "\e[m"
+    fi
+}
+
+## Usage: xtermTitle <title>
+function xtermTitle
+{
+    $_TTY -s || return 0
+    echo -ne "\e]0;$@\007"
+}
+
+_VS_LOCKS=''
+## Usage: lock <lockfile> [<timeout>]
+function lock
+{
+    local tmp=$($_MKTEMP /tmp/vserver-lock.XXXXXX)
+    $_RM -f $tmp
+    $_MKFIFO -m600 $tmp
+
+    $_LOCKFILE "$1" $tmp $2 &
+    $_GREP -q true $tmp 2>/dev/null || return 1
+    
+    _VS_LOCKS="$! $_VS_LOCKS"
+}
+
+## Usage: unlock [<num>]
+function unlock
+{
+    local num=$1
+    local i
+
+    set -- $_VS_LOCKS
+    while test "$#" -gt 0; do
+       kill -HUP "$1" >/dev/null || :
+       shift
+       test "$num" != 1 || break
+       test -z "$num"   || let --num
+    done
+    _VS_LOCKS="$@"
+}
+
+function _pkgMountBindDir()
+{
+    test "$1" != "$2" || return 0
+
+    $_MOUNT -n --bind "$1" "$2"
+}
+
+function _pkgSetVarsBase
+{
+    case "$vserver" in
+       ./*|/*)
+           if test -d "$vserver/vdir"; then
+               BASEDIR=$vserver
+               VDIR=$(getPhysicalDir "$vserver/vdir")
+               
+               PKGDIR=$BASEDIR/apps/pkgmgmt
+               test -d "$PKGDIR" || {
+                   echo "Can not find configuration-directory for package-managment tools"
+                   exit 1
+               } >&2
+               findDir EXECDIR      $PKGDIR/execdir     /
+           else
+               VDIR=$(getPhysicalDir "$vserver")
+               PKGDIR=
+           fi
+           ;;
+        *)
+           BASEDIR=$__CONFDIR/$vserver
+           test -d "$BASEDIR" || {
+               echo "Can not find configuration-directory"
+               exit 1
+           } >&2
+           
+           VDIR=$BASEDIR/vdir
+           test -d "$VDIR"   || VDIR=$__DEFAULT_VSERVERDIR/$vserver
+           VDIR=$(getPhysicalDir "$VDIR")
+           
+           PKGDIR=$BASEDIR/apps/pkgmgmt
+           test -d "$PKGDIR" || {
+               echo "Can not find configuration-directory for package-managment tools"
+               exit 1
+           } >&2
+
+           findDir EXECDIR      $PKGDIR/execdir     /
+
+           ;;
+    esac
+
+    if test -z "$WORKAROUND_106057"; then
+       _rpmdb_mntpoint=/dev
+    else
+       _rpmdb_mntpoint=/.rpmdb
+    fi
+}
+
+function _pkgSetVarsRPM
+{
+    if test -n "$PKGDIR"; then
+       findDir RPMETCDIR    $PKGDIR/rpmetc      $PKGDIR/base/rpm/etc       /etc/rpm
+       findDir RPMSTATEDIR  $PKGDIR/rpmstate    $PKGDIR/base/rpm/state
+
+       findDir RPMLIBDIR    $PKGDIR/rpmlib      /
+
+    else
+       findDir RPMETCDIR    "$VDIR"/etc/rpm     /etc/rpm
+       findDir RPMSTATEDIR  "$VDIR"/var/lib/rpm
+       RPMLIBDIR=/
+    fi
+    
+    RPMSTATEDIR=$(getPhysicalDir "$RPMSTATEDIR")
+    RPMETCDIR=$(getPhysicalDir "$RPMETCDIR")
+}
+
+function _pkgSetVarsApt
+{
+    if test -n "$PKGDIR"; then
+       findDir APTETCDIR    $PKGDIR/aptetc      $PKGDIR/base/apt/etc       /etc/apt
+       findDir APTSTATEDIR  $PKGDIR/aptstate    $PKGDIR/base/apt/state
+       findDir APTCACHEDIR  $PKGDIR/aptcache    $PKGDIR/base/apt/cache
+       findDir APTARCHIVDIR $PKGDIR/aptarchives $PKGDIR/base/apt/archives  /var/cache/apt/archives
+    else
+       findDir APTETCDIR    "$VDIR"/etc/apt            /etc/apt
+       findDir APTSTATEDIR  "$VDIR"/var/state/apt
+       findDir APTCACHEDIR  "$VDIR"/var/cache/apt
+       findDir APTARCHIVDIR "$VDIR"/var/cache/apt/archives /var/cache/apt/archives
+    fi
+
+    findFile APT_CONFIG "$APTETCDIR"/apt.conf ""
+    test -z "$APT_CONFIG" || export APT_CONFIG
+}
+
+function _pkgSetVarsYum
+{
+    if test -n "$PKGDIR"; then
+       findDir YUMETCDIR    $PKGDIR/yumetc      $PKGDIR/base/yum/etc       /etc
+       findDir YUMCACHEDIR  $PKGDIR/yumcache    $PKGDIR/base/yum/cache
+    else
+       findDir YUMETCDIR    "$VDIR"/etc         /etc
+       findDir YUMCACHEDIR  "$VDIR"/var/cache/yum
+    fi
+}
+
+
+function _pkgMountBase
+{
+    :
+}
+
+function _pkgMountApt
+{
+    :
+}
+
+function _pkgMountYum
+{
+    :
+}
+
+function _pkgMountRPM
+{
+    _pkgMountBindDir "$RPMETCDIR" /etc/rpm
+    test "$RPMLIBDIR" = "/" || _pkgMountBindDir "$RPMLIBDIR" /usr/lib/rpm
+
+    pushd "$VDIR" >/dev/null
+
+    $_SECURE_MOUNT --chroot -n --bind "$RPMSTATEDIR" "$_rpmdb_mntpoint"
+    test -z "$WORKAROUND_106057" || mount -n --bind "$RPMSTATEDIR" "$_rpmdb_mntpoint"
+
+    test -e "$VDIR"/proc/self/status || \
+       $_SECURE_MOUNT --chroot -n -t proc none /proc
+
+    popd >/dev/null
+}
+
+function _pkgSetEnvBase
+{
+    test "$EXECDIR" = "/" || {
+       PATH=$EXECDIR:$PATH
+       LD_LIBRARY_PATH=$EXECDIR${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
+    }
+
+    export PATH LD_LIBRARY_PATH
+}
+
+function _pkgSetEnvApt
+{
+    :
+}
+
+function _pkgSetEnvYum
+{
+    :
+}
+
+function _pkgSetEnvRPM
+{
+    CUR_VSERVER=$vserver
+    RPM_FAKE_NAMESPACE_MOUNTS=$_rpmdb_mntpoint
+    RPM_BINARY=$_VRPM_PRELOAD
+
+    export CUR_VSERVER RPM_FAKE_NAMESPACE_MOUNTS RPM_BINARY
+}
+
+function pkgInit
+{
+    local i
+    local vserver=$1
+    shift
+    
+    _pkgSetVarsBase
+    for i; do
+       case "$i" in
+           rpm)        _pkgSetVarsRPM;;
+           apt)        _pkgSetVarsApt;;
+           yum)        _pkgSetVarsYum;;
+           *)          echo "Unknown packaging flavor" >&2; exit 1;;
+       esac
+    done
+
+    _pkgMountBase
+    for i; do
+       case "$i" in
+           rpm)        _pkgMountRPM;;
+           apt)        _pkgMountApt;;
+           yum)        _pkgMountYum;;
+       esac
+    done
+
+    _pkgSetEnvBase
+    for i; do
+       case "$i" in
+           rpm)        _pkgSetEnvRPM;;
+           apt)        _pkgSetEnvApt;;
+           yum)        _pkgSetEnvYum;;
+       esac
+    done
+
+    _PKG_FLAVORS="$@"
+    _PKG_VSERVER=$vserver
+}
+
+function isAvoidNamespace
+{
+    local cfgdir
+
+    $_VSERVER_INFO - FEATURE namespace   || return 0
+    cfgdir=$($_VSERVER_INFO "$1" CFGDIR) || return 0
+    test ! -e "$cfgdir"/namespace        || return 1
+    test -e "$__CONFDIR"/.defaults/nonamespace -o \
+         -e "$cfgdir"/nonamespace
+}
+
+## Usage: getAllVservers <var> [<KIND>*]
+function getAllVservers
+{
+    local _ga_i
+    declare -a _ga_tmp=()
+
+    for _ga_i in $__CONFDIR/*; do
+       isRegularFile "$_ga_i" -d   || continue
+
+       test ! -e "$_ga_i"/disabled || continue
+       test   -d "$_ga_i"/vdir     || continue
+
+       local _ga_doadd=1
+       local _ga_markfile=$_ga_i/apps/init/mark
+       
+       case ${2:-ALL} in
+           (MARKED)    test   -s "$_ga_markfile" || _ga_doadd=;;
+           (UNMARKED)  test ! -s "$_ga_markfile" || _ga_doadd=;;
+           (STOPPED)   ! $_VSERVER "$_ga_i" running &>/dev/null || _ga_doadd=;;
+           (RUNNING)     $_VSERVER "$_ga_i" running &>/dev/null || _ga_doadd=;;
+           (ALL)       ;;
+           (*)         panic $"Unknown vserver tagging '$2'";;
+       esac
+
+       test -z "$_ga_doadd" || _ga_tmp=( "${_ga_tmp[@]}" "${_ga_i##$__CONFDIR/}")
+    done
+
+    eval $1='( "${_ga_tmp[@]}" )'
+}
+
+## Usage: getAllVserversByArg <var> <arg>
+function getAllVserversByArg
+{
+    local _gav_mark=
+    
+    case $2 in
+       (--all)         _gav_mark=ALL;;
+       (--marked)      _gav_mark=MARKED;;
+       (--unmarked)    _gav_mark=UNMARKED;;
+       (--stopped)     _gav_mark=STOPPED;;
+       (--running)     _gav_mark=RUNNING;;
+       (*)             return 1;;
+    esac
+
+    getAllVservers "$1" "$_gav_mark"
+}
+
+## Usage: _getProcNumberCount <ctx> <var>
+function _getProcNumberCount
+{
+    local _gp_var=$2
+    local _gp_procnr_cnt=0
+
+    # Use /proc/virtual from kernel 2.6 when possible
+    if test -d "/proc/virtual"; then
+       set -- $($_GREP '^PROC:' "/proc/virtual/$1/limit" 2>/dev/null)
+       _gp_procnr_cnt=$2
+    else
+       _gp_procnr_cnt=$($_VPS ax | $_AWK '{print $2}' | $_GREP -x "$1" | $_WC -l )
+    fi
+
+    let _gp_procnr_cnt=_gp_procnr_cnt+0
+    eval $_gp_var=\$_gp_procnr_cnt
+}
+
+## Usage: getVserverCtx <vdir> <result-varname> [<procnumber-varname> [<do-cleanup>]]
+## Returns: 0 iff vserver is running
+function getVserverStatus
+{
+    test -r "$1"/run || return 1
+
+    local _gvs_ctx
+    read _gvs_ctx <"$1"/run
+    eval "$2"=\$_gvs_ctx
+
+    test -n "$3"     || return 0
+    local _gvs_tmp
+    _getProcNumberCount "$_gvs_ctx" _gvs_tmp
+    eval "$3"=\$_gvs_tmp
+
+    if test "$_gvs_tmp" = 0; then
+       local runfile=$($_READLINK "$1/run")
+       test -z "$4" || $_RM -f "$runfile"
+       return 1
+    fi
+
+    return 0
+}
+
+## Usage: isCtxRunning <ctx>
+function isCtxRunning
+{
+    local _tmp
+    _getProcNumberCount "$1" _tmp
+    test $_tmp -gt 0
+}
+
+## Usage: isVserverRunning <vdir> [<ctx-varname>]
+function isVserverRunning
+{
+    local _ivr_ctx _ivr_procnum
+
+    getVserverStatus "$1" _ivr_ctx _ivr_procnum 1 || return 1
+    test "$_ivr_procnum" != 0                     || return 1
+    test -z "$2" || eval "$2"=\$_ivr_ctx
+    return 0
+}
+
+## Called as 'getFileValue <varname> <filename>+'
+function getFileValue
+{
+    local _gfv_var=$1
+    local _gfv_file
+    shift
+
+    findFile _gfv_file "$@" ''
+    test -n "$_gfv_file" -a -r "$_gfv_file" || return 0
+    eval read "$_gfv_var" <"$_gfv_file"
+}
+
+## Called as 'getFileArray <varname> <filename>'
+function getFileArray
+{
+    test -r "$2" || return 1
+    
+    local IFS=$_VS_NEWLINE
+    eval "$1"='( $(< "$2") )'
+}
+
+function checkComponents
+{
+    local      i
+    local      msg=$1
+    local      x_failed=
+
+    shift
+    
+    for i; do
+       local failed=
+       case "$i" in
+           (core)      test -x "$_CHBIND"           || failed=1;;
+           (build)     test -x "$_VSERVER_BUILD"    || failed=1;;
+           (sysv)      test -x "$__INITRDDIR/vserver"    || failed=1;;
+           (devel)     test -d "$__INCLUDEDIR/vserver.h" || failed=1;;
+           (*)         echo "Unknown component '$i'" >&2
+                       return false
+                       ;;
+       esac
+
+       test -z "$failed" || {
+           echo "$msg: $i"
+           x_failed=1
+       } >&2
+    done
+
+    test -z "$x_failed"
+}
+
+## Usage: isKernelAPI <ver> [<cmp-modifier>]
+function isKernelAPI
+{
+    local api
+    api=$($_VSERVER_INFO - APIVER) || api=0
+    test $[ $api ] -${2:-ge} $[ $1 ]
+}
+
+## Usage: callInNamespace <vserver> <command> <args>*
+function callInNamespace
+{
+    local ctx=
+    
+    isAvoidNamespace "$1" || \
+    ctx=$( $_VSERVER_INFO "$1" CONTEXT f ) || ctx=
+
+    shift
+    if test -n "$ctx"; then
+       $_VNAMESPACE --enter "$ctx" -- "$@"
+    else
+       "$@"
+    fi
+}
+
+## Usage: setDefaultTTY <vdir> [<fallback-tty>]
+function setDefaultTTY
+{
+    local cfgdir ttyname
+
+    cfgdir=$($_VSERVER_INFO "$1" APPDIR init) || cfgdir=
+    findObject -e ttyname \
+       ${cfgdir:+"$cfgdir"/tty} \
+       "$__CONFDIR/.defaults/apps/init/tty" \
+       $2 /dev/null
+
+    exec   <$ttyname
+    exec  &>$ttyname
+}
+
+## Usage: killContext <XID> [<SIG>]
+function killContext
+{
+    local sig=${2:-9}
+
+    #$_VKILL -s STOP   --xid "$1" 1 &>/dev/null || :
+    $_VKILL -s "$sig" --xid "$1" 1 &>/dev/null || :
+    $_VKILL -s "$sig" --xid "$1"   &>/dev/null || :
+    #$_VKILL -s "$sig" --xid "$1" 1 &>/dev/null || :
+    #$_VKILL -s CONT   --xid "$1" 1 &>/dev/null || :
+}
+
+## Usage: pkgmgmt.guessStyle <vserver> <resultvar>
+function pkgmgmt.guessStyle()
+{
+    local _pgs_vdir
+    _pgs_vdir=$($_VSERVER_INFO "$1" VDIR) || {
+       echo $"Can not determine vserver-root" >&2
+       return 1
+    }
+    local _pgs_cfgdir=$($_VSERVER_INFO "$1" APPDIR pkgmgmt) || :
+
+    if test -n "$_pgs_cfgdir" -a -e "$_pgs_cfgdir"/style; then
+       read style <"$_pgs_cfgdir"/style
+    elif test -e "$_pgs_vdir"/etc/redhat-release -o -e "$_pgs_vdir"/etc/fedora-release; then
+       style=redhat
+    elif test -e "$_pgs_vdir"/etc/mandrake-release; then
+       style=mandrake
+    elif test -e "$_pgs_vdir"/etc/debian_version; then
+       style=debian
+    elif test -e "$_pgs_vdir"/etc/SuSE-release; then
+       style=suse
+    else
+       echo $"Can not determine packagemanagement style" >&2
+       return 1
+    fi
+
+    eval $2=\$style
+    return 0
+}
+
+## Usage: pkgmgmt.isInternal <vserver>
+## returns true iff <vserver> is configured for internal packagemanagement
+## A typical application is
+## | is_external=
+## | pkgmgmt.isInternal "$vserver" || is_external=1
+function pkgmgmt.isInternal
+{
+    local cfgdir=$($_VSERVER_INFO "$1" APPDIR pkgmgmt) || :
+
+    test -z "$cfgdir" -o ! -d "$cfgdir" -o -e "$cfgdir"/internal
+}
+
+## Usage: pkgmgmt.isAptAvailable <cfgdir> <vdir> [<is-internal>]
+function pkgmgmt.isAptAvailable
+{
+    local cfgdir="$1"
+    local vdir="$2"
+    local is_internal="$3"
+    
+    local have_apt i
+    if test -n "$is_internal"; then
+       have_apt=1
+       test -d "$cfgdir"/base/apt -o -d "$cfgdir"/aptetc || have_apt=
+    else
+       have_apt=
+       for i in /bin /usr/bin /usr/local/bin; do
+           test ! -x "$vdir$i"/apt-get || { have_apt=1; break; }
+       done
+    fi
+
+    test -n "$have_apt" && return 0 || return 1
+}
+
+## Usage: pkgmgmt.isYumAvailable <cfgdir> <vdir> [<is-internal>]
+function pkgmgmt.isYumAvailable
+{
+    local cfgdir="$1"
+    local vdir="$2"
+    local is_internal="$3"
+    
+    local have_yum i
+    if test -n "$is_internal"; then
+       have_yum=1
+       test -d "$cfgdir"/base/yum -o -d "$cfgdir"/yumetc || have_yum=
+    else
+       have_yum=
+       for i in /bin /usr/bin /usr/local/bin; do
+           test ! -x "$vdir$i"/yum || { have_yum=1; break; }
+       done
+    fi
+
+    test -n "$have_yum" && return 0 || return 1
+}
+
+
+function vshelper.doSanityCheck
+{
+    local vshelper this_xid i
+    declare -a warnings=()
+    local solution_disable=
+    local solution_sysctl=
+
+    vshelper.isEnabled && vshelper.isEnabled warning || return 0
+    
+    this_xid=$($_VSERVER_INFO - XID) ||
+       panic $"Failed to determine current context; aborting..."
+
+    ## Do nothing in other xid's; the helper will be executed in xid 0 only
+    test "$this_xid" = 0 || return 0
+
+    local proc_file=/proc/sys/kernel/vshelper
+
+    if ! test -r "$proc_file"; then
+       vshelper=
+       warnings=( "${warnings[@]}"
+                  $"File '$proc_file' does not exist but is required for vshelper setup" )
+        solution_disable=1
+    else
+       vshelper=$(cat "$proc_file")
+
+       $_CMP -s "$vshelper" "$_VSHELPER" || {
+           warnings=( "${warnings[@]}"
+                      $"The configured vshelper '$vshelper' does not match the 'vshelper'
+  script of the util-vserver package"
+                    )
+           solution_disable=1
+           solution_sysctl=1
+       }
+    fi
+
+    test -d "$__VSHELPERSTATEDIR" || {
+       warnings=( "${warnings[@]}"
+                  $"\
+The vshelper state-directory '$__VSHELPERSTATEDIR' does not exist; since
+it is created by 'make install', this indicates a serious problem with
+your util-vserver installation" )
+       solution_disable=1
+    }
+
+    test "${#warnings[@]}" -eq 0 || {
+       warning $"\
+The following problem(s) were encountered while verifying vshelper
+functionality:"
+
+       for i in "${warnings[@]}"; do
+           warning "* $i"
+       done
+
+       warning $"\
+       
+To fix this, you can:"
+
+       test -z "$solution_disable" || warning $"\
+* disable vshelper entirely by executing
+  | touch \"$__CONFDIR/.defaults/apps/vshelper/disabled\"
+* disable only this message by executing
+  | touch \"$__CONFDIR/.defaults/apps/vshelper/warning-disabled\""
+
+       test -x "$solution_sysctl" || warning $"\
+* configure the util-vserver vshelper script, e.g. by adding
+  | kernel.vshelper = $_VSHELPER
+  to /etc/sysctl.conf and rebooting the machine, or by executing
+  | echo \"$_VSHELPER\" >$proc_file"
+
+       warning ""
+
+       return 1
+    }
+
+    return 0
+}
+
+## Usage: vshelper.isEnabled [<style>] [<vserver>]
+function vshelper.isEnabled
+{
+    local f=${1:+$1-}disabled
+    test ! -e "$__CONFDIR"/.defaults/apps/vshelper/"$f"     || return 1
+    $_VSERVER_INFO - FEATURE vshelper                       || return 1
+    if test -n "$2"; then
+       local appdir
+       appdir=$($_VSERVER_INFO "$2" APPDIR vshelper)       || return 0
+       test -z "$2" -o ! -e "$appdir/$f"                   || return 1
+    fi
+
+    return 0
+}
+
+## Usage: vshelper.isDebug [<vserver>]
+function vshelper.isDebug
+{
+    test ! -e "$__CONFDIR"/.defaults/apps/vshelper/debug    || return 0
+    $_VSERVER_INFO - FEATURE vshelper                       || return 1
+    if test -n "$1"; then
+       local appdir
+       appdir=$($_VSERVER_INFO "$1" APPDIR vshelper)       || return 1
+       test ! -e "$appdir/debug"                           || return 0
+    fi
+
+    return 1
+}
+
+function vshelper._getHandlerInternal
+{
+    local _vghi_var=$1
+    local _vghi_tmp
+    shift
+    shift      ## HACK: see below the note about the 'set -u' mode
+    
+    while test "$#" -ge 2; do
+       local _vghi_mod=$1
+       local _vghi_obj=$2
+       shift 2
+
+       test "$_vghi_mod" "$_vghi_obj" || continue
+       case "$_vghi_mod" in
+           (-x)
+               eval $_vghi_var=\$_vghi_obj
+               ;;
+           (-e)
+               read _vghi_tmp <"$_vghi_obj"
+               eval $_vghi_var=:\$_vghi_tmp
+               ;;
+           (*) panic $"Internal error, unexpected modifier '$_vghi_mod'"
+       esac
+       return 0
+    done
+    
+    return 1
+}
+
+## Usage: vshelper.getHandler <result-var> <vserver> <action>
+function vshelper.getHandler
+{
+    local _vgh_appdir
+    _vgh_appdir=$($_VSERVER_INFO "$2" APPDIR vshelper) || _vgh_appdir=
+
+    declare -a _vgh_search_list=( X )
+    ## HACK: when we are in 'set -u' mode, empty lists are causing errors
+
+    test -z "$_vgh_appdir" || _vgh_search_list=( "${_vgh_search_list[@]}" -x "$_vgh_appdir/$3" )
+    test -z "$_vgh_appdir" || _vgh_search_list=( "${_vgh_search_list[@]}" -e "$_vgh_appdir/action" )
+    _vgh_search_list=( "${_vgh_search_list[@]}" -x "$__CONFDIR"/.defaults/apps/vshelper/"$3" )
+    _vgh_search_list=( "${_vgh_search_list[@]}" -e "$__CONFDIR"/.defaults/apps/vshelper/action )
+
+    ! vshelper._getHandlerInternal "$1" "${_vgh_search_list[@]}" || return 0
+    eval $1=':restart'
+}
+
+## Usage: vshelper.init <vserver> [<method> <args>*]
+function vshelper.doInit
+{
+    vshelper.isEnabled || return 0
+    
+    local xid
+    xid=$($_VSERVER_INFO "$1" CONTEXT false) && test -n "$xid" || {
+       warning $"vshelper.init: can not determine xid of vserver '$vserver'; returned value was '$xid'"
+       return 1
+    }
+
+    local f="$__VSHELPERSTATEDIR/$xid"
+    
+    set -C
+    $_RM -f "$f"
+    echo "$1" >"$f"
+    set +C
+    
+    if test -n "$2"; then
+       shift 1
+       local i
+       for i; do
+           echo "$i" 
+       done
+    else
+       echo "default"
+    fi >>"$f"
+
+    return 0
+}
+
+## Usage: vshelper.doDestroy <vserver> <xid>
+function vshelper.doDestroy
+{
+    vshelper.isEnabled || return 0
+
+    $_RM -f "$__VSHELPERSTATEDIR/$2"
+}
+
+## Usage: vshelper.initSync <vserver> <pipe-varname> [<method>]
+function vshelper.initSync
+{
+    local _vis_tmpdir
+    _vis_tmpdir=$($_MKTEMPDIR /tmp/vserver-stop.XXXXXX) || {
+       warning $"Failed to generate temporary directory for vshelper sync"
+       return 1
+    }
+
+    local _vis_fifo="$_vis_tmpdir"/pipe
+    $_MKFIFO -m700 "$_vis_fifo"
+    vshelper.doInit "$1" "${3:-sync}" "$_vis_fifo"
+    eval $2=\$_vis_fifo
+}
+
+## Usage: vshelper.getSyncTimeout <vserver> <varname>
+function vshelper.getSyncTimeout
+{
+    local _vgst_appdir _vgst_file _vgst_tmp
+    _vgst_appdir=$($_VSERVER_INFO "$1" APPDIR vshelper) || _vgst_appdir=
+
+    findFile _vgst_file ${_vgst_appdir:+"$_vgst_appdir"/sync-timeout} "$__CONFDIR"/.defaults/apps/vshelper/sync-timeout ''
+    test -n "$_vgst_file" || return 1
+    read _vgst_tmp <"$_vgst_file"
+    eval $2=\$_vgst_tmp
+}
+
+
+function _rpmFake.getCapFlags
+{
+    local ctx=$1
+    
+    if test -n "$ctx" && ! $_VSERVER_INFO - FEATURE migrate; then
+       set -- $($_CHCONTEXT_COMPAT --xid 1 \
+           $_SH -c "$_CAT /proc/[0-9]*/status | $_EGREP '^(CapBset|s_context|ctxflags)'" | \
+           $_GREP -B 1 -A 1 "^s_context: $ctx " | \
+           $_SED -e '1,3p;d' | $_AWK '{ print $2 }')
+    else
+       set --
+    fi
+
+    if test -n "$3"; then
+       RPM_FAKE_CAP=$[ ~0x$1 ]
+       RPM_FAKE_FLAGS=$3
+    else
+       RPM_FAKE_CAP=$[ ~0xd40c04ff ]
+       RPM_FAKE_FLAGS=4
+    fi
+}
+
+function rpmFake.init
+{
+    local vdir ctx
+    
+    vdir=$($_VSERVER_INFO "$1" VDIR)    || vdir="$1"
+    ctx=$($_VSERVER_INFO  "$1" CONTEXT) || ctx=
+
+    test -d "$vdir" ||
+       panic $"Can not find chroot environment at '$vdir' for '$1'"
+
+    _rpmFake.getCapFlags "$ctx"
+
+    RPM_FAKE_CHROOT=$vdir
+    RPM_FAKE_CTX=$ctx
+}
+
+function rpmFake.exec
+{
+    export RPM_FAKE_CHROOT RPM_FAKE_CTX RPM_FAKE_CAP RPM_FAKE_FLAGS
+    
+    LD_PRELOAD=$_RPM_FAKE_SO${LD_PRELOAD:+:$LD_PRELOAD} \
+       exec "$@"
+}
diff --git a/scripts/legacy/distrib-info b/scripts/legacy/distrib-info
new file mode 100755 (executable)
index 0000000..cc5b936
--- /dev/null
@@ -0,0 +1,76 @@
+#!/bin/bash
+
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+# based on distrib-info by Jacques Gelinas
+#  
+# 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, 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.
+  
+
+# This scripts knows about every possible distribution (well, it should)
+# It is passed a vserver name and a key (a command). The key represent a task.
+# It executes the command and output on stdout.
+# For example
+# distrib-info vserver1 pkgversion
+# If vserver1 is a redhat system, it executes
+# rpm -qa --queryformat "%{name}=%{version}-%{release}
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
+test -e "$UTIL_VSERVER_VARS" || {
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
+    exit 1
+}
+. "$UTIL_VSERVER_VARS"
+
+if [ "$1" = "" ] ; then
+       echo distrib-info vserver-name command [ args ... ] >&2
+       echo Commands are: >&2
+       echo dumpfiles: Shows all files owned by a package >&2
+       echo pkgversion: reports all packages and their version/release >&2
+       echo unifiles: reports all unify-able file of a package >&2
+       exit 1
+fi
+if [ "$1" = "/" ] ; then
+       DISTDIR=/
+       CHROOTCMD=
+elif [ -d "$1" ] ; then
+       DISTDIR=$1
+       CHROOTCMD="$__SBINDIR/chroot $DISTDIR"
+else
+       DISTDIR=$__DEFAULT_VSERVERDIR/$1
+       CHROOTCMD="$__SBINDIR/chroot $DISTDIR"
+fi
+KEY=$2
+shift
+shift
+if [ -f $DIRDIR/etc/redhat-release -o -f $DISTDIR/etc/mandrake-release ] ; then
+       case $KEY in
+       pkgversion)
+               $CHROOTCMD /bin/rpm -qa --queryformat "%{name}=%{version}-%{release}\n"
+               ;;
+       unifiles)
+               # We remove /etc and /var/log to make sure no special file
+               # there will be unified
+               $CHROOTCMD /bin/rpm -ql --dump $* \
+                       | $_PARSERPMDUMP /etc/
+               ;;
+       dumpfiles)
+               $CHROOTCMD /bin/rpm -ql $*
+               ;;
+       *)
+               echo unknown request $KEY >&2
+               ;;
+       esac
+else
+       echo Distribution not supported yet >&2
+fi
diff --git a/scripts/legacy/rootshell b/scripts/legacy/rootshell
new file mode 100755 (executable)
index 0000000..d0b63cc
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/sh
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+# based on rootshell by Jacques Gelinas
+#  
+# 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, 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.
+
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
+test -e "$UTIL_VSERVER_VARS" || {
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
+    exit 1
+}
+. "$UTIL_VSERVER_VARS"
+
+test "$*" || set -- --login
+exec $CHBIND --silent --ip 0.0.0.0 /bin/bash "$@"
+
diff --git a/scripts/legacy/save_s_context b/scripts/legacy/save_s_context
new file mode 100755 (executable)
index 0000000..535c14e
--- /dev/null
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+# based on save_s_context by Jacques Gelinas
+#  
+# 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, 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.
+
+if [ $# -lt 1 ] ;then
+       echo save_s_context file command
+       echo Save the security context in file and execute a command
+else
+       CTX=`grep ^s_context: /proc/self/status | sed s/s_context:// | (read a b; echo $a)`
+       CTX=`eval expr $CTX + 0`
+       echo S_CONTEXT=$CTX >$1
+       echo S_PROFILE=$PROFILE >>$1
+       shift
+       exec "$@"
+fi
+
+
diff --git a/scripts/legacy/vps.pathsubst b/scripts/legacy/vps.pathsubst
new file mode 100755 (executable)
index 0000000..e79d34d
--- /dev/null
@@ -0,0 +1,125 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+# based on vps by Krischan Jodies
+#
+# 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, 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.
+
+# Wrapper for ps. Adds security context number and name
+# to the PID column.
+#
+# (c) 2002 krischan.jodies@sernet.de
+# version 1.0
+
+# 1.1        Added error messages
+
+if ($ARGV[0] eq "--help") {
+   exec("ps @ARGV");
+   exit;
+} 
+
+
+$lockdir = "/var/run/vservers";
+
+$pid_length = 5;
+get_server_names();
+$context=get_context("self");
+
+if ($context == -1) {
+   print "Can not find my security context. Is this a ctx kernel?\n";
+   exit;
+}
+if ($context != 1) {
+   exec("@PKGLIBDIR@/chcontext-compat --silent --ctx 1 $0 @ARGV");
+   print "Can not execute chcontext\n";
+   exit; # not reached
+} 
+
+
+if (! open PS, "ps @ARGV|") {
+   print "Can not execute ps\n";
+   exit;
+}
+while (<PS>) {
+  chomp;
+  push @ps,$_;
+}
+
+$header = shift @ps;
+$header =~ /(.*)  PID(.+)/;
+$left = $1;
+$right = $2;
+$left_length  = length($left);
+print "${left}  PID CONTEXT       ${right}\n";
+foreach $line (@ps) {
+   $pid =  substr $line,$left_length,$pid_length;
+   print   substr $line,0,$left_length;
+   print "$pid";
+   $context = get_context($pid);
+   $context_name = getcontextname($context);
+   printf " %-3s %-10s",$context,$context_name;
+   print   substr $line,$left_length + $pid_length;
+   print "\n";
+   
+}
+
+exit;
+
+sub get_context
+{
+   my $pid = $_[0];
+   $pid =~ s/ //g;
+   open STATUS, "/proc/$pid/status";
+   while (<STATUS>)
+   {
+      chomp;
+      if (/s_context: (\d+)/) {
+         close STATUS;   
+         return $1;
+      }
+   }
+   close STATUS;
+   return -1;
+}
+
+sub getcontextname {
+   if (exists $name{$_[0]}) {
+      return $name{$_[0]};
+   }
+   if    ($_[0] == 1) {
+      return "ALL_PROCS";
+   }
+   elsif ($_[0] == 0) {
+      return "MAIN";
+   }
+   return "UNKNOWN";
+}
+
+
+sub get_server_names 
+{
+    opendir LOCKDIR, "$lockdir";
+    while ($file=readdir(LOCKDIR)) {
+       if (-f "$lockdir/$file") {
+          open FILE, "$lockdir/$file";
+          $file =~ s/(.+)\.ctx/$1/;
+          while (<FILE>) {
+             if (/S_CONTEXT=(\d+)/) {
+                $name{$1} = $file;
+             }
+          }
+       }
+    }
+}
diff --git a/scripts/legacy/vserver b/scripts/legacy/vserver
new file mode 100755 (executable)
index 0000000..fe93fef
--- /dev/null
@@ -0,0 +1,780 @@
+#!/bin/sh
+
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+# based on vserver by Jacques Gelinas
+#  
+# 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, 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.
+
+# This is a script to control a virtual server
+
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
+test -e "$UTIL_VSERVER_VARS" || {
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
+    exit 1
+}
+. "$UTIL_VSERVER_VARS"
+
+USR_SBIN=$__SBINDIR
+USR_LIB_VSERVER=$__PKGLIBDIR
+DEFAULTPATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin
+
+vserver_mknod(){
+       mknod $1 $2 $3 $4
+       chmod $5 $1
+}
+
+mountproc()
+{
+       mkdir -p $1/proc $1/dev/pts
+       if [ ! -d $1/proc/1 ] ; then
+               mount -t proc none $1/proc
+               mount -t devpts -o gid=5,mode=0620 none $1/dev/pts
+       fi
+}
+umountproc()
+{
+       umount $1/proc 2>/dev/null
+       umount $1/dev/pts 2>/dev/null
+}
+
+# Check that the vservers parent directory has permission 000
+# This is the key to avoid chroot escape
+testperm()
+{
+       return
+       PERM=`$_SHOWPERM $__DEFAULT_VSERVERDIR/$1/..`
+       if [ "$PERM" != 000 ] ; then
+               echo
+               echo "**********************************************************"
+               echo $__DEFAULT_VSERVERDIR/$1/.. has insecure permissions.
+               echo A vserver administrator may be able to visit the root server.
+               echo To fix this, do
+               echo "  " chmod 000 $__DEFAULT_VSERVERDIR/$1/..
+               echo do it anytime you want, even if vservers are running.
+               echo "**********************************************************"
+               echo
+       fi
+}
+# Set the IP alias needed by a vserver
+ifconfig_iproot()
+{
+       if [ "$NODEV" = "" -a "$IPROOT" != "" -a "$IPROOT" != "0.0.0.0" -a "$IPROOT" != "ALL" ] ;then
+               # A vserver may have more than one IP
+               # The first alias is dev:vserver
+               # and the other are dev:vserver1,2,3 and so on
+               # An IP may hold the device. The following is valid
+               #       IPROOT="1.2.4.5 eth1:1.2.3.5"
+               #       IPROOTDEV=eth0
+               # The first IP 1.2.3.4 will go on eth0 and the other on eth1
+               # VLAN devices are also supported (eth0.231 for vlan 231)
+               SUFFIX=
+               for oneip in $IPROOT
+               do
+                       IPDEV=$IPROOTDEV
+                       MASK=$IPROOTMASK
+                       BCAST=$IPROOTBCAST
+                       # Split the device and IP if available
+                       case $oneip in
+                       *:*)
+                               eval `echo $oneip | tr : ' ' | (read dev ip; echo oneip=$ip; echo IPDEV=$dev)`
+                               ;;
+                       esac
+                       # Split the IP and the netmask if available
+                       case $oneip in
+                       */*)
+                               eval `echo $oneip | tr / ' ' | (read ip msk; echo oneip=$ip; echo MASK=$msk)`
+                               eval `$_IFSPEC "" "$oneip" "$MASK" "$BCAST"`
+                               ;;
+                       esac
+                       if [ "$IPDEV" != "" ] ; then
+                               case $IPDEV in
+                               *.*)
+                                       if [ ! -f /proc/net/vlan/$IPDEV ] ; then
+                                               /sbin/vconfig add `echo $IPDEV | tr . ' '`
+                                               # Put a dummy IP
+                                               /sbin/ifconfig $IPDEV 127.0.0.1
+                                       fi
+                                       ;;
+                               esac
+                               # Compute the default netmask, if missing
+                               eval `$_IFSPEC $IPDEV "$oneip" "$MASK" "$BCAST"`
+                               IPROOTMASK=$NETMASK
+                               IPROOTBCAST=$BCAST
+                               #echo /sbin/ifconfig $IPDEV:$1$SUFFIX $oneip netmask $IPROOTMASK broadcast $IPROOTBCAST
+                               /sbin/ifconfig $IPDEV:$1$SUFFIX $oneip netmask $IPROOTMASK broadcast $IPROOTBCAST
+                       fi
+                       if [ "$SUFFIX" = "" ] ; then
+                               SUFFIX=1
+                       else
+                               SUFFIX=`expr $SUFFIX + 1`
+                       fi
+               done
+       fi
+       if [ "$IPROOTBCAST" = "" ] ; then
+               IPROOTBCAST=255.255.255.255
+       fi
+}
+ifconfig_iproot_off()
+{
+       if [ "$NODEV" = "" -a "$IPROOT" != "" -a "$IPROOT" != "0.0.0.0" -a "$IPROOT" != "ALL"  -a "$IPROOTDEV" != "" ] ;then
+               SUFFIX=
+               for oneip in $IPROOT
+               do
+                       IPDEV=$IPROOTDEV
+                       # Split the device and IP if available
+                       case $oneip in
+                       *:*)
+                               eval `echo $oneip | tr : ' ' | (read dev ip; echo IPDEV=$dev)`
+                               ;;
+                       esac
+                       /sbin/ifconfig $IPDEV:$1$SUFFIX down 2>/dev/null
+                       if [ "$SUFFIX" = "" ] ; then
+                               SUFFIX=1
+                       else
+                               SUFFIX=`expr $SUFFIX + 1`
+                       fi
+               done
+       fi
+}
+# Split an IPROOT definition, trash the devices and
+# compose a set of --ip option for chbind
+setipopt(){
+       RET=
+       IPS="$*"
+       if [ "$IPS" = "" ] ; then
+               IPS=0.0.0.0
+       fi
+       if [ "$1" = "ALL" ] ; then
+               IPS=`$_LISTDEVIP`
+       fi
+       for oneip in $IPS
+       do
+               # Split the device and IP if available
+               case $oneip in
+               *:*)
+                       eval `echo $oneip | tr : ' ' | (read dev ip; echo oneip=$ip)`
+                       ;;
+               esac
+               #case $oneip in
+               #*/*)
+               #       eval `echo $oneip | tr / ' ' | (read ip msk; echo oneip=$ip)`
+               #       ;;
+               #esac
+               echo --ip $oneip
+       done
+}
+
+# Extract the initial runlevel from the vserver inittab
+get_initdefault()
+{
+       INITDEFAULT=`grep :initdefault $__DEFAULT_VSERVERDIR/$1/etc/inittab | sed 's/:/ /g' | ( read a level b; echo $level)`
+}
+
+# Read the vserver configuration file, reusing the PROFILE value
+# found in /var/run/vservers
+readlastconf()
+{
+       if [ -f $__PKGSTATEDIR/$1.ctx ] ; then
+               . $__PKGSTATEDIR/$1.ctx
+               if [ "$S_PROFILE" != "" ] ; then
+                       export PROFILE=$S_PROFILE
+               fi
+       fi
+       export PROFILE
+       . $__CONFDIR/$1.conf
+}
+usage()
+{
+       echo vserver [ options ] server-name command ...
+       echo
+       echo server-name is a directory in $__DEFAULT_VSERVERDIR
+       echo
+       echo The commands are:
+       echo " build   : Create a virtual server by copying the packages"
+       echo "           of the root server"
+       echo " enter   : Enter in the virtual server context and starts a shell"
+       echo "           Same as \"vserver name exec /bin/sh\""
+       echo " exec    : Exec a command in the virtual server context"
+       echo " suexec  : Exec a command in the virtual server context uid"
+       echo " service : Control a service inside a vserver"
+       echo "           vserver name service service-name start/stop/restart/status"
+       echo " start   : Starts the various services in the vserver, runlevel 3"
+       echo " stop    : Ends all services and kills the remaining processes"
+       echo " running : Tells if a virtual server is running"
+       echo "           It returns proper exit code, so you can use it as a test"
+       echo " status  : Tells some information about a vserver"
+       echo " chkconfig : It turns a server on or off in a vserver"
+       echo
+       echo "--nodev  : Do not configure the IP aliases of the vserver"
+       echo "           Useful to enter a vserver without enabling its network"
+       echo "           and avoiding conflicts with another copy of this vserver"
+       echo "           running elsewhere"
+       echo "--silent : No informative messages about vserver context and IP numbers"
+       echo "           Useful when you want to redirect the output"
+}
+
+calculateCaps()
+{
+    local f
+    for f in "$@"; do
+       case $f in
+           !CAP_SYS_CHROOT)
+               CHROOTOPT=--nochroot
+               ;;
+           *)
+               CAPS="$CAPS --cap $f"
+               ;;
+       esac
+    done
+}
+
+SILENT=
+NODEV=
+while true
+do
+       if [ "$1" = "--silent" ] ; then
+               SILENT=--silent
+               shift
+       elif [ "$1" = "--nodev" ] ; then
+               NODEV=--nodev
+               shift
+       else
+               break
+       fi
+done
+# Setup the default ulimit for a vserver
+setdefulimit(){
+       # File handle are limited to half of the current system limit
+       # Virtual memory is limited to the ram size
+       NFILE=`cat /proc/sys/fs/file-max`
+       NFILE=`expr $NFILE / 2`
+       VMEM=`cat /proc/meminfo  | grep MemTotal | (read a b c; echo $b)`
+       # Disabled for now, we need a different to set the security
+       # context limit than fiddling with ulimit
+       #ulimit -H -n $NFILE -v $VMEM
+}
+if [ $# -lt 2 ] ; then
+       usage
+elif [ "$2" = "build" ] ; then
+       # Either the directory does not exist or is empty
+       NBSUB=`ls $__DEFAULT_VSERVERDIR/$1 2>/dev/null | grep -v lost+found | wc -l` 
+       NBSUB=`expr $NBSUB`
+       if [ "$NBSUB" != 0 ] ; then
+               echo Virtual server $__DEFAULT_VSERVERDIR/$1 already exist
+       else
+               if [ ! -d $__DEFAULT_VSERVERDIR ] ; then
+                       mkdir $__DEFAULT_VSERVERDIR || exit 1
+                       chmod 000 $__DEFAULT_VSERVERDIR
+                       echo Directory $__DEFAULT_VSERVERDIR was created with permissions 000
+               fi
+               mkdir -p $__DEFAULT_VSERVERDIR/$1 || exit 1
+               chmod 755 $__DEFAULT_VSERVERDIR/$1
+               if test "$UTIL_VSERVER_AVOID_COPY"; then
+                   mkdir -p $__DEFAULT_VSERVERDIR/$1/{etc/rc.d/init.d,sbin,var/run,var/log}
+               else
+                   cp -ax /sbin /bin /etc /usr /var /lib $__DEFAULT_VSERVERDIR/$1/. || exit 1
+               fi
+               cd $__DEFAULT_VSERVERDIR/$1 || exit 1
+               rm -fr lib/modules/*
+               rm -f var/spool/mail/*
+               rm -f `find var/run -type f`
+               rm -f `find var/log -type f`
+               touch var/log/wtmp
+               rm -f var/lock/subsys/*
+               rm -f etc/cron.d/kmod
+               mkdir proc tmp home root boot
+               test -f /root/.bashrc && cp -a /root/.bashrc root/.
+               test -f /root/.bash_profile && cp -a /root/.bash_profile root/.
+               chmod 1777 tmp
+               chmod 750 root
+               # Create a minimal dev so the virtual server can't grab
+               # more privileges
+               mkdir dev dev/pts
+               vserver_mknod dev/null c 1 3 666
+               vserver_mknod dev/zero c 1 5 666
+               vserver_mknod dev/full c 1 7 666
+               vserver_mknod dev/random c 1 8 644
+               vserver_mknod dev/urandom c 1 9 644
+               vserver_mknod dev/tty c 5 0 666
+               vserver_mknod dev/ptmx c 5 2 666
+               touch dev/hdv1
+               # Turn off some service useless on a vserver
+               #               vserver_turnoff apmd network autofs dhcpd gpm ipchains iptables \
+               #                       irda isdn keytable kudzu linuxconf-setup netfs nfs nfslock \
+               #                       pcmcia portmap pppoe random rawdevices rhnsd rstatd ruserd \
+               #                       rwalld rwhod sendmail smb snmpd v_httpd h_xinetd v_sshd vservers \
+               #                       xfs ypbind xinetd
+               (
+                       cd etc/init.d 2>/dev/null || cd etc/rc.d/init.d
+                       for serv in *
+                       do
+                               case $serv in
+                               *.bak|*~|functions|killall|halt|single)
+                                       ;;
+                               *)
+                                       #$USR_LIB_VSERVER/capchroot $__DEFAULT_VSERVERDIR/$1 /sbin/chkconfig --level 2345 $serv off
+                                       $0 --silent $1 chkconfig --level 2345 $serv off
+                                       ;;
+                               esac
+                       done
+               )
+               rm -f etc/rc.d/rc6.d/S*reboot
+               # Create a dummy /etc/fstab and /etc/mtab to please
+               # df and linuxconf. We use hdv1, which does not exist
+               # to remind the admin that it is not the real drive
+               echo /dev/hdv1 / ext2 defaults 1 1 >etc/fstab
+               echo /dev/hdv1 / ext2 rw 0 0 >etc/mtab
+               # Install the vreboot utility
+               cp -a "$_VREBOOT" sbin/.
+               ln -sf vreboot sbin/vhalt
+
+               echo Directory $__DEFAULT_VSERVERDIR/$1 has been populated
+               if [ ! -d $__CONFDIR ] ; then
+                       mkdir $__CONFDIR
+                       chmod 600 $__CONFDIR
+                       echo Directory $__CONFDIR has been created
+               fi
+               if [ ! -f $__CONFDIR/$1.conf ] ; then
+                       CONF=$__CONFDIR/$1.conf
+                       cat >$CONF <<-EOF
+if [ "$PROFILE" = "" ] ; then
+       PROFILE=prod
+fi
+# Select the IP number assigned to the virtual server
+# This IP must be one IP of the server, either an interface
+# or an IP alias
+# A vserver may have more than one IP. Separate them with spaces.
+# do not forget double quotes.
+# Some examples:
+# IPROOT="1.2.3.4 2.3.4.5"
+# IPROOT="eth0:1.2.3.4 eth1:2.3.4.5"
+# If the device is not specified, IPROOTDEV is used
+case \$PROFILE in
+prod)
+       IPROOT=1.2.3.4
+       # The netmask and broadcast are computed by default from IPROOTDEV
+       #IPROOTMASK=
+       #IPROOTBCAST=
+       # You can define on which device the IP alias will be done
+       # The IP alias will be set when the server is started and unset
+       # when the server is stopped
+       #IPROOTDEV=eth0
+       # You can set a different host name for the vserver
+       # If empty, the host name of the main server is used
+       S_HOSTNAME=
+       ;;
+backup)
+       IPROOT=1.2.3.4
+       #IPROOTMASK=
+       #IPROOTBCAST=
+       #IPROOTDEV=eth0
+       S_HOSTNAME=
+       ;;
+esac
+# Uncomment the onboot line if you want to enable this
+# virtual server at boot time
+#ONBOOT=yes
+# You can set a different NIS domain for the vserver
+# If empty, the current on is kept
+# Set it to "none" to have no NIS domain set
+S_DOMAINNAME=
+# You can set the priority level (nice) of all process in the vserver
+# Even root won't be able to raise it
+S_NICE=
+# You can set various flags for the new security context
+# lock: Prevent the vserver from setting new security context
+# sched: Merge scheduler priority of all processes in the vserver
+#        so that it acts a like a single one.
+# nproc: Limit the number of processes in the vserver according to ulimit
+#        (instead of a per user limit, this becomes a per vserver limit)
+# private: No other process can join this security context. Even root
+# Do not forget the quotes around the flags
+S_FLAGS="lock nproc"
+# You can set various ulimit flags and they will be inherited by the
+# vserver. You enter here various command line argument of ulimit
+# ULIMIT="-HS -u 200"
+# The example above, combined with the nproc S_FLAGS will limit the
+# vserver to a maximum of 200 processes
+ULIMIT="-HS -u 1000"
+# You can set various capabilities. By default, the vserver are run
+# with a limited set, so you can let root run in a vserver and not
+# worry about it. He can't take over the machine. In some cases
+# you can to give a little more capabilities (such as CAP_NET_RAW)
+# S_CAPS="CAP_NET_RAW"
+S_CAPS=""
+# Select an unused context (this is optional)
+# The default is to allocate a free context on the fly
+# In general you don't need to force a context
+#S_CONTEXT=
+                       EOF
+                       echo $CONF has been created. Look at it\!
+               fi
+       fi
+elif [ ! -f $__CONFDIR/$1.conf ] ; then
+       echo No configuration for this vserver: $__CONFDIR/$1.conf
+       exit 1
+elif [ ! -d $__DEFAULT_VSERVERDIR/$1/. ] ; then
+       echo No directory for this vserver: $__DEFAULT_VSERVERDIR/$1
+       exit 1
+elif [ "$2" = "start" ] ; then
+       echo Starting the virtual server $1
+       testperm $1
+       if ! $0 $1 running
+       then
+               test -x $__CONFDIR/$1.sh && $__CONFDIR/$1.sh pre-start $1
+               IPROOT=
+               IPROOTMASK=
+               IPROOTBCAST=
+               IPROOTDEV=
+               S_NICE=
+               S_FLAGS=
+               . $__CONFDIR/$1.conf
+               export PROFILE
+               ifconfig_iproot $1
+               cd $__DEFAULT_VSERVERDIR/$1 || exit 1
+
+               if [ "$PROFILE" != "" ] ; then
+                       echo export PROFILE=$PROFILE >etc/PROFILE
+               fi
+
+               rm -f `find var/run -type f`
+               touch var/run/utmp
+               chgrp ${UTMP_GROUP:-utmp} var/run/utmp
+               chmod 0664 var/run/utmp
+               rm -f  var/lock/subsys/*
+               mountproc $__DEFAULT_VSERVERDIR/$1
+               CTXOPT=
+               HOSTOPT=
+               DOMAINOPT=
+               NICECMD=
+               FLAGS=
+               CAPS=
+               get_initdefault $1
+               STARTCMD="/etc/rc.d/rc $INITDEFAULT"
+               if [ -x $__DEFAULT_VSERVERDIR/$1/etc/init.d/rc ] ; then
+                       STARTCMD="/etc/init.d/rc $INITDEFAULT"
+               elif [ -x $__DEFAULT_VSERVERDIR/$1/usr/bin/emerge ] ; then
+                       STARTCMD="/sbin/rc default"
+               elif [ -x $__DEFAULT_VSERVERDIR/$1/etc/rc.d/rc.M ] ; then
+                       STARTCMD="/etc/rc.d/rc.M"                       
+               fi
+
+               DISCONNECT=
+               FAKEINIT=
+               for f in $S_FLAGS dummy
+               do
+                       case $f in
+                       dummy)
+                               ;;
+
+                        minit)
+                               FAKEINIT=true
+                                FLAGS="$FLAGS --flag fakeinit"
+                                STARTCMD=/sbin/minit-start
+                                DISCONNECT=--disconnect
+                               ;;
+
+                       fakeinit)
+                               FAKEINIT=true
+                               FLAGS="$FLAGS --flag $f"
+                               STARTCMD=/sbin/init
+                               DISCONNECT=--disconnect
+                               ;;
+                       *)
+                               FLAGS="$FLAGS --flag $f"
+                               ;;
+                       esac
+               done
+               if [ "$FAKEINIT" = "" ] ; then
+                       $USR_LIB_VSERVER/fakerunlevel $INITDEFAULT var/run/utmp
+               fi
+
+               calculateCaps $S_CAPS
+
+               if [ "$S_CONTEXT" != "" ] ; then
+                       CTXOPT="--ctx $S_CONTEXT"
+               fi
+               if [ "$S_HOSTNAME" != "" ] ; then
+                       HOSTOPT="--hostname $S_HOSTNAME"
+                       export HOSTNAME=$S_HOSTNAME
+               fi
+               if [ "$S_DOMAINNAME" != "" ] ; then
+                       DOMAINOPT="--domainname $S_DOMAINNAME"
+               fi
+               if [ "$S_NICE" != "" ] ; then
+                       NICECMD="nice -$S_NICE"
+               fi
+               mkdir -p $__PKGSTATEDIR
+               chmod 700 $__PKGSTATEDIR
+               setdefulimit
+               if [ "$ULIMIT" != "" ] ; then
+                       ulimit $ULIMIT
+               fi
+               #echo FLAGS=$FLAGS
+               #echo CAPS=$CAPS
+               # We switch to /vservers/$1 now, because after the
+               # security context switch /vservers directory becomes a dead zone.
+               cd $__DEFAULT_VSERVERDIR/$1
+               IPOPT=`setipopt $IPROOT`
+               export PATH=$DEFAULTPATH
+               $NICECMD $_CHBIND $SILENT $IPOPT --bcast $IPROOTBCAST \
+                       $_CHCONTEXT_COMPAT $SILENT $DISCONNECT $CAPS $FLAGS $CTXOPT $HOSTOPT $DOMAINOPT --secure \
+                       $_SAVE_S_CONTEXT $__PKGSTATEDIR/$1.ctx \
+                       $_CAPCHROOT $CHROOTOPT . $STARTCMD
+               sleep 2
+               test ! -x $__CONFDIR/$1.sh || $__CONFDIR/$1.sh post-start $1
+       fi
+elif [ "$2" = "running" ] ; then
+       if [ ! -f $__PKGSTATEDIR/$1.ctx ] ; then
+               echo Server $1 is not running
+               exit 1
+       else
+               . $__PKGSTATEDIR/$1.ctx
+               NB=$($USR_SBIN/vps ax | awk '{print $2}' | grep \^$S_CONTEXT\$ | wc -l)
+               #NB=`$_CHCONTEXT_COMPAT --silent --ctx $S_CONTEXT ps ax | wc -l`
+               #NB=`eval expr $NB + 0`
+               if [ "$NB" -gt 0 ] ; then
+                       echo Server $1 is running
+                       exit 0
+               else
+                       echo Server $1 is not running
+                       exit 1
+               fi
+       fi
+elif [ "$2" = "status" ] ; then
+       if $0 $1 running
+       then
+               . $__PKGSTATEDIR/$1.ctx
+               NB=$($USR_SBIN/vps ax | awk '{print $2}' | grep \^$S_CONTEXT\$ | wc -l)
+               echo $NB processes running
+               echo Vserver uptime: `$USR_LIB_VSERVER/filetime $__PKGSTATEDIR/$1.ctx`
+       fi
+elif [ "$2" = "stop" ] ; then
+       echo Stopping the virtual server $1
+       IPROOT=
+       IPROOTMASK=
+       IPROOTBCAST=
+       IPROOTDEV=
+       CAPS=
+       IS_MINIT=
+       readlastconf $1
+       if $0 $1 running
+       then
+               test -x $__CONFDIR/$1.sh && $__CONFDIR/$1.sh pre-stop $1
+               ifconfig_iproot $1
+               cd $__DEFAULT_VSERVERDIR/$1
+               mountproc $__DEFAULT_VSERVERDIR/$1
+               # The fakeinit flag tell us how to turn off the server
+               get_initdefault $1
+               export PREVLEVEL=$INITDEFAULT
+               STOPCMD="/etc/rc.d/rc 6"
+               if [ -x $__DEFAULT_VSERVERDIR/$1/etc/init.d/rc ] ; then
+                       STOPCMD="/etc/init.d/rc 6"
+               elif [ -x $__DEFAULT_VSERVERDIR/$1/usr/bin/emerge ] ; then
+                       STOPCMD="/sbin/rc shutdown"
+               elif [ -x $__DEFAULT_VSERVERDIR/$1/etc/rc.d/rc.6 ] ; then
+                       STOPCMD="/etc/rc.d/rc.6"
+               fi
+
+               for f in $S_FLAGS dummy
+               do
+                       case $f in
+                        minit)
+                               IS_MINIT=1
+                               FLAGS="$FLAGS --flag fakeinit"
+                                STOPCMD="/sbin/minit-stop"
+                                ;;
+
+                       fakeinit)
+                               FLAGS="$FLAGS --flag $f"
+                               STOPCMD="/sbin/init 6"
+                               ;;
+                       *)
+                               ;;
+                       esac
+               done
+
+               calculateCaps $S_CAPS
+
+               cd $__DEFAULT_VSERVERDIR/$1
+               IPOPT=`setipopt $IPROOT`
+               export PATH=$DEFAULTPATH
+               $_CHBIND $SILENT $IPOPT --bcast $IPROOTBCAST \
+                       $_CHCONTEXT_COMPAT $SILENT $CAPS --secure --ctx $S_CONTEXT \
+                       $_CAPCHROOT . $STOPCMD
+
+               if test "$IS_MINIT"; then
+                   echo "Waiting for minit finish-signal"
+                   dd if=var/run/minit-stop of=/dev/zero bs=1 count=1 &>/dev/null
+                   sleep 1
+               else
+                   echo sleeping 5 seconds
+                   sleep 5
+               fi
+
+               echo Killing all processes
+               $_CHBIND --silent $IPOPT --bcast $IPROOTBCAST \
+                       $_CHCONTEXT_COMPAT $CAPS --secure --silent --ctx $S_CONTEXT \
+                       $_VSERVERKILLALL
+       fi
+       # We umount anyway, because "enter" establish the mount
+       # but when you exit, the server is considered not running
+       umountproc $__DEFAULT_VSERVERDIR/$1
+       cd /
+       test -x $__CONFDIR/$1.sh && $__CONFDIR/$1.sh post-stop $1
+       ifconfig_iproot_off $1
+elif [ "$2" = "restart" ] ; then
+       if $0 $1 running
+       then
+               $0 $1 stop
+               $0 $1 start
+       fi
+elif [ "$2" = "suexec" ] ; then
+       if [ -z "$3" ] ; then
+               echo "Missing user!" >&2
+               echo "vserver vserver-name suexec user command [ args ... ]" >&2
+               exit 1
+       elif [ -z "$4" ] ; then
+               echo "Missing command and arguments!" >&2
+               echo "vserver vserver-name suexec user command [ args ... ]" >&2
+               exit 1
+       else
+               IPROOT=
+               IPROOTMASK=
+               IPROOTBCAST=
+               IPROOTDEV=
+               readlastconf $1
+               . $__CONFDIR/$1.conf
+               cd $__DEFAULT_VSERVERDIR/$1
+               ifconfig_iproot $1
+               mountproc $__DEFAULT_VSERVERDIR/$1
+               PS1="[\u@vserver:$1 \W]"
+               export PS1
+               VSERVER=$1
+               USERID=$3
+               shift; shift; shift
+               CAPS=
+               for f in $S_CAPS dummy
+               do
+                       case $f in
+                       dummy)
+                               ;;
+                       !CAP_SYS_CHROOT)
+                               CHROOTOPT=--nochroot
+                               ;;
+                       *)
+                               CAPS="$CAPS --cap $f"
+                               ;;
+                       esac
+               done
+               FLAGS=
+               for f in $S_FLAGS dummy
+               do
+                       case $f in
+                        minit)
+                               FLAGS="$FLAGS --flag fakeinit"
+                                ;;
+
+                       dummy)
+                               ;;
+                       *)
+                               FLAGS="$FLAGS --flag $f"
+                               ;;
+                       esac
+               done
+               setdefulimit
+               if [ "$ULIMIT" != "" ] ; then
+                       ulimit $ULIMIT
+               fi
+               if $0 $VSERVER running >/dev/null
+               then
+                       . $__PKGSTATEDIR/$VSERVER.ctx
+                       cd $__DEFAULT_VSERVERDIR/$VSERVER
+                       IPOPT=`setipopt $IPROOT`
+                       export PATH=$DEFAULTPATH
+                       exec $_CHBIND $SILENT $IPOPT --bcast $IPROOTBCAST \
+                               $_CHCONTEXT_COMPAT $SILENT $FLAGS $CAPS --secure --ctx $S_CONTEXT \
+                               $_CAPCHROOT --suid $USERID . "$@"
+               else
+                       test -x $__CONFDIR/$1.sh && $__CONFDIR/$1.sh pre-start $1
+                       CTXOPT=
+                       HOSTOPT=
+                       DOMAINOPT=
+                       if [ "$S_CONTEXT" != "" ] ; then
+                               CTXOPT="--ctx $S_CONTEXT"
+                       fi
+                       if [ "$S_HOSTNAME" != "" ] ; then
+                               HOSTOPT="--hostname $S_HOSTNAME"
+                               export HOSTNAME=$S_HOSTNAME
+                       fi
+                       if [ "$S_DOMAINNAME" != "" ] ; then
+                               DOMAINOPT="--domainname $S_DOMAINNAME"
+                       fi
+                       mkdir -p $__PKGSTATEDIR
+                       cd $__DEFAULT_VSERVERDIR/$VSERVER
+                       IPOPT=`setipopt $IPROOT`
+                       export PATH=$DEFAULTPATH
+                       exec $_CHBIND $SILENT $IPOPT --bcast $IPROOTBCAST \
+                               $_CHCONTEXT_COMPAT $SILENT $FLAGS $CAPS --secure $CTXOPT $HOSTOPT $DOMAINOPT \
+                               $_SAVE_S_CONTEXT $__PKGSTATEDIR/$VSERVER.ctx \
+                               $_CAPCHROOT --suid $USERID $CHROOTOPT . "$@"
+               fi
+       fi
+elif [ "$2" = "exec" ] ; then
+       VSERV=$1
+       shift; shift
+       exec $0 $NODEV $SILENT $VSERV suexec root "$@"
+elif [ "$2" = "enter" ] ; then
+       testperm $1
+       exec $0 $NODEV $SILENT $1 exec /bin/bash -login
+elif [ "$2" = "service" ] ; then
+       VSERVER=$1
+       shift
+       shift
+       exec $0 $NODEV $SILENT $VSERVER exec /sbin/service "$@"
+elif [ "$2" = "chkconfig" ] ; then
+       VSERVER=$1
+       shift
+       shift
+       if [ "$1" = "--level" ] ; then
+               shift
+               LEVELS=$1
+               shift
+       fi
+       if [ $# != 2 -a ! -x $__DEFAULT_VSERVERDIR/$VSERVER/sbin/chkconfig ] ; then
+               echo Invalid argument, expected vserver name chkconfig [ --level nnn ] service on\|off
+       elif [ -x $__DEFAULT_VSERVERDIR/$VSERVER/sbin/chkconfig ] ; then
+               exec $0 --silent $VSERVER exec /sbin/chkconfig "$@"
+       elif [ -x $__DEFAULT_VSERVERDIR/$VSERVER/usr/sbin/update-rc.d ] ; then
+               if [ "$2" = "on" -o "$2" = "start" ] ; then
+                       $0 --silent $VSERVER exec /usr/sbin/update-rc.d -f $1 remove >/dev/null
+                       exec $0 --silent $VSERVER exec /usr/sbin/update-rc.d $1 start 80 2 3 4 5 . stop 20 0 1 6 . >/dev/null
+               elif [ "$2" = "off" -o "$2" = "stop" ] ; then
+                       $0 --silent $VSERVER exec /usr/sbin/update-rc.d -f $1 remove >/dev/null
+                       exec $0 --silent $VSERVER exec /usr/sbin/update-rc.d $1 stop 20 0 1 2 3 4 5 6 . >/dev/null
+               else
+                       echo vserver chkconfig: Expecting on or off
+               fi
+       else
+               echo chkconfig functionality is not available on this
+               echo vserver distribution.
+               echo Looked for /sbin/chkconfig and /usr/sbin/update-rc.d
+       fi
+else
+       echo Command unknown $2
+       echo
+       usage
+fi
+
diff --git a/scripts/legacy/vserver-copy b/scripts/legacy/vserver-copy
new file mode 100755 (executable)
index 0000000..d7b968f
--- /dev/null
@@ -0,0 +1,380 @@
+#!/bin/bash
+
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+# based on vserver-copy by Mark Lawrence <nomad@null.net>
+#  
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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.
+
+# Copy/Sync a virtual host from one machine to another
+#
+# History:
+#
+# 2003-04-04: Version 0.4 - Mark lawrence
+# - Set "ONBOOT=no" in the destination .conf file when --startstop
+#   is not used, in case the destination roothost reboots. We don't
+#   want two copies of a vserver running at the same time.
+#
+# 2003-03-04: Version 0.3 - Mark lawrence
+# - Changed all checks for [ "" != "$var" ] into [ -n|-z "$var" ]. "" doesn't
+#   seem to work for bash on the Sparc architecture.
+# - Changed $ssh variable into $shcmd.
+#
+# 2003-02-23: Version 0.2 - Mark Lawrence
+# - Set ONBOOT to "no" in the original .conf file when the "-s" flag is 
+#   used so that if/when you reboot the source roothost you don't have the
+#   same vserver and IP address running on two machines.
+
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
+test -e "$UTIL_VSERVER_VARS" || {
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
+    exit 1
+}
+. "$UTIL_VSERVER_VARS"
+
+VERSION="0.4"
+umask 022
+me=${0##*/}
+
+
+### Helper functions ###
+
+# Save stdin and stdout for later use
+exec 3>&1
+exec 4>&2
+
+noninteractive () {
+       exec &> /dev/null
+}
+
+interactive () {
+       exec 1>&3
+       exec 2>&4
+}
+
+info () {
+       ! $quiet && echo "I: $me: $1" >&3
+}
+
+warn () {
+       ! $quiet && echo "W: $me: $1" >&4
+}
+
+error () {
+       ! $quiet && echo "E: $me: $2" >&4
+       exit $1
+}
+
+
+### Usage/Info functions ###
+
+usage () {
+    cat <<EOF 1>&2
+Usage: $me [-hVvqidrRs] vserver newname
+       $me [-hVvqidrRs] vserver host:[newname]
+EOF
+}
+
+full_usage () {
+       usage
+        cat <<EOF
+
+$me uses rsync to make a copy of a vserver. If the destination
+name contains a host specification the vserver will be synchronised to
+the remote destination over ssh/rsh.
+
+This can be used on a running vserver to make a warm backup. With the -s
+flag a vserver can even be operationally moved to different hardware within
+seconds.
+
+The -i and -d flags can be used to minimally reconfigure the destination
+vserver (rewrites /etc/vservers/newname.conf and $__DEFAULT_VSERVERDIR/newname/etc/hosts)
+
+Options:
+       -h, --help              this help
+       -V, --version           copyright and version information
+       -v, --verbose           show all output
+       -q, --quiet             direct all output to /dev/null (no password
+                               prompt for logins on remote hosts!)
+       -d, --domain [string]   new dns domain (must be used with -i)
+       -i, --ip [addr]         new IP address (must be used with -d)
+       -r, --vsroot            location of "/vserver/" directory
+       -R, --rsh               use rsh (instead of default ssh) for
+                               network transport
+       -s, --stopstart         stop the local vserver before copying and start
+                               it on the destination host afterwards
+
+EOF
+}
+
+full_version () {
+    cat <<EOF
+$me version $VERSION
+Copyright (c) 2002 Mark Lawrence   <nomad@null.net>
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or (at
+your option) any later version.
+
+EOF
+}
+
+
+### Default values and Command line options ###
+
+stopstart=(false)
+verbose=(false)
+quiet=(false)
+shcmd="ssh"
+rsflag="-e"
+rsh=(false)
+colon=":"
+domain=""
+ip=""
+vsroot=$__DEFAULT_VSERVERDIR
+
+if [ $# -eq 0 ]; then  # Script invoked with no command-line args?
+       usage
+       exit 1
+fi  
+
+temp=$(getopt -o hVvqd:i:rRs --long help,version,verbose,quiet,domain:,ip:,vsroot,rsh,stopstart, -n $me -- "$@")
+
+if [ $? -ne 0 ]; then
+       echo "  (See -h for help)"
+        exit 1
+fi
+
+# Note the quotes around `$temp': they are essential!
+eval set -- "$temp"
+
+while true; do
+        case "$1" in
+               -h|--help)      full_usage
+                               exit 1
+                               ;;
+               -V|--version)   full_version
+                               exit 1
+                               ;;
+               -v|--verbose)   verbose=(true)
+                               shift
+                               ;;
+               -q|--quiet)     quiet=(true)
+                               shift
+                               ;;
+               -d|--domain)    domain="$2"
+                               shift 2
+                               ;;
+               -i|--ip)        ip="$2"
+                               shift 2
+                               ;;
+               -r|--vsroot)    vsroot="$2"
+                               shift 2
+                               ;;
+               -R|--rsh)       rsh=(true)
+                               shift
+                               ;;
+               -s|--stopstart) stopstart=(true)
+                               shift
+                               ;;
+                --)             shift
+                               break
+                               ;;
+               *)              echo "Internal error!"
+                               exit 1
+                               ;;
+       esac
+done
+
+if [ $# -ne 2 ]; then
+       usage
+       exit 1
+fi
+
+
+### ###
+
+# By default we are reasonably quiet (ouput only via info, warn & error)
+if $verbose; then
+       interactive
+else
+       noninteractive
+fi
+
+now=$(date)
+info "called on $(hostname) at $now"
+
+
+vserver=$1
+vconf=/etc/vservers/$vserver.conf
+vroot=$vsroot/$vserver
+
+if $rsh; then
+       shcmd="rsh"
+fi
+
+if (echo $2 | grep '^[a-z][a-z0-9]\+$'); then
+       dhost=""
+       newname=$2
+       shcmd=""
+       rsflag=""
+       colon=""
+       if $rsh; then
+               warn "rsh is set but not used for a local copy"
+       fi
+elif (echo $2 | grep '^[a-z].*[a-z0-9]:$'); then
+       dhost=${2/:/}
+       newname=$vserver
+elif (echo $2 | grep '^[a-z].*[a-z0-9]:[a-z].*[a-z0-9]$'); then
+       dhost=${2/:*/}
+       newname=${2/*:/}
+else
+       error 1 "Second argument must be of the form \"[host:]name\" or \"host:\""
+fi
+
+target=$vsroot/$newname
+targetconf=/etc/vservers/$newname.conf
+
+
+### Perform some sanity checks ###
+
+if [ ! -d $vroot ]; then
+       error 1 "Directory \"$vroot\" does not exist"
+fi
+
+if [ ! -e $vconf ]; then
+       error 1 "Vserver file \"$vconf\" does not exist"
+fi
+
+if [ -z "$dhost" ] && [ "$vserver" == "$newname" ]; then
+       error 1 "Source and destination names cannot be the same on the localhost"
+fi
+
+if [ -n "$dhost" ] && ! (host $dhost | grep 'has address'); then
+       warn "$dhost does not resolve into an IP address"
+fi
+
+if [ \( -n "$ip" -a -z "$domain" \) -o \
+     \( -z "$ip" -a -n "$domain" \) ]
+then
+       error 1 "Both IP address and domain must be specified together"
+fi
+
+if [ -n "$ip" ] && \
+! (echo $ip | grep '^[0-9]\{1,3\}\(\.[0-9]\{1,3\}\)\{3\}$' ); then
+       error 1 "\"$ip\" is not a valid IP address"
+fi
+
+# This works both locally and remote
+if ($shcmd $dhost $__SBINDIR/vserver $newname running | grep 'is running'); then
+       warn "destination vserver \"$newname\" is running" 
+       error 1 "Cannot copy over a running vserver"
+fi
+
+
+### Do the copy ###
+
+info "Attempting to copy $vserver to $dhost$colon$newname"
+
+if $stopstart; then
+       info "Stopping virtual server \"$vserver\" on localhost"
+       $__SBINDIR/vserver $vserver stop
+fi
+
+info "Syncing directories"
+# trailing slashes very important in the rsync!
+if ! rsync -avxz $rsflag $shcmd $vroot/ $dhost$colon$target/; then
+       error 1 "rsync failed"
+fi
+
+if [ -n "$ip" -a -n "$domain" ]; then
+       # Insert the new IPROOT/S_HOSTNAME values into the config file
+       info "Modifying $targetconf"
+       tmpf=$(tempfile)
+       if (sed -e "s/^S_HOSTNAME=.*/S_HOSTNAME=\"$newname\"/" \
+               -e "s/^IPROOT=.*/IPROOT=\"$ip\"/" $vconf > $tmpf)
+       then
+               if ! rsync -v $rsflag $shcmd $tmpf $dhost$colon$targetconf; then
+                       error $? "vserver config file copy/change failed"
+               fi
+
+       else
+               warn "Unable to reconfigure virtual server config file"
+       fi
+
+       # create a new /etc/hostname
+       info "Creating hostname file"
+       echo $newname > $tmpf
+       if ! rsync -v $rsflag $shcmd $tmpf $dhost$colon$target/etc/hostname; then
+               error 1 "vserver /etc/hostname copy failed"
+       fi
+
+       info "Creating /etc/hosts"
+       cat << EOF > $tmpf
+# /etc/hosts (automatically generated by $me)
+
+127.0.0.1       localhost
+$ip    $newname.$domain        $newname
+
+# The following lines are desirable for IPv6 capable hosts
+
+::1     ip6-localhost ip6-loopback
+fe00::0 ip6-localnet
+ff00::0 ip6-mcastprefix
+ff02::1 ip6-allnodes
+ff02::2 ip6-allrouters
+ff02::3 ip6-allhosts
+EOF
+
+       # copy /etc/hosts
+       if ! rsync -v $rsflag $shcmd $tmpf $dhost$colon$target/etc/hosts; then
+               error 1 "vserver /etc/hosts copy failed"
+       fi
+       rm -f $tmpf
+
+else
+       if ! $stopstart; then
+               # Make sure that this vserver doesn't start on the 
+               # destination host if it reboots
+               tmpf=$(tempfile)
+               sed -e 's/^ONBOOT=.*/ONBOOT=no/' $vconf > $tmpf
+               vconf=$tmpf
+       fi
+
+       # copy newname.conf unchanged
+       info "Copying $targetconf"
+       if ! rsync -v $rsflag $shcmd $vconf $dhost$colon$targetconf; then
+               error 1 "vserver config file copy/change failed"
+       fi
+
+       rm -f $tmpf
+fi
+
+
+if $stopstart; then
+       info "Starting virtual server \"$vserver\" on $dhost"
+       $shcmd $dhost $__SBINDIR/vserver $vserver start
+       if ($shcmd $dhost $__SBINDIR/vserver $vserver running | \
+       grep 'not running'); then
+               error 1 "Virtual server \"$vserver\" failed to start on $dhost"
+       fi
+
+       # Make sure that we don't start the original on next boot
+       tmpf=$(tempfile)
+       sed -e 's/^ONBOOT=.*/ONBOOT=no/' $vconf > $tmpf
+       mv $tmpf $vconf
+fi
+
+exit 0
diff --git a/scripts/legacy/vserverkillall b/scripts/legacy/vserverkillall
new file mode 100755 (executable)
index 0000000..1cf0f43
--- /dev/null
@@ -0,0 +1,63 @@
+#!/bin/sh
+
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+# based on vserverkillall by Jacques Gelinas
+#  
+# 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, 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.
+
+# This script kills all process it can finds
+# Only useful if you are using a security context.
+# It does nothing in context 0
+USR_LIB_VSERVER=/usr/lib/util-vserver
+CTX=`grep ^s_context /proc/self/status | sed s/s_context:// | (read a b; echo $a)`
+CTX=`eval expr $CTX + 0`
+if [ "$CTX" = 0 ] ; then
+       echo Running in security context 0, do nothing
+else
+       cd /proc
+       for SIG in -TERM -TERM -TERM -9
+       do
+               ONE=0
+               for dir in *
+               do
+                       case $dir in
+                       1)
+                               ;;
+                       $$)
+                               ;;
+                       [1-9]*)
+                               ONE=1
+                               echo kill $SIG "`$USR_LIB_VSERVER/readlink /proc/$dir/exe`"[$dir]
+                               kill $SIG $dir
+                               ;;
+                       *)
+                               ;;
+                       esac
+               done
+               if [ "$ONE" = 0 ] ; then
+                       break
+               fi
+               sleep 1
+       done
+       # Kill the fakeinit process. It is shown as process one, but can't
+       # be killed this way
+       INITPID=`cat /proc/self/status | grep initpid: | (read a b; expr $b)`
+       if [ "$INITPID" != "0" ] ; then
+               echo kill init, pid $INITPID
+               kill -9 $INITPID
+       fi
+fi
+
+
diff --git a/scripts/pkgmgmt b/scripts/pkgmgmt
new file mode 100755 (executable)
index 0000000..99cc96c
--- /dev/null
@@ -0,0 +1,467 @@
+#!/bin/bash
+# $Id: pkgmgmt,v 1.13 2005/07/03 17:43:34 ensc Exp $
+
+# Copyright (C) 2004,2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
+test -e "$UTIL_VSERVER_VARS" || {
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
+    exit 1
+}
+. "$UTIL_VSERVER_VARS"
+. "$_LIB_FUNCTIONS"
+. "$_LIB_VSERVER_BUILD_FUNCTIONS_PKGMGMT"
+. "$__PKGLIBDIR/vserver.functions"
+
+function showHelp()
+{
+    echo \
+$"Usage: $0 --externalize|--internalize [-y] [--] <vserver-name>
+
+Report bugs to <$PACKAGE_BUGREPORT>."
+    exit 0
+}
+
+function showVersion()
+{
+    echo $"\
+vpkg $PACKAGE_VERSION -- shows information about packages in vservers
+This program is part of $PACKAGE_STRING
+
+Copyright (C) 2004,2005 Enrico Scholz
+This program is free software; you may redistribute it under the terms of
+the GNU General Public License.  This program has absolutely no warranty."
+    exit 0
+}
+
+function init()
+{
+    if test -z "$WORKAROUND_106057"; then
+       rpmdb_mntpoint=/dev
+    else
+       rpmdb_mntpoint=/.rpmdb
+    fi
+    pkgmgmt.initVariables
+}
+
+function _createDirs()
+{
+    for i; do
+       test -n "$i" || continue
+       mkdir -p -m755 "$i"
+    done
+}
+
+function _copySecure()
+{
+    local chroot=$1
+    local srcdir=$2
+    local dstdir=$3
+
+    
+    ( cd "$srcdir" && tar chf - '.' ) | \
+    ( cd "$chroot" && $_EXEC_CD "$dstdir" $_TAR xf - )
+}
+
+function _copySecureRev()
+{
+    local chroot=$1
+    local srcdir=$2
+    local dstdir=$3
+
+    ( cd "$chroot" && $_EXEC_CD "$srcdir" $_TAR cf - '.' ) | \
+    ( cd "$dstdir" && tar xf - )
+}
+
+## Usage: _substFile <filename> <sed-expression>
+function _substFile()
+{
+    local file=$1
+    local expr=$2
+    
+    $_CHROOT_SH testfile "$file" || return 0
+
+    local tmp=$($_MKTEMP /tmp/pkgmgmt_subst.XXXXXX)
+    trap "$_RM -f $tmp" EXIT
+
+    $_CHROOT_SH cat "$file" | \
+       $_SED -e "$expr" >$tmp
+
+    $_CHROOT_SH cat "$file" | $_CMP -s $tmp - || \
+       $_CHROOT_SH truncate "$file" <$tmp
+
+    $_RM -f $tmp
+}
+
+function _hashAuto()
+{
+    local file=$1
+    local hash=$2
+
+    $_CHROOT_SH testfile "$file" || return 0
+    
+    local tmp=$($_MKTEMP /tmp/apt.conf.XXXXXX)
+    trap "$_RM -f $tmp" EXIT
+
+    $_CHROOT_SH cat "$file" | \
+       $_SED -e "s|^\([^$hash].*@autogenerated@\)|$hash$hash\1|" >$tmp
+
+    $_CHROOT_SH cat "$file" | $_CMP -s $tmp - || \
+       $_CHROOT_SH truncate "$file" <$tmp
+
+    $_RM -f $tmp
+}
+
+function _unhashAuto()
+{
+    test -e "$1" || return 0
+
+    local hash=$2
+    local tmp=$($_MKTEMP /tmp/apt.conf.XXXXXX)
+    trap "$_RM -f $tmp" EXIT
+
+    $_SED -e "s|^$hash$hash\(.*@autogenerated@\)|\1|" "$1" >$tmp
+    $_CMP -s "$tmp" "$1" || \
+       $_CAT "$tmp" >"$1"
+
+    $_RM -f $tmp
+}
+
+function _mountFilesystemsInternal()
+{
+    local fstab="$1"
+    test -e "$fstab" || return 0
+    shift
+
+    pushd "$vdir" >/dev/null
+    "$@" $_SECURE_MOUNT -n -a --chroot --fstab "$fstab"
+    popd >/dev/null
+}
+
+function _mountFilesystems()
+{
+    local cfgdir
+    cfgdir=$($_VSERVER_INFO "$1" CFGDIR) || {
+       echo "Can not determine configuration directory for '$1'; ..." >&2
+       return 1
+    }
+    test -n "$_HAVE_CHBIND_OPTIONS" || _generateChbindOptions "$1"
+    
+    _mountFilesystemsInternal "$cfgdir"/fstab       $_CHBIND "${CHBIND_OPTS[@]}" || return 1
+    _mountFilesystemsInternal "$cfgdir"/fstab.local $_CHBIND "${CHBIND_OPTS[@]}" || return 1
+}
+
+function _umountFilesystems()
+{
+    local cfgdir
+    cfgdir=$($_VSERVER_INFO "$1" CFGDIR) || {
+       echo "Can not determine configuration directory for '$1'; ..." >&2
+       return 1
+    }
+    local vdir=$cfgdir/vdir
+    local is_ok=1
+    test -n "$_HAVE_CHBIND_OPTIONS" || _generateChbindOptions "$1"
+
+    pushd "$vdir/" >/dev/null || return 1
+       _umountVserverInternal  "$cfgdir"/fstab.local                              || is_ok=
+       _umountVserverInternal  "$cfgdir"/fstab       $_CHBIND "${CHBIND_OPTS[@]}" || is_ok=
+    popd >/dev/null           || return 1
+    
+    test -n "$is_ok"
+}
+
+# Usage: verifyInternalPackages <vserver> <style>
+function verifyInternalPackages()
+{
+    local pkgs res=0
+    local ERR="\
+The following errors occured while trying to internalize the
+packagemanagement:
+"
+    
+    case $2 in
+       (RH)    pkgs=$(vrpm "$1" -- -q --qf '---%{NAME}---\n' rpm apt yum "${YUM_RELEASEPKGS[@]}")
+               hasSubstring "$pkgs" ---rpm--- || {
+                   warning "$ERR
+* The vserver does not seem to have the 'rpm' package which is required
+  for internal package management. It is suggested to install it before
+  continuing."
+                   res=1
+                   ERR=
+               }
+               
+               hasSubstring "$pkgs"  ---apt--- ---yum--- || {
+                   warning "$ERR
+* The vserver does not seem to have a depsolver like 'apt' or 'yum'
+  installed. It is suggested to install such a program before setting
+  up internal package management."
+                   res=1
+                   ERR=
+               }
+
+               test -n "$have_apt" || test -z "$have_yum"   || \
+               hasSubstring "$pkgs" "${YUM_RELEASEPKGS[@]}" || {
+                   warning "$ERR
+* yum requires a special package which describes the version of the
+  distribution. Such a package could not be found within the vserver
+  so please install it before continuing. Usually, this package is
+  named 'redhat-release' of 'fedora-release'."
+                   res=1
+                   ERR=
+               }
+               ;;
+    esac
+
+    return $res
+}
+
+function processVserver_RH()
+{
+    local vserver=$1
+    local is_internalize=$2
+    local have_apt
+    local cfgdir
+    local i
+
+    cfgdir=$($_VSERVER_INFO "$vserver" APPDIR pkgmgmt) || \
+    cfgdir=$($_VSERVER_INFO "$vserver" APPDIR)/pkgmgmt
+
+    ## Figure out the environment....
+    have_apt=1
+    have_yum=1
+    pkgmgmt.isAptAvailable "$cfgdir" "$vdir" "$is_internalize" || have_apt=
+    pkgmgmt.isYumAvailable "$cfgdir" "$vdir" "$is_internalize" || have_yum=
+
+    local APTETCDIR=
+    local APTSTATEDIR=
+    local APTCACHEDIR=
+    local APTARCHIVDIR=
+    local RPMETCDIR=
+    local RPMSTATEDIR=
+
+    ## Create directories and assign variables where configuration
+    ## can/will be found on the host
+    if test -n "$is_internalize"; then
+       verifyInternalPackages "$vserver" RH || test -n "$IS_FORCE" ||
+           panic "
+Can not continue; use '--force' to override this check"
+    
+       pushd "$vdir" >/dev/null
+
+       test ! -L var/lib/rpm || {
+           $_EXEC_CD /var/lib $_RM            rpm &&
+           $_EXEC_CD /var/lib $_MKDIR -m755   rpm &&
+           $_EXEC_CD /var/lib $_CHOWN rpm:rpm rpm ||
+           :
+       } </dev/null 2>/dev/null
+
+       for i in var/cache/apt/{,archives/{,partial},genpkglist,gensrclist} \
+                var/state/{,apt/{,lists/{,partial}}} \
+                etc/apt etc/rpm; do
+           test -d "$i" ||
+               $_EXEC_CD /$(dirname "$i") $_MKDIR -m755 $(basename "$i") || :
+       done #2>/dev/null
+       
+       popd >/dev/null
+       
+       if test -n "$have_apt"; then
+           findDir APTETCDIR    "$cfgdir"/aptetc "$cfgdir"/base/apt/etc /etc/apt /
+       fi
+
+       findDir RPMETCDIR   "$cfgdir"/rpmetc   "$cfgdir"/base/rpm/etc    /etc/rpm /
+       findDir RPMSTATEDIR "$cfgdir"/rpmstate "$cfgdir"/base/rpm/state
+    else
+       mkdir -m755 -p "$cfgdir"
+       local need_base=
+
+       if test -n "$have_apt"; then
+           findDir APTETCDIR    "$cfgdir"/aptetc      "$cfgdir"/base/apt/etc       /
+           findDir APTSTATEDIR  "$cfgdir"/aptstate    "$cfgdir"/base/apt/state     /
+           findDir APTCACHEDIR  "$cfgdir"/aptcache    "$cfgdir"/base/apt/cache     /
+           findDir APTARCHIVDIR "$cfgdir"/aptarchives "$cfgdir"/base/apt/archives  /
+           
+           test "$APTETCDIR"    != / || APTETCDIR=$cfgdir/base/apt/etc
+           test "$APTSTATEDIR"  != / || APTSTATEDIR=$cfgdir/base/apt/state
+           test "$APTCACHEDIR"  != / || APTCACHEDIR=$cfgdir/base/apt/cache
+           test "$APTARCHIVDIR" != / || APTARCHIVDIR=$cfgdir/base/apt/archive
+
+           test -d "$cfgdir"/aptetc   -a -d "$cfgdir"/aptstate -a \
+                -d "$cfgdir"/aptcache -a -d "$cfgdir"/aptarchives || need_base=1
+       fi
+
+       findDir RPMETCDIR     "$cfgdir"/rpmetc   "$cfgdir"/base/rpm/etc    /
+       findDir RPMSTATEDIR   "$cfgdir"/rpmstate "$cfgdir"/base/rpm/state  /
+
+       test "$RPMETCDIR"   != / || RPMETCDIR=$cfgdir/base/rpm/etc
+       test "$RPMSTATEDIR" != / || RPMSTATEDIR=$cfgdir/base/rpm/state
+
+       test -d "$cfgdir"/rpmetc -a -d "$cfgdir"/rpmstate || need_base=1
+       test ! -e "$cfgdir"/base || need_base=
+
+       test -z "$need_base" || ln -s "$PKGCFGDIR" "$cfgdir"/base
+
+       mkdir -m755 -p "$PKGCFGDIR"
+       _createDirs "$APTETCDIR" "$APTSTATEDIR" "$APTCACHEDIR" "$APTARCHIVDIR" \
+                   "$RPMETCDIR" "$RPMSTATEDIR"
+    fi
+
+    ## Copy the files...
+    if test -n "$is_internalize"; then
+       if test -n "$have_apt"; then
+           _copySecure "$vdir" "$APTETCDIR" /etc/apt
+           pushd "$vdir" >/dev/null
+               _hashAuto /etc/apt/apt.conf '/'
+           popd >/dev/null
+       fi
+
+       _copySecure "$vdir" "$RPMETCDIR"   /etc/rpm
+       _copySecure "$vdir" "$RPMSTATEDIR" /var/lib/rpm
+
+       pushd "$vdir" >/dev/null
+           ## remove %_dbpath settings
+           _substFile /etc/rpm/macros '/^%_dbpath[ \t].*/D'
+       popd >/dev/null
+    else
+       if test -n "$have_apt"; then
+           _copySecureRev "$vdir" /etc/apt "$APTETCDIR"
+           _unhashAuto "$APTETCDIR"/apt.conf '/'
+       fi
+
+       _copySecureRev "$vdir" /etc/rpm     "$RPMETCDIR"
+       _copySecureRev "$vdir" /var/lib/rpm "$RPMSTATEDIR"
+
+       echo -e "%_dbpath\t\t$rpmdb_mntpoint" >>$RPMETCDIR/macros
+    fi
+
+    ## Cleanups...
+    if test -n "$is_internalize"; then
+       :
+    else
+       tmpdir=$($_MKTEMPDIR /var/tmp/pgmgmt.XXXXXX)
+       trap "$_RM -rf $tmpdir" EXIT
+       pushd "$vdir" >/dev/null
+       $_EXEC_CD /var/lib $_MV rpm $tmpdir/
+       $_EXEC_CD /var/lib $_LN_S "$rpmdb_mntpoint" rpm
+       $_RM -rf $tmpdir
+    fi
+
+    ## Finish it...
+    if test -n "$is_internalize"; then
+       $_TOUCH "$cfgdir"/internal
+    else
+       $_RM -f "$cfgdir"/internal
+    fi
+}
+
+function processVserver_Debian()
+{
+    local vserver=$1
+    local is_internalize=$2
+
+    if test -n "$is_internalize"; then
+       echo $"Debian vservers should be internalized everytime; do not know how to handle '$vserver'" >&2
+    else
+       echo $"External packagemanagement is not supported for Debian vserver" >&2
+    fi
+
+    return 1
+}
+
+function processVserver()
+{
+    local vserver=$1
+    local is_external=
+    local skip=1
+    local vdir
+
+    ! $_VSERVER_INFO -q "$vserver" RUNNING || {
+       echo $"Can not operate on running vservers; please stop '$vserver' and retry again..."
+       return 1
+    } >&2
+
+    vdir=$($_VSERVER_INFO "$vserver" VDIR) && test -d "$vdir" || {
+       echo $"Vserver '$vserver' does not seem to exist; skipping it..."
+       return 1
+    } >&2
+    
+    pkgmgmt.isInternal "$vserver" || is_external=1
+
+    case "$is_external"X"$IS_INTERNALIZE"X"$IS_EXTERNALIZE" in
+       (*X1X1) echo $"Can not externalize and internalize at the same time";;
+       (*XX)   echo $"No operation specified; try '--help' for more information";;
+       (1XX1)  echo $"Vserver '$vserver' has already external packagemanagment; skipping it...";;
+       (X1X)   echo $"Vserver '$vserver' has already internal packagemanagment; skipping it...";;
+       (*)     skip=
+    esac >&2
+
+    test -z "$skip" || return 1
+
+    local style
+    _mountFilesystems  "$vserver"       || return 1
+    pkgmgmt.guessStyle "$vserver" style || return 1
+
+    case "$style" in
+       (redhat|mandrake)       processVserver_RH     "$vserver" "$IS_INTERNALIZE";;
+       (debian)                processVserver_Debian "$vserver" "$IS_INTERNALIZE";;
+       (*)
+           echo $"Vserver style '$style' is not supported for packagemanagment" >&2
+           return 1
+    esac
+
+    _umountFilesystems "$vserver"       || return 1
+}
+
+tmp=$(getopt -o y --long debug,externalize,internalize,help,version,force -n "$0" -- "$@") || exit 1
+eval set -- "$tmp"
+
+IS_EXTERNALIZE=
+IS_INTERNALIZE=
+IS_YES=
+IS_FORCE=
+
+while true; do
+    case "$1" in
+       (--help)        showHelp $0;;
+       (--version)     showVersion;;
+       (--debug)       set -x;;
+       (--externalize) IS_EXTERNALIZE=1;;
+       (--internalize) IS_INTERNALIZE=1;;
+       (--force)       IS_FORCE=1;;
+       (-y)            IS_YES=1;;
+       (--)            shift; break;;
+       (*)             echo $"vserver: internal error; arg=='$1'" >&2; exit 1;;
+    esac
+    shift
+done
+
+test -n "$1" || {
+    echo $"No vserver specified; try '--help' for more information"
+    exit 1
+} >&2
+
+
+set -e
+init
+
+ok=1
+passed=
+for i; do
+    processVserver "$i" && passed=1 || ok=
+done
+    
+test -z "$ok"     || exit 0
+test -z "$passed" || exit 1
+exit 2
diff --git a/scripts/start-vservers b/scripts/start-vservers
new file mode 100755 (executable)
index 0000000..f35bf13
--- /dev/null
@@ -0,0 +1,181 @@
+#! /bin/bash
+
+# Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+# Usage: start-vservers [-c <CFGDIR>] [-m <MARK>] [-j <NUM>] [--start|--stop|--status|--condrestart|--restart] [--test] [--all] [--debug] -- <name>+
+
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
+test -e "$UTIL_VSERVER_VARS" || {
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
+    exit 1
+}
+. "$UTIL_VSERVER_VARS"
+. "$_LIB_FUNCTIONS"
+
+### Some local functions
+
+function showHelp()
+{
+    echo \
+$"Usage: $(basename $0) [-c <CFGDIR>] [-m <MARK>] [-j <NUM] [--test]
+             [--start|--stop] [--all|--[un]marked|--running|--stopped] -- <name>+
+
+Please report bugs to $PACKAGE_BUGREPORT"
+    exit 0
+}
+
+
+function showVersion()
+{
+    echo \
+$"start-vserver $PACKAGE_VERSION -- starts/stops a bunch of vservers
+This program is part of $PACKAGE_STRING
+
+Copyright (C) 2004 Enrico Scholz
+This program is free software; you may redistribute it under the terms of
+the GNU General Public License.  This program has absolutely no warranty."
+    exit 0
+}
+
+function verifyVserver()
+{
+    true
+}
+
+###
+
+set +e
+
+
+tmp=$(getopt -o c:j:m: \
+      --long debug,help,version,start,stop,test,$VS_ALLVSERVERS_ARGS \
+      -n "$0" -- "$@") || exit 1
+eval set -- "$tmp"
+
+declare -a tmp_vservers=()
+declare -r TAB=$(echo -en "\t")
+OPTION_MARK=
+OPTION_PARALLEL=99
+OPTION_DEBUG=
+NOOPTION_DEBUG=1
+
+case "`basename $0`" in
+    start-*)   OPTION_FLAVOR=start;;
+    stop-*)    OPTION_FLAVOR=stop;;
+    *)         OPTION_FLAVOR=;;
+esac
+
+while true; do
+    getAllVserversByArg tmp_vservers "$1" || \
+    case "$1" in
+       (--help)        showHelp    $0 ;;
+       (--version)     showVersion $0 ;;
+       (-c)            CONFDIR=$2;     shift;;
+       (-m)            OPTION_MARK=$2; shift;;
+       (-j)            OPTION_PARALLEL=$2; shift;;
+       (--start)       OPTION_FLAVOR=start;;
+       (--stop)        OPTION_FLAVOR=stop;;
+       (--debug)       OPTION_DEBUG=1; NOOPTION_DEBUG=; set -x;;
+       (--)            shift; break;;
+       (*)             echo $"$0: internal error; arg=='$1'" >&2; exit 1;;
+    esac
+    shift
+done
+
+test -n "$OPTION_FLAVOR" || {
+    echo "$0: unknown invocation method; aborting..." >&2
+    exit 1
+}
+
+vservers=( "$@" "${tmp_vservers[@]}" )
+
+orig_vservers=$vservers
+i=${#vservers[*]}
+
+while test $i -gt 0; do
+    let --i
+    d=$__CONFDIR/${vservers[$i]}/apps/init
+    f=$d/mark
+    { test -n "$OPTION_MARK" -a -r "$f" && grep -qx "$OPTION_MARK" "$f"; } || \
+    { test -z "$OPTION_MARK" && test ! -e "$f"; } || \
+    unset vservers[$i]
+done
+
+makedir=$($_MKTEMPDIR /tmp/vserver-init.XXXXXX)
+okfile=$($_MKTEMP     /tmp/vserver-init.XXXXXX)
+passedfile=$($_MKTEMP /tmp/vserver-init.XXXXXX)
+trap "$_RM -rf $makedir $resultfile $passedfile" EXIT
+
+test_cmd=false
+case "$OPTION_FLAVOR" in
+    start)     test_cmd="${_VSERVER}   --silent '\$*' status";;
+    stop)      test_cmd="! ${_VSERVER} --silent '\$*' status";;
+esac
+
+{
+    cat <<EOF
+.%.stamp:
+${TAB}$test_cmd || { \
+${TAB}echo -n '.' >>$passedfile ; \
+${TAB}$_VSERVER --defaulttty --sync ${OPTION_DEBUG:+--debug} "\$*" ${OPTION_FLAVOR}; }
+${TAB}echo -n '.' >>$okfile
+${TAB}@touch "\$@"
+EOF
+
+    echo -ne "all:\t"
+    for i in "${vservers[@]}"; do
+       echo -n ".$i.stamp "
+    done
+    echo
+} >$makedir/Makefile
+
+for i in "${vservers[@]}"; do
+    d="$__CONFDIR/$i"/apps/init
+    echo "$i"
+    test -e "$d"/depends || continue
+    cat "$d"/depends
+done | sort -u | while read vserver; do
+    d="$__CONFDIR/$vserver"/apps/init
+
+    case "$OPTION_FLAVOR" in
+       start)
+           if test -e "$d"/depends; then
+               echo -ne ".$vserver.stamp:\t"
+               cat "$d"/depends | while read dep; do
+                   verifyVserver "$dep"
+                   echo -n ".$dep.stamp "
+               done
+               echo
+           fi >>$makedir/Makefile
+           ;;
+       stop)
+           if test -e "$d"/depends; then
+               cat "$d"/depends | while read dep; do
+                   verifyVserver "$dep"
+                   echo -ne ".$dep.stamp:\t.$vserver.stamp"
+               done
+               echo
+           fi >>$makedir/Makefile
+    esac
+done
+
+#cat $makedir/Makefile
+make -k ${NOOPTION_DEBUG:+-s} ${OPTION_PARALLEL:+-j$OPTION_PARALLEL} -C $makedir
+
+test  -s "$passedfile"           || exit 0
+test  -s "$okfile"               || exit 1
+$_CMP -s "$passedfile" "$okfile" || exit 2
+exit 0
diff --git a/scripts/util-vserver-vars.pathsubst b/scripts/util-vserver-vars.pathsubst
new file mode 100644 (file)
index 0000000..f4baf0c
--- /dev/null
@@ -0,0 +1,137 @@
+# $Id: util-vserver-vars.pathsubst,v 1.49 2005/07/03 17:43:55 ensc Exp $   --*- sh -*--
+
+PACKAGE='@PACKAGE@'
+PACKAGE_BUGREPORT='@PACKAGE_BUGREPORT@'
+PACKAGE_NAME='@PACKAGE_NAME@'
+PACKAGE_STRING='@PACKAGE_STRING@'
+PACKAGE_TARNAME='@PACKAGE_TARNAME@'
+PACKAGE_VERSION='@PACKAGE_VERSION@'
+
+__CONFDIR='@CONFDIR@'
+__INCLUDEDIR='@INCLUDEDIR@'
+__INITRDDIR='@INITRDDIR@'
+__LEGACYDIR="@LEGACYDIR@"
+__LIBDIR='@LIBDIR@'
+__LOCKDIR="/var/lock"
+__PKGLIBDIR='@PKGLIBDIR@'
+__PKGSTATEDIR="@PKGSTATEDIR@"
+__PKGSTATEREVDIR="@PKGSTATEREVDIR@"
+__SBINDIR='@SBINDIR@'
+__SYSCONFDIR='@SYSCONFDIR@'
+__VSHELPERSTATEDIR="@VSHELPERSTATEDIR@"
+
+__DISTRIBDIR="$__PKGLIBDIR/distributions"
+__PKGLIBDEFAULTDIR="$__PKGLIBDIR/defaults"
+__RUNDIR="$__PKGSTATEDIR"
+
+__DEFAULT_VSERVERDIR='@VSERVERDIR@'
+__DEFAULT_VSERVERPKGDIR='@VSERVERPKGDIR@'
+
+_CAPCHROOT="$__PKGLIBDIR/capchroot"
+_CHAINECHO="$__PKGLIBDIR/chain-echo"
+_CHBIND="$__SBINDIR/chbind"
+_CHCONTEXT="$__SBINDIR/chcontext"
+_CHCONTEXT_COMPAT="$__PKGLIBDIR/chcontext-compat"
+_CHECK_UNIXFILE="$__PKGLIBDIR/check-unixfile"
+_CHROOT_SH="$__PKGLIBDIR/chroot-sh"
+_EXEC_CD="$__SBINDIR/exec-cd"
+_EXEC_ULIMIT="$__PKGLIBDIR/exec-ulimit"
+_FAKE_RUNLEVEL="$__PKGLIBDIR/fakerunlevel"
+_FILETIME="$__PKGLIBDIR/filetime"
+_IFSPEC="$__LEGACYDIR/ifspec"
+_INITSYNC_MINIT_START=:
+_KEEP_CTX_ALIVE="$__PKGLIBDIR/keep-ctx-alive"
+_LIB_FUNCTIONS="$__PKGLIBDIR/functions"
+_LIB_VSERVER_SETUP_FUNCTIONS="$__PKGLIBDIR/vserver-setup.functions"
+_LIB_VSERVER_BUILD_FUNCTIONS="$__PKGLIBDIR/vserver-build.functions"
+_LIB_VSERVER_BUILD_FUNCTIONS_APT="$__PKGLIBDIR/vserver-build.functions.apt"
+_LIB_VSERVER_BUILD_FUNCTIONS_RPM="$__PKGLIBDIR/vserver-build.functions.rpm"
+_LIB_VSERVER_BUILD_FUNCTIONS_YUM="$__PKGLIBDIR/vserver-build.functions.yum"
+_LIB_VSERVER_BUILD_FUNCTIONS_PKGMGMT="$__PKGLIBDIR/vserver-build.functions.pkgmgmt"
+_LISTDEVIP="$__LEGACYDIR/listdevip"
+_LOCKFILE="$__PKGLIBDIR/lockfile"
+_MASK2PREFIX="$__PKGLIBDIR/mask2prefix"
+_PARSERPMDUMP="$__LEGACYDIR/parserpmdump"
+_PKGMGMT="$__PKGLIBDIR/pkgmgmt"
+_READLINK="$__PKGLIBDIR/readlink"
+_REBOOTMGR="$__LEGACYDIR/rebootmgr"
+_RPM_FAKE_SO="$__PKGLIBDIR/rpm-fake.so"
+_SAVE_S_CONTEXT="$__LEGACYDIR/save_s_context"
+_SAVE_CTXINFO="$__PKGLIBDIR/save_ctxinfo"
+_SECURE_MOUNT="$__PKGLIBDIR/secure-mount"
+_SETATTR="$__SBINDIR/setattr"
+_SHOWPERM="$__LEGACYDIR/showperm"
+_START_VSERVERS="$__PKGLIBDIR/start-vservers"
+_VAPT_GET="$__SBINDIR/vapt-get"
+_VAPT_GET_WORKER="$__PKGLIBDIR/vapt-get-worker"
+_VATTRIBUTE="$__SBINDIR/vattribute"
+_VCONTEXT="$__SBINDIR/vcontext"
+_VHASHIFY="$__PKGLIBDIR/vhashify"
+_VKILL="$__SBINDIR/vkill"
+_VLIMIT="$__SBINDIR/vlimit"
+_VNAMESPACE="$__SBINDIR/vnamespace"
+_VPKG="$__PKGLIBDIR/vpkg"
+_VPROCUNHIDE="$__PKGLIBDIR/vprocunhide"
+_VPS="$__SBINDIR/vps"
+_VREBOOT="$__LEGACYDIR/vreboot"
+_VRPM="$__SBINDIR/vrpm"
+_VRPM_PRELOAD="$__PKGLIBDIR/vrpm-preload"
+_VRPM_WORKER="$__PKGLIBDIR/vrpm-worker"
+_VSCHED="$__SBINDIR/vsched"
+_VSERVER="$__SBINDIR/vserver"
+_VSERVER_LEGACY="$__LEGACYDIR/vserver"
+_VSERVER_BUILD="$__PKGLIBDIR/vserver-build"
+_VSERVER_INFO="$__SBINDIR/vserver-info"
+_VSERVERKILLALL="$__LEGACYDIR/vserverkillall"
+_VSHELPER="$__PKGLIBDIR/vshelper"
+_VSHELPER_SYNC="$__PKGLIBDIR/vshelper-sync"
+_VSOMETHING="$__SBINDIR/vsomething"
+_VWAIT="$__SBINDIR/vwait"
+_VUNAME="$__SBINDIR/vuname"
+_VUNIFY="$__PKGLIBDIR/vunify"
+_VYUM="$__SBINDIR/vyum"
+_VYUM_WORKER="$__PKGLIBDIR/vyum-worker"
+
+_AWK="@AWK@"
+_CAT="@CAT@"
+_CHOWN="@CHOWN@"
+_CMP="@CMP@"
+_CP="@CP@"
+_DIRNAME="@DIRNAME@"
+_EGREP="@EGREP@"
+_ENV="@ENV@"
+_GREP="@GREP@"
+_IP="@IP@"
+_IPTABLES="@IPTABLES@"
+_LN="@LN@"
+_LN_S="$_LN -s"
+_MKDIR="@MKDIR@"
+_MKFIFO="@MKFIFO@"
+_MKTEMP="@MKTEMP@"
+_MKTEMPDIR="$_MKTEMP -d"
+_MODPROBE="@MODPROBE@"
+_MOUNT="@MOUNT@"
+_MV="@MV@"
+_NAMEIF="@NAMEIF@"
+_NICE="@NICE@"
+_NOHUP="@NOHUP@"
+_RM="@RM@"
+_RMDIR="@RMDIR@"
+_RMMOD="@RMMOD@"
+_SED="@SED@"
+_SH="@SH@"
+_TAC="@TAC@"
+_TAR="@TAR@"
+_TOUCH="@TOUCH@"
+_TTY="@TTY@"
+_UMOUNT="@UMOUNT@"
+_VCONFIG="@VCONFIG@"
+_WC="@WC@"
+_WGET="@WGET@"
+
+# https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=106057
+WORKAROUND_106057=1
+# /var/lib/rpm is hardcoded into apt-get which does not honor the
+# %_dbpath variable therefore
+# http://distro2.conectiva.com.br/pipermail/apt-rpm/2003-October/001985.html
+WORKAROUND_APT_DBPATH=1
diff --git a/scripts/vapt-get b/scripts/vapt-get
new file mode 100755 (executable)
index 0000000..324d1f1
--- /dev/null
@@ -0,0 +1,99 @@
+#! /bin/bash
+# $Id: vapt-get,v 1.14 2005/01/27 21:24:44 ensc Exp $
+
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
+test -e "$UTIL_VSERVER_VARS" || {
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
+    exit 1
+}
+. "$UTIL_VSERVER_VARS"
+. "$_LIB_FUNCTIONS"
+
+
+function showHelp()
+{
+    echo \
+$"Usage: $0 <vserver-name>* [--all] -- <params>+
+
+Report bugs to <$PACKAGE_BUGREPORT>."
+    exit $1
+}
+
+function showVersion()
+{
+    echo \
+$"vapt-get $PACKAGE_VERSION -- apt-get for vservers
+This program is part of $PACKAGE_STRING
+
+Copyright (C) 2003 Enrico Scholz
+This program is free software; you may redistribute it under the terms of
+the GNU General Public License.  This program has absolutely no warranty."
+    exit $1
+}
+
+is_quiet=
+declare -a vservers=()
+
+while test "$#" -ge 1; do
+    case "$1" in
+       --)             shift; break;;
+       --help)         showHelp 0;;
+       --quiet|-q)     is_quiet=1 ;;
+       --all)
+           getAllVservers tmp
+           vservers=( "${vservers[@]}" "${tmp[@]}" )
+           ;;
+       --version)
+           showVersion 0;;
+       *)  vservers=( "${vservers[@]}" "$1" )
+     esac
+     shift
+done
+
+test "$#" -ge 1 || showHelp 1 >&2
+test "${#vservers[@]}" -ne 1 || is_quiet=1
+
+cnt=0
+res=255
+for i in "${vservers[@]}"; do
+    cnt=$[ cnt + 1 ]
+
+    test -n "$is_quiet" || {
+       colorize bold echo -n "vaptget: operating on vserver "
+       colorize bold colorize emph echo "$i"
+       xtermTitle "vaptget: operating on vserver '$i'  [$cnt/${#vservers[@]}]"
+    }
+    
+    if pkgmgmt.isInternal "$i"; then
+       $_VSERVER "$i" exec apt-get "$@"
+    else
+       callInNamespace "$i" \
+           "$_VNAMESPACE" --new -- "$_VAPT_GET_WORKER" "$i" "$@"
+    fi
+    res=$?
+
+    test $res -eq 0 -o -n "$is_quiet" || {
+       colorize error echo -n $"vapt-get failed on vserver '$i' with errorcode $res"
+       echo
+    }
+       
+    test -n "$is_quiet" || echo
+done
+
+test "$cnt" -ge 0 || echo "No vservers specified" >&2
+exit $res
diff --git a/scripts/vapt-get-worker b/scripts/vapt-get-worker
new file mode 100755 (executable)
index 0000000..1ffeebb
--- /dev/null
@@ -0,0 +1,58 @@
+#! /bin/bash
+# $Id: vapt-get-worker,v 1.8 2005/02/25 21:51:02 ensc Exp $
+
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+set -e
+
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
+test -e "$UTIL_VSERVER_VARS" || {
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
+    exit 1
+}
+. "$UTIL_VSERVER_VARS"
+. "$_LIB_FUNCTIONS"
+
+
+function createAptFileSys()
+{
+    mkdir -p /var/state/apt/lists/partial
+    mkdir -p /var/cache/apt/archives/partial
+}
+
+vserver="$1"
+shift
+
+pkgInit "$vserver" rpm apt
+
+createAptFileSys
+
+test -z "$_APT_GET" || {
+    warning $"The environment variable \$_APT_GET is not supported anymore; please use \$APT_GET instead of"
+    ${APT_GET:=$_APT_GET}
+}
+
+exec ${_APT_GET:-apt-get} \
+    -o "RPM::RootDir=$VDIR" \
+    -o "Dir=$VDIR" \
+    -o "Dir::State=$APTSTATEDIR" \
+    -o "Dir::Cache=$APTCACHEDIR" \
+    -o "Dir::Cache::archives=$APTARCHIVDIR" \
+    -o "Dir::Bin::rpm=$RPM_BINARY" \
+    -o "Dir::Etc=$APTETCDIR" \
+    -o "RPM::Order=true" \
+    -o "RPM::PM=external" \
+    "$@"
diff --git a/scripts/vpkg b/scripts/vpkg
new file mode 100755 (executable)
index 0000000..30aa766
--- /dev/null
@@ -0,0 +1,142 @@
+#!/bin/bash
+# $Id: vpkg,v 1.11 2005/03/18 00:23:02 ensc Exp $
+
+# Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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, 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.
+
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
+test -e "$UTIL_VSERVER_VARS" || {
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
+    exit 1
+}
+. "$UTIL_VSERVER_VARS"
+. "$_LIB_FUNCTIONS"
+
+function showHelp()
+{
+    echo \
+$"Usage: $0 <vserver-name> <tag>
+
+Report bugs to <$PACKAGE_BUGREPORT>."
+    exit 0
+}
+
+function showVersion()
+{
+    echo $"\
+vpkg $PACKAGE_VERSION -- shows information about packages in vservers
+This program is part of $PACKAGE_STRING
+
+Copyright (C) 2004 Enrico Scholz
+This program is free software; you may redistribute it under the terms of
+the GNU General Public License.  This program has absolutely no warranty."
+    exit 0
+}
+
+
+case "$1" in
+    (--help)   showHelp $(basename $0);;
+    (--version)        showVersion ;;
+esac
+
+test "$1" -a "$2" || {
+    echo $"No vserver and/or tag given; use '--help' for more information" >&2
+    exit 1
+}
+
+vserver=$1
+tag=$2
+shift 2
+
+case "$tag" in
+    get-conffiles|install)     ;;
+    *)         echo $"Unsupport tag '$tag'" >&2; exit 1;;
+esac
+
+cfgdir=$($_VSERVER_INFO "$vserver" APPDIR pkgmgmt) || :
+vdir=$($_VSERVER_INFO "$1" VDIR) || :
+
+style=
+is_external=
+pkgmgmt.guessStyle "$vserver" style || exit 2
+pkgmgmt.isInternal "$vserver"       || is_external=1
+
+cmd=()
+
+case "$style" in
+    (redhat|mandrake)
+       rpm_param=
+       apt_param=
+       case "$tag" in
+           ## rpm outputs sometimes '(contains no files)', so return
+           ## only the valid output
+           (get-conffiles)
+               rpm_param=( -qac --pipe "$_SED '\!^/!p;d'" );;
+           (install)
+               rpm_param=( -Uvh "$@" )
+               apt_param=( install "$@" )
+               ;;
+       esac
+       
+       if test -n "$is_external"; then
+           have_apt=1
+           test -d "$cfgdir"/base/apt -o -d "$cfgdir"/aptetc || have_apt=
+       else
+           have_apt=
+           for i in /bin /usr/bin /usr/local/bin; do
+               test ! -x "$vdir$i"/apt-get || { have_apt=1; break; }
+           done
+       fi
+       
+       if test -n "$is_external"; then
+           if test "$have_apt" -a "$apt_param"; then
+               cmd=( "$_VAPT_GET" "$vserver" -- "${apt_param[@]}" )
+           else
+               cmd=( "$_VRPM" "$vserver" -- "${rpm_param[@]}" )
+           fi
+       else
+           if test "$have_apt" -a "$apt_param"; then
+               cmd=( "$_VSERVER" --silent "$vserver" exec apt-get "${apt_param[@]}" )
+           else
+               cmd=( "$_VSERVER" --silent "$vserver" exec rpm "${rpm_param[@]}" )
+           fi
+       fi
+       ;;
+    (debian)
+       case "$tag" in
+           (get-conffiles)
+               cmd=( sh -c "cat /var/lib/dpkg/info/*.conffiles 2>/dev/null" )
+               ;;
+           (install)
+               cmd=( apt-get install "$@" )
+               ;;
+       esac
+
+       if test -n "$is_external"; then
+           echo $"'external' packagemanagement is not supported for Debian" >&2
+           exit 1
+       else
+           cmd=( "$_VSERVER" --silent "$vserver" exec "${cmd[@]}" )
+       fi
+       ;;
+    (*)
+       echo $"Packagemanagement is not supported for '$style' style" >&2
+       exit 2
+       ;;
+esac
+
+export LANG=C
+exec "${cmd[@]}"
diff --git a/scripts/vprocunhide b/scripts/vprocunhide
new file mode 100755 (executable)
index 0000000..cc337e4
--- /dev/null
@@ -0,0 +1,95 @@
+#!/bin/bash
+# $Id: vprocunhide,v 1.8 2005/04/10 00:55:51 ensc Exp $
+#
+# Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
+test -e "$UTIL_VSERVER_VARS" || {
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
+    exit 1
+}
+. "$UTIL_VSERVER_VARS"
+. "$_LIB_FUNCTIONS"
+
+function showHelp()
+{
+    echo $\
+"Usage: vprocunhide
+
+Return values:
+    0  ...  no errors
+    1  ...  configuration error
+    2  ...  some files were changed but errors occured on other ones
+    3  ...  operation failed on every file
+
+Report bugs to <$PACKAGE_BUGREPORT>."
+    exit 0
+}
+
+function showVersion()
+{
+    echo \
+$"vprocunhide $PACKAGE_VERSION -- unhides /proc entries
+This program is part of $PACKAGE_STRING
+
+Copyright (C) 2004 Enrico Scholz
+This program is free software; you may redistribute it under the terms of
+the GNU General Public License.  This program has absolutely no warranty."
+    exit 0
+}
+
+
+while test -n "$1"; do
+    case "$1" in
+       --help)         showHelp;;
+       --version)      showVersion;;
+    esac
+done
+
+findFile UNHIDEFILE \
+    "$__CONFDIR"/.defaults/apps/vprocunhide/files \
+    "$__PKGLIBDEFAULTDIR"/vprocunhide-files
+
+ok=1
+passed=
+while read filename; do
+    params=()
+
+    case "$filename" in
+       (\#*)   continue;;
+       (\~*)   params=( --admin --watch --hide ); filename=${filename#\~};;
+       (-*)    params=( --admin         --hide ); filename=${filename#-};;
+       (:*)    params=(         --watch --hide ); filename=${filename#:};;
+       (!*)    params=(                 --hide ); filename=${filename#!};;
+       (+*)    params=(                --!hide ); filename=${filename#+};;
+       (*)     params=(                --!hide );;
+    esac
+       
+    case "$filename" in
+       (*/)    params=( "${params[@]}" -R );;
+       (*)     ;;
+    esac
+
+    set -- $filename
+    test -e "$1" || continue
+    
+    $_SETATTR -x "${params[@]}" "$@" &&        passed=1 || ok=
+done <"$UNHIDEFILE"
+
+test -n "$ok"     && exit 0 || \
+test -n "$passed" && exit 2 || \
+exit 3
index b918308..efa6e88 100755 (executable)
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
 #Presents the processes running in all virtual servers
-: ${UTIL_VSERVER_VARS:=$(dirname $0)/util-vserver-vars}
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
 test -e "$UTIL_VSERVER_VARS" || {
-    echo "Can not find util-vserver installation; aborting..."
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
     exit 1
 }
 . "$UTIL_VSERVER_VARS"
 
-exec $SBINDIR/chcontext --silent --ctx 1 pstree $*
-
-
+exec $__SBINDIR/chcontext --silent --ctx 1 pstree "$@"
index 86d2214..1ae226a 100755 (executable)
@@ -1,12 +1,11 @@
-#!/bin/sh
+#! /bin/bash
+# $Id: vrpm,v 1.13 2005/01/27 21:24:44 ensc Exp $
 
 # Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
-# based on vrpm by Jacques Gelinas
 #  
 # 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, or (at your option)
-# any later version.
+# the Free Software Foundation; version 2 of the License.
 #  
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
-# Wrapper to update/install package in many vservers at once
-
-: ${UTIL_VSERVER_VARS:=$(dirname $0)/util-vserver-vars}
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
 test -e "$UTIL_VSERVER_VARS" || {
-    echo "Can not find util-vserver installation; aborting..."
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
     exit 1
 }
 . "$UTIL_VSERVER_VARS"
+. "$_LIB_FUNCTIONS"
 
-usage(){
-       echo vrpm: Install/Updates packages in several vservers at once
-       echo vrpm vservers ... -- rpm options and packages
-       echo vrpm \[--unify\] ALL -- rpm options and packages
-       echo vrpm \[--unify\] server1 server2 -- -Uvh package.rpm
-       echo
-       echo vrpm is executed in the root server
-       echo "--unify run vunify on the vserver for the updated packages"
+function showHelp()
+{
+    echo \
+$"Usage: $0 <vserver-name>* [--all] [--quiet|-q] [--help] [--version] [--unify] -- <rpm-params>+
+
+Report bugs to <$PACKAGE_BUGREPORT>."
+
+    exit $1
 }
-UNIFY=no
-if [ "$1" = "--unify" ] ; then
-       UNIFY=yes
-       shift
-fi
-if [ $# = 0 ] ; then
-       usage
-else
-       SERVERS=
-       while [ $# -gt 0 -a "$1" != "--" ]
-       do
-               if [ "$1" = "ALL" ] ; then
-                       SERVERS=`cd $VROOTDIR && ls`
-               else
-                       SERVERS="$SERVERS $1"
-               fi
-               shift
-       done
-       if [ "$1" != "--" ] ; then
-               usage
-       elif [ "$SERVERS" = "" ] ; then
-               echo no server specified
-               echo
-               usage
-       else
-               shift
-               for serv in $SERVERS
-               do
-                       # We try to run the rpm command in the same security
-                       # context than the vserver, if running.
-                       # This way, process operations will be done in the proper
-                       # context
-                       # If the vserver is not running, chcontext will
-                       # pick an unused one.
-                       CTXOPT=""
-                       CTXFILE=/var/run/vservers/$serv.ctx
-                       if [ -f $CTXFILE ] ; then
-                               source $CTXFILE
-                               CTXOPT="--ctx $S_CONTEXT"
-                       fi
-                       #echo rpm --root $VROOTDIR/$serv $*
-                       echo Updating server $serv
-                       $SBINDIR/chcontext --silent $CTXOPT rpm --root $VROOTDIR/$serv $*
-               done
-               if [ "$UNIFY" = "yes" ] ; then
-                       PACKAGES=
-                       for pkg in $*
-                       do
-                               case $pkg in
-                               -*)
-                                       # RPM options ?
-                                       ;;
-                               --*)
-                                       # RPM options ?
-                                       ;;
-                               *)
-                                       pkg=`rpm -qp $pkg --queryformat %{name}`
-                                       PACKAGES="$PACKAGES $pkg"
-                                       ;;
-                               esac
-                       done
-                       echo Unification
-                       $PKGLIBDIR/vunify --excldir /var/log $SERVERS -- $PACKAGES
-               fi
-       fi
-fi
-       
 
+function showVersion()
+{
+    echo \
+$"vrpm $PACKAGE_VERSION -- rpm for vservers
+This program is part of $PACKAGE_STRING
+
+Copyright (C) 2003 Enrico Scholz
+This program is free software; you may redistribute it under the terms of
+the GNU General Public License.  This program has absolutely no warranty."
+    
+    exit $1
+}
+
+do_unify=
+is_quiet=
+declare -a vservers=()
+
+while test "$#" -ge 1; do
+    case "$1" in
+       --quiet|-q)
+           is_quiet=1
+           ;;
+       --all)
+           getAllVservers tmp
+           vservers=( "${vservers[@]}" "${tmp[@]}" )
+           ;;
+       --unify)
+           do_unify=1
+           ;;
+       --)
+           shift; break;;
+       --help)
+           showHelp 0;;
+       --version)
+           showVersion 0;;
+       *)  vservers=( "${vservers[@]}" "$1" )
+     esac
+     shift
+done
+
+test "$#" -ge 1 || showHelp 1 >&2
+test "${#vservers[@]}" -ne 1 || is_quiet=1
+
+cnt=0
+res=255
+
+for i in "${vservers[@]}"; do
+    cnt=$[ cnt + 1 ]
+
+    test -n "$is_quiet" || {
+       colorize bold echo -n "vrpm: operating on vserver "
+       colorize bold colorize emph echo "$i"
+       xtermTitle "vrpm: operating on vserver '$i'  [$cnt/${#vservers[@]}]"
+    }
+
+    if pkgmgmt.isInternal "$i"; then
+       $_VSERVER "$i" exec rpm "$@"
+    else
+       callInNamespace "$i" \
+           "$_VNAMESPACE" --new -- "$_VRPM_WORKER" "$i" "$@"
+    fi
+    res=$?
+
+    test $res -eq 0 -o "$is_quiet" || {
+       colorize error echo -n $"vrpm failed on vserver '$i' with errorcode $res"
+       echo
+    }
+
+    test -n "$is_quiet" || echo
+done
+
+test -z "$do_unify" || echo "unify currently unsupported" >&2
+test "$cnt" -ge 0   || echo "No vservers specified" >&2
+exit $res
diff --git a/scripts/vrpm-preload b/scripts/vrpm-preload
new file mode 100755 (executable)
index 0000000..7517aa0
--- /dev/null
@@ -0,0 +1,37 @@
+#! /bin/bash
+# $Id: vrpm-preload,v 1.12 2005/01/27 21:24:44 ensc Exp $
+
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+set -e
+
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
+test -e "$UTIL_VSERVER_VARS" || {
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
+    exit 1
+}
+. "$UTIL_VSERVER_VARS"
+. "$_LIB_FUNCTIONS"
+
+for bin in `which rpm` /bin/rpm /usr/lib/rpm/rpm${RPM_FLAVOR:-i} ""; do
+    ldd "$bin" &>/dev/null && break
+done
+
+test -x "$bin" ||
+    panic $"No dynamically linked rpm binary found; exiting..."
+
+rpmFake.init "$CUR_VSERVER"
+rpmFake.exec "$bin" "$@"
diff --git a/scripts/vrpm-worker b/scripts/vrpm-worker
new file mode 100755 (executable)
index 0000000..c271753
--- /dev/null
@@ -0,0 +1,34 @@
+#! /bin/bash
+# $Id: vrpm-worker,v 1.5 2004/04/08 06:05:06 ensc Exp $
+
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+set -e
+
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
+test -e "$UTIL_VSERVER_VARS" || {
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
+    exit 1
+}
+. "$UTIL_VSERVER_VARS"
+. "$_LIB_FUNCTIONS"
+
+vserver=$1
+shift
+
+pkgInit "$vserver" rpm
+
+exec $RPM_BINARY --root "$VDIR" "$@"
index 79e553f..59553fa 100755 (executable)
@@ -1,12 +1,11 @@
-#!/bin/bash
+#! /bin/bash
+# $Id: vserver,v 1.30 2005/04/28 18:03:42 ensc Exp $
 
-# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
-# based on vserver by Jacques Gelinas
+# Copyright (C) 2003,2004,2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 #  
 # 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, or (at your option)
-# any later version.
+# the Free Software Foundation; version 2 of the License.
 #  
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
-# This is a script to control a virtual server
+# set -e
 
-: ${UTIL_VSERVER_VARS:=$(dirname $0)/util-vserver-vars}
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
 test -e "$UTIL_VSERVER_VARS" || {
-    echo "Can not find util-vserver installation; aborting..."
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
     exit 1
 }
 . "$UTIL_VSERVER_VARS"
+. "$_LIB_FUNCTIONS"
 
-USR_SBIN=$SBINDIR
-USR_LIB_VSERVER=$PKGLIBDIR
+### Some local functions
 
-VSERVER_CMD=$USR_SBIN/vserver
-CHBIND_CMD=$USR_SBIN/chbind
-CHCONTEXT_CMD=$USR_SBIN/chcontext
-SAVE_S_CONTEXT_CMD=$USR_LIB_VSERVER/save_s_context
-CAPCHROOT_CMD=$USR_LIB_VSERVER/capchroot
-VSERVERKILLALL_CMD=$USR_LIB_VSERVER/vserverkillall
-DEFAULTPATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin
+function showHelp()
+{
+    echo \
+$"Usage: $(basename $0) [-s|--sync] [-v|--verbose] [--silent]
+             [--] <vserver> <command> <args>*
 
-vserver_mknod(){
-       mknod $1 $2 $3 $4
-       chmod $5 $1
-}
+<vserver> is the name of a vserver.
 
-mountproc()
-{
-       mkdir -p $1/proc $1/dev/pts
-       if [ ! -d $1/proc/1 ] ; then
-               mount -t proc none $1/proc
-               mount -t devpts -o gid=5,mode=0620 none $1/dev/pts
-       fi
-}
-umountproc()
-{
-       umount $1/proc 2>/dev/null
-       umount $1/dev/pts 2>/dev/null
-}
+Possible commands are:
+    start [--rescue] [--rescue-cmd <cmd>]
+                ... starts the specified vserver
+    stop        ... stops the specified vserver
+    restart     ... restarts the specified vserver; this is the subsequent
+                    execution of a synchronized 'stop' and a 'start'
+    condrestart ... restarts the vserver when it is running already
+    suexec <user> <shell-command> <args*>
+                ... executes a command as the specified user in the vserver
+    exec <shell-command> <args*>
+                ... executes a command as root in the vserver
+    enter       ... executes the configured shell in the vserver
+    chkconfig <chkconfig-options*>
+                ... modifies the init-system; currently, only Red Hat's
+                   chkconfig is supported
+    running     ... succeeds iff the vserver is running
+    status      ... gives out some human readable status information about
+                    the vserver, and succeeds iff the vserver is running
 
-# Check that the vservers parent directory has permission 000
-# This is the key to avoid chroot escape
-testperm()
-{
-       return
-       PERM=`$USR_LIB_VSERVER/showperm $VROOTDIR/$1/..`
-       if [ "$PERM" != 000 ] ; then
-               echo
-               echo "**********************************************************"
-               echo $VROOTDIR/$1/.. has insecure permissions.
-               echo A vserver administrator may be able to visit the root server.
-               echo To fix this, do
-               echo "  " chmod 000 $VROOTDIR/$1/..
-               echo do it anytime you want, even if vservers are running.
-               echo "**********************************************************"
-               echo
-       fi
-}
-# Set the IP alias needed by a vserver
-ifconfig_iproot()
-{
-       if [ "$NODEV" = "" -a "$IPROOT" != "" -a "$IPROOT" != "0.0.0.0" -a "$IPROOT" != "ALL" ] ;then
-               # A vserver may have more than one IP
-               # The first alias is dev:vserver
-               # and the other are dev:vserver1,2,3 and so on
-               # An IP may hold the device. The following is valid
-               #       IPROOT="1.2.4.5 eth1:1.2.3.5"
-               #       IPROOTDEV=eth0
-               # The first IP 1.2.3.4 will go on eth0 and the other on eth1
-               # VLAN devices are also supported (eth0.231 for vlan 231)
-               SUFFIX=
-               for oneip in $IPROOT
-               do
-                       IPDEV=$IPROOTDEV
-                       MASK=$IPROOTMASK
-                       BCAST=$IPROOTBCAST
-                       # Split the device and IP if available
-                       case $oneip in
-                       *:*)
-                               eval `echo $oneip | tr : ' ' | (read dev ip; echo oneip=$ip; echo IPDEV=$dev)`
-                               ;;
-                       esac
-                       # Split the IP and the netmask if available
-                       case $oneip in
-                       */*)
-                               eval `echo $oneip | tr / ' ' | (read ip msk; echo oneip=$ip; echo MASK=$msk)`
-                               eval `$USR_LIB_VSERVER/ifspec "" "$oneip" "$MASK" "$BCAST"`
-                               ;;
-                       esac
-                       if [ "$IPDEV" != "" ] ; then
-                               case $IPDEV in
-                               *.*)
-                                       if [ ! -f /proc/net/vlan/$IPDEV ] ; then
-                                               /sbin/vconfig add `echo $IPDEV | tr . ' '`
-                                               # Put a dummy IP
-                                               /sbin/ifconfig $IPDEV 127.0.0.1
-                                       fi
-                                       ;;
-                               esac
-                               # Compute the default netmask, if missing
-                               eval `$USR_LIB_VSERVER/ifspec $IPDEV "$oneip" "$MASK" "$BCAST"`
-                               IPROOTMASK=$NETMASK
-                               IPROOTBCAST=$BCAST
-                               #echo /sbin/ifconfig $IPDEV:$1$SUFFIX $oneip netmask $IPROOTMASK broadcast $IPROOTBCAST
-                               /sbin/ifconfig $IPDEV:$1$SUFFIX $oneip netmask $IPROOTMASK broadcast $IPROOTBCAST
-                       fi
-                       if [ "$SUFFIX" = "" ] ; then
-                               SUFFIX=1
-                       else
-                               SUFFIX=`expr $SUFFIX + 1`
-                       fi
-               done
-       fi
-       if [ "$IPROOTBCAST" = "" ] ; then
-               IPROOTBCAST=255.255.255.255
-       fi
-}
-ifconfig_iproot_off()
-{
-       if [ "$NODEV" = "" -a "$IPROOT" != "" -a "$IPROOT" != "0.0.0.0" -a "$IPROOT" != "ALL"  -a "$IPROOTDEV" != "" ] ;then
-               SUFFIX=
-               for oneip in $IPROOT
-               do
-                       IPDEV=$IPROOTDEV
-                       # Split the device and IP if available
-                       case $oneip in
-                       *:*)
-                               eval `echo $oneip | tr : ' ' | (read dev ip; echo IPDEV=$dev)`
-                               ;;
-                       esac
-                       /sbin/ifconfig $IPDEV:$1$SUFFIX down 2>/dev/null
-                       if [ "$SUFFIX" = "" ] ; then
-                               SUFFIX=1
-                       else
-                               SUFFIX=`expr $SUFFIX + 1`
-                       fi
-               done
-       fi
-}
-# Split an IPROOT definition, trash the devices and
-# compose a set of --ip option for chbind
-setipopt(){
-       RET=
-       IPS="$*"
-       if [ "$IPS" = "" ] ; then
-               IPS=0.0.0.0
-       fi
-       if [ "$1" = "ALL" ] ; then
-               IPS=`$USR_LIB_VSERVER/listdevip`
-       fi
-       for oneip in $IPS
-       do
-               # Split the device and IP if available
-               case $oneip in
-               *:*)
-                       eval `echo $oneip | tr : ' ' | (read dev ip; echo oneip=$ip)`
-                       ;;
-               esac
-               #case $oneip in
-               #*/*)
-               #       eval `echo $oneip | tr / ' ' | (read ip msk; echo oneip=$ip)`
-               #       ;;
-               #esac
-               echo --ip $oneip
-       done
+    build <buildopts>*
+                ... builds a new vserver from scratch
+
+    unify [-R]
+               ... (de)unify vserver
+               
+    pkg install <pkg>
+               ... installs package(s) in the vserver
+               
+    apt-get,apt-config,apt-cache <apt-opts>*
+               ... execute the apt-* command for the given vserver
+    rpm <rpm-opts>*
+               ... execute the rpm command for the given vserver
+
+    pkgmgmt externalize|internalize [-y]
+               ... externalize or internalize the package-management for the
+                   given vserver. 'Externalize' means that package metadata
+                   and management tools (apt-get,rpm) are living in the host,
+                   while 'internalize' means that data and programs from the
+                   vserver will be used.
+
+    unify <vunify-opts>*
+                ... unify the vserver with its reference vserver(s).
+                   
+
+Please report bugs to $PACKAGE_BUGREPORT"
+    exit 0
 }
 
-# Extract the initial runlevel from the vserver inittab
-get_initdefault()
+function showVersion()
 {
-       INITDEFAULT=`grep :initdefault $VROOTDIR/$1/etc/inittab | sed 's/:/ /g' | ( read a level b; echo $level)`
+    echo \
+$"vserver $PACKAGE_VERSION -- manages the state of vservers
+This program is part of $PACKAGE_STRING
+
+Copyright (C) 2003,2004,2005 Enrico Scholz
+This program is free software; you may redistribute it under the terms of
+the GNU General Public License.  This program has absolutely no warranty."
+    exit 0
 }
 
-# Read the vserver configuration file, reusing the PROFILE value
-# found in /var/run/vservers
-readlastconf()
+function suexec()
 {
-       if [ -f /var/run/vservers/$1.ctx ] ; then
-               . /var/run/vservers/$1.ctx
-               if [ "$S_PROFILE" != "" ] ; then
-                       export PROFILE=$S_PROFILE
-               fi
-       fi
-       export PROFILE
-       . /etc/vservers/$1.conf
+    . $__PKGLIBDIR/vserver.suexec
 }
-usage()
+
+function restart()
 {
-       echo vserver [ options ] server-name command ...
-       echo
-       echo server-name is a directory in $VROOTDIR
-       echo
-       echo The commands are:
-       echo " build   : Create a virtual server by copying the packages"
-       echo "           of the root server"
-       echo " enter   : Enter in the virtual server context and starts a shell"
-       echo "           Same as \"vserver name exec /bin/sh\""
-       echo " exec    : Exec a command in the virtual server context"
-       echo " suexec  : Exec a command in the virtual server context uid"
-       echo " service : Control a service inside a vserver"
-       echo "           vserver name service service-name start/stop/restart/status"
-       echo " start   : Starts the various services in the vserver, runlevel 3"
-       echo " stop    : Ends all services and kills the remaining processes"
-       echo " running : Tells if a virtual server is running"
-       echo "           It returns proper exit code, so you can use it as a test"
-       echo " status  : Tells some information about a vserver"
-       echo " chkconfig : It turns a server on or off in a vserver"
-       echo
-       echo "--nodev  : Do not configure the IP aliases of the vserver"
-       echo "           Useful to enter a vserver without enabling its network"
-       echo "           and avoiding conflicts with another copy of this vserver"
-       echo "           running elsewhere"
-       echo "--silent : No informative messages about vserver context and IP numbers"
-       echo "           Useful when you want to redirect the output"
+    "${SELF[@]}" --sync "$vserver" stop
+    exec "${SELF[@]}" "$vserver" start
 }
 
-calculateCaps()
+function msg()
 {
-    local f
-    for f in "$@"; do
-       case $f in
-           !CAP_SYS_CHROOT)
-               CHROOTOPT=--nochroot
-               ;;
-           *)
-               CAPS="$CAPS --cap $f"
-               ;;
-       esac
-    done
+    test -z "$OPTION_SILENT" || return 0
+    echo "$@"
 }
 
-SILENT=
-NODEV=
-while true
-do
-       if [ "$1" = "--silent" ] ; then
-               SILENT=--silent
-               shift
-       elif [ "$1" = "--nodev" ] ; then
-               NODEV=--nodev
-               shift
-       else
-               break
-       fi
+### main starts here
+
+set +e
+
+OPTIONS_ORIG=( "$@" )
+tmp=$(getopt -o +sv --long nonamespace,--nonamespace,--insecure,defaulttty,help,debug,version,sync,verbose,silent -n "$0" -- "$@") || exit 1
+eval set -- "$tmp"
+
+OPTION_FORCE_SYNC=
+OPTION_VERBOSE=
+OPTION_SILENT=
+OPTION_DEBUG=
+OPTION_NONAMESPACE=
+OPTION_INSECURE=
+OPTION_DEFAULTTTY=
+
+while true; do
+    case "$1" in
+       (--help)        showHelp $0 ;;
+       (--version)     showVersion ;;
+       (--debug)       OPTION_DEBUG=$1; set -x;;
+       (-v|--verbose)  OPTION_VERBOSE=$1;;
+       (-s|--sync)     OPTION_FORCE_SYNC=$1;;
+       (--silent)      OPTION_SILENT=$1;;
+       (----nonamespace)OPTION_NONAMESPACE=$1;;
+       (--defaulttty)  OPTION_DEFAULTTTY=$1;;
+       (----insecure)  OPTION_INSECURE=1;;
+       (--)            shift; break;;
+       (*)             echo $"vserver: internal error; arg=='$1'" >&2; exit 1;;
+    esac
+    shift
 done
-# Setup the default ulimit for a vserver
-setdefulimit(){
-       # File handle are limited to half of the current system limit
-       # Virtual memory is limited to the ram size
-       NFILE=`cat /proc/sys/fs/file-max`
-       NFILE=`expr $NFILE / 2`
-       VMEM=`cat /proc/meminfo  | grep MemTotal | (read a b c; echo $b)`
-       # Disabled for now, we need a different to set the security
-       # context limit than fiddling with ulimit
-       #ulimit -H -n $NFILE -v $VMEM
-}
-if [ $# -lt 2 ] ; then
-       usage
-elif [ "$2" = "build" ] ; then
-       # Either the directory does not exist or is empty
-       NBSUB=`ls $VROOTDIR/$1 2>/dev/null | grep -v lost+found | wc -l` 
-       NBSUB=`expr $NBSUB`
-       if [ "$NBSUB" != 0 ] ; then
-               echo Virtual server $VROOTDIR/$1 already exist
-       else
-               if [ ! -d $VROOTDIR ] ; then
-                       mkdir $VROOTDIR || exit 1
-                       chmod 000 $VROOTDIR
-                       chattr +t $VROOTDIR
-                       echo Directory $VROOTDIR was created with permissions 000
-               fi
-               mkdir -p $VROOTDIR/$1 || exit 1
-               chattr -t $VROOTDIR/$1
-               chmod 755 $VROOTDIR/$1
-               if test "$UTIL_VSERVER_AVOID_COPY"; then
-                   mkdir -p $VROOTDIR/$1/{etc/rc.d/init.d,sbin,var/run,var/log}
-               else
-                   cp -ax /sbin /bin /etc /usr /var /lib $VROOTDIR/$1/. || exit 1
-               fi
-               cd $VROOTDIR/$1 || exit 1
-               rm -fr lib/modules/*
-               rm -f var/spool/mail/*
-               rm -f `find var/run -type f`
-               rm -f `find var/log -type f`
-               touch var/log/wtmp
-               rm -f var/lock/subsys/*
-               rm -f etc/cron.d/kmod
-               mkdir proc tmp home root boot
-               test -f /root/.bashrc && cp -a /root/.bashrc root/.
-               test -f /root/.bash_profile && cp -a /root/.bash_profile root/.
-               chmod 1777 tmp
-               chmod 750 root
-               # Create a minimal dev so the virtual server can't grab
-               # more privileges
-               mkdir dev dev/pts
-               vserver_mknod dev/null c 1 3 666
-               vserver_mknod dev/zero c 1 5 666
-               vserver_mknod dev/full c 1 7 666
-               vserver_mknod dev/random c 1 8 644
-               vserver_mknod dev/urandom c 1 9 644
-               vserver_mknod dev/tty c 5 0 666
-               vserver_mknod dev/ptmx c 5 2 666
-               touch dev/hdv1
-               # Create a dummy /etc/fstab and /etc/mtab to please
-               # df and linuxconf. We use hdv1, which does not exist
-               # to remind the admin that it is not the real drive
-               echo /dev/hdv1 / ext2 defaults 1 1 >etc/fstab
-               echo /dev/hdv1 / ext2 rw 0 0 >etc/mtab
-               # Install the vreboot utility
-               cp -a $USR_LIB_VSERVER/vreboot sbin/.
-               ln -sf vreboot sbin/vhalt
-
-               echo Directory $VROOTDIR/$1 has been populated
-               if [ ! -d /etc/vservers ] ; then
-                       mkdir /etc/vservers
-                       chmod 600 /etc/vservers
-                       echo Directory /etc/vservers has been created
-               fi
-               if [ ! -f /etc/vservers/$1.conf ] ; then
-                       CONF=/etc/vservers/$1.conf
-                       cat >$CONF <<-EOF
-if [ "$PROFILE" = "" ] ; then
-       PROFILE=prod
+
+OPTION_ALL=( $OPTION_SILENT $OPTION_VERBOSE $OPTION_DEBUG $OPTION_DEFAULTTTY )
+SELF=( "$0" "${OPTION_ALL[@]}" )
+
+vserver=$1
+cmd=$2
+
+test "$cmd" != build || { shift 2; exec "$_VSERVER_BUILD" -n "$vserver" "$@"; }
+
+
+allow_legacy=
+
+case "$vserver" in
+    (./*) VSERVER_DIR=`pwd`/$vserver;;
+    (/*)  VSERVER_DIR=$vserver;;
+    (*)          VSERVER_DIR=$__CONFDIR/$vserver
+         allow_legacy=1
+         ;;
+esac
+
+if test -n "$allow_legacy"; then
+    do_legacy=
+    test ! -e "$VSERVER_DIR/legacy" || do_legacy=1
+    test -d "$VSERVER_DIR" -o ! -e "$__CONFDIR/$vserver.conf" || do_legacy=1
+
+    test -z "$do_legacy" || {
+       echo $"WARNING: can not find configuration, assuming legacy method" >&2
+       exec "$_VSERVER_LEGACY" "$@"
+    }
 fi
-# Select the IP number assigned to the virtual server
-# This IP must be one IP of the server, either an interface
-# or an IP alias
-# A vserver may have more than one IP. Separate them with spaces.
-# do not forget double quotes.
-# Some examples:
-# IPROOT="1.2.3.4 2.3.4.5"
-# IPROOT="eth0:1.2.3.4 eth1:2.3.4.5"
-# If the device is not specified, IPROOTDEV is used
-case \$PROFILE in
-prod)
-       IPROOT=1.2.3.4
-       # The netmask and broadcast are computed by default from IPROOTDEV
-       #IPROOTMASK=
-       #IPROOTBCAST=
-       # You can define on which device the IP alias will be done
-       # The IP alias will be set when the server is started and unset
-       # when the server is stopped
-       #IPROOTDEV=eth0
-       # You can set a different host name for the vserver
-       # If empty, the host name of the main server is used
-       S_HOSTNAME=
+
+test -d "$VSERVER_DIR" || {
+    echo $"\
+Can not find a vserver-setup at '$VSERVER_DIR/'.
+
+Possible solutions:
+* fix the spelling of the '$vserver' vserver name
+* read 'vserver $vserver build --help' about ways to create a new vserver
+* see 'vserver --help' for the syntax of this command
+"
+    exit 5
+} >&2
+
+if test -e "$VSERVER_DIR"/name; then
+    read VSERVER_NAME <"$VSERVER_DIR"/name
+else
+    VSERVER_NAME=$(basename "$VSERVER_DIR")
+fi
+
+test "$2" != start -o -n "$OPTION_NONAMESPACE" || isAvoidNamespace "$VSERVER_DIR" || \
+    exec $_VNAMESPACE --new -- $_VSERVER ----nonamespace "${OPTIONS_ORIG[@]}"
+
+. $__PKGLIBDIR/vserver.functions
+case "$2" in
+    (start|stop)
+       shift 2
+       . $__PKGLIBDIR/vserver.$cmd
        ;;
-backup)
-       IPROOT=1.2.3.4
-       #IPROOTMASK=
-       #IPROOTBCAST=
-       #IPROOTDEV=eth0
-       S_HOSTNAME=
+    (suexec|restart)
+       shift 2
+       $cmd "$@"
+       ;;
+    (condrestart)
+       test ! isVserverRunning "$VSERVER_DIR" || restart
+       ;;
+    (exec)
+       shift 2
+       suexec root "$@"
+       ;;
+    (chkconfig)
+       shift 2
+       suexec root chkconfig "$@"
+       ;;
+    (enter)
+       getEnterShell "$VSERVER_DIR"
+       suexec root "${ENTER_SHELL[@]}"
+       ;;
+    (running)
+       isVserverRunning "$VSERVER_DIR"
+       ;;
+
+    (unify)
+       shift 2
+       exec $_VUNIFY "$@" "$vserver"
+       ;;
+
+    (hashify)
+       shift 2
+       exec $_VHASHIFY "$@" "$vserver"
        ;;
-esac
-# Uncomment the onboot line if you want to enable this
-# virtual server at boot time
-#ONBOOT=yes
-# You can set a different NIS domain for the vserver
-# If empty, the current on is kept
-# Set it to "none" to have no NIS domain set
-S_DOMAINNAME=
-# You can set the priority level (nice) of all process in the vserver
-# Even root won't be able to raise it
-S_NICE=
-# You can set various flags for the new security context
-# lock: Prevent the vserver from setting new security context
-# sched: Merge scheduler priority of all processes in the vserver
-#        so that it acts a like a single one.
-# nproc: Limit the number of processes in the vserver according to ulimit
-#        (instead of a per user limit, this becomes a per vserver limit)
-# private: No other process can join this security context. Even root
-# Do not forget the quotes around the flags
-S_FLAGS="lock nproc"
-# You can set various ulimit flags and they will be inherited by the
-# vserver. You enter here various command line argument of ulimit
-# ULIMIT="-HS -u 200"
-# The example above, combined with the nproc S_FLAGS will limit the
-# vserver to a maximum of 200 processes
-ULIMIT="-HS -u 1000"
-# You can set various capabilities. By default, the vserver are run
-# with a limited set, so you can let root run in a vserver and not
-# worry about it. He can't take over the machine. In some cases
-# you can to give a little more capabilities (such as CAP_NET_RAW)
-# S_CAPS="CAP_NET_RAW"
-S_CAPS=""
-# Select an unused context (this is optional)
-# The default is to allocate a free context on the fly
-# In general you don't need to force a context
-#S_CONTEXT=
-                       EOF
-                       echo $CONF has been created. Look at it\!
-               fi
-               # Turn off some service useless on a vserver
-               #               vserver_turnoff apmd network autofs dhcpd gpm ipchains iptables \
-               #                       irda isdn keytable kudzu linuxconf-setup netfs nfs nfslock \
-               #                       pcmcia portmap pppoe random rawdevices rhnsd rstatd ruserd \
-               #                       rwalld rwhod sendmail smb snmpd v_httpd h_xinetd v_sshd vservers \
-               #                       xfs ypbind xinetd
-               (
-                       cd etc/init.d 2>/dev/null || cd etc/rc.d/init.d
-                       for serv in *
-                       do
-                               case $serv in
-                               *.bak|*~|functions|killall|halt|single)
-                                       ;;
-                               *)
-                                       #$USR_LIB_VSERVER/capchroot $VROOTDIR/$1 /sbin/chkconfig --level 2345 $serv off
-                                       $0 --silent $1 chkconfig --level 2345 $serv off
-                                       ;;
-                               esac
-                       done
-               )
-               rm -f etc/rc.d/rc6.d/S*reboot
-       fi
-elif [ ! -f /etc/vservers/$1.conf ] ; then
-       echo No configuration for this vserver: /etc/vservers/$1.conf
-       exit 1
-elif [ ! -d $VROOTDIR/$1/. ] ; then
-       echo No directory for this vserver: $VROOTDIR/$1
-       exit 1
-elif [ "$2" = "start" ] ; then
-       echo Starting the virtual server $1
-       testperm $1
-       if ! $VSERVER_CMD $1 running
-       then
-               test -x /etc/vservers/$1.sh && /etc/vservers/$1.sh pre-start $1
-               IPROOT=
-               IPROOTMASK=
-               IPROOTBCAST=
-               IPROOTDEV=
-               S_NICE=
-               S_FLAGS=
-               . /etc/vservers/$1.conf
-               export PROFILE
-               ifconfig_iproot $1
-               cd $VROOTDIR/$1 || exit 1
-
-               if [ "$PROFILE" != "" ] ; then
-                       echo export PROFILE=$PROFILE >etc/PROFILE
-               fi
-
-               rm -f `find var/run -type f`
-               touch var/run/utmp
-               chgrp ${UTMP_GROUP:-utmp} var/run/utmp
-               chmod 0664 var/run/utmp
-               rm -f  var/lock/subsys/*
-               mountproc $VROOTDIR/$1
-               CTXOPT=
-               HOSTOPT=
-               DOMAINOPT=
-               NICECMD=
-               FLAGS=
-               CAPS=
-               get_initdefault $1
-               STARTCMD="/etc/rc.d/rc $INITDEFAULT"
-               if [ -x $VROOTDIR/$1/etc/init.d/rc ] ; then
-                       STARTCMD="/etc/init.d/rc $INITDEFAULT"
-               elif [ -x $VROOTDIR/$1/usr/bin/emerge ] ; then
-                       STARTCMD="/sbin/rc default"
-               elif [ -x $VROOTDIR/$1/etc/rc.d/rc.M ] ; then
-                       STARTCMD="/etc/rc.d/rc.M"                       
-               fi
-
-               DISCONNECT=
-               FAKEINIT=
-               for f in $S_FLAGS dummy
-               do
-                       case $f in
-                       dummy)
-                               ;;
-
-                        minit)
-                               FAKEINIT=true
-                                FLAGS="$FLAGS --flag fakeinit"
-                                STARTCMD=/sbin/minit-start
-                                DISCONNECT=--disconnect
-                               ;;
-
-                       fakeinit)
-                               FAKEINIT=true
-                               FLAGS="$FLAGS --flag $f"
-                               STARTCMD=/sbin/init
-                               DISCONNECT=--disconnect
-                               ;;
-                       *)
-                               FLAGS="$FLAGS --flag $f"
-                               ;;
-                       esac
-               done
-               if [ -n "$S_START" ] ; then
-                       STARTCMD=$S_START
-               fi              
-               if [ "$FAKEINIT" = "" ] ; then
-                       $USR_LIB_VSERVER/fakerunlevel $INITDEFAULT var/run/utmp
-               fi
-
-               calculateCaps $S_CAPS
-
-               if [ "$S_CONTEXT" != "" ] ; then
-                       CTXOPT="--ctx $S_CONTEXT"
-               fi
-               if [ "$S_HOSTNAME" != "" ] ; then
-                       HOSTOPT="--hostname $S_HOSTNAME"
-                       export HOSTNAME=$S_HOSTNAME
-               fi
-               if [ "$S_DOMAINNAME" != "" ] ; then
-                       DOMAINOPT="--domainname $S_DOMAINNAME"
-               fi
-               if [ "$S_NICE" != "" ] ; then
-                       NICECMD="nice -$S_NICE"
-               fi
-               mkdir -p /var/run/vservers
-               chmod 700 /var/run/vservers
-               setdefulimit
-               if [ "$ULIMIT" != "" ] ; then
-                       ulimit $ULIMIT
-               fi
-               #echo FLAGS=$FLAGS
-               #echo CAPS=$CAPS
-               # We switch to $VROOTDIR/$1 now, because after the
-               # security context switch $VROOTDIR directory becomes a dead zone.
-               cd $VROOTDIR/$1
-               IPOPT=`setipopt $IPROOT`
-               export PATH=$DEFAULTPATH
-               $NICECMD $CHBIND_CMD $SILENT $IPOPT --bcast $IPROOTBCAST \
-                       $CHCONTEXT_CMD $SILENT $DISCONNECT $CAPS $FLAGS $CTXOPT $HOSTOPT $DOMAINOPT --secure \
-                       $SAVE_S_CONTEXT_CMD /var/run/vservers/$1.ctx \
-                       $CAPCHROOT_CMD $CHROOTOPT . $STARTCMD
-               sleep 2
-               test -x /etc/vservers/$1.sh && /etc/vservers/$1.sh post-start $1
-       fi
-elif [ "$2" = "running" ] ; then
-       if [ ! -f /var/run/vservers/$1.ctx ] ; then
-               echo Server $1 is not running
-               exit 1
-       else
-               . /var/run/vservers/$1.ctx
-               NB=$($USR_SBIN/vps ax | awk '{print $2}' | grep \^$S_CONTEXT\$ | wc -l)
-               #NB=`$CHCONTEXT_CMD --silent --ctx $S_CONTEXT ps ax | wc -l`
-               #NB=`eval expr $NB + 0`
-               if [ "$NB" -gt 0 ] ; then
-                       echo Server $1 is running
-                       exit 0
-               else
-                       echo Server $1 is not running
-                       exit 1
-               fi
-       fi
-elif [ "$2" = "status" ] ; then
-       if $0 $1 running
-       then
-               . /var/run/vservers/$1.ctx
-               NB=$($USR_SBIN/vps ax | awk '{print $2}' | grep \^$S_CONTEXT\$ | wc -l)
-               echo $NB processes running
-               echo Vserver uptime: `$USR_LIB_VSERVER/filetime /var/run/vservers/$1.ctx`
-       fi
-elif [ "$2" = "stop" ] ; then
-       echo Stopping the virtual server $1
-       IPROOT=
-       IPROOTMASK=
-       IPROOTBCAST=
-       IPROOTDEV=
-       CAPS=
-       IS_MINIT=
-       readlastconf $1
-       if $VSERVER_CMD $1 running
-       then
-               test -x /etc/vservers/$1.sh && /etc/vservers/$1.sh pre-stop $1
-               ifconfig_iproot $1
-               cd $VROOTDIR/$1
-               mountproc $VROOTDIR/$1
-               # The fakeinit flag tell us how to turn off the server
-               get_initdefault $1
-               export PREVLEVEL=$INITDEFAULT
-               STOPCMD="/etc/rc.d/rc 6"
-               if [ -x $VROOTDIR/$1/etc/init.d/rc ] ; then
-                       STOPCMD="/etc/init.d/rc 6"
-               elif [ -x $VROOTDIR/$1/usr/bin/emerge ] ; then
-                       STOPCMD="/sbin/rc shutdown"
-               elif [ -x $VROOTDIR/$1/etc/rc.d/rc.6 ] ; then
-                       STOPCMD="/etc/rc.d/rc.6"
-               fi
-
-               for f in $S_FLAGS dummy
-               do
-                       case $f in
-                        minit)
-                               IS_MINIT=1
-                               FLAGS="$FLAGS --flag fakeinit"
-                                STOPCMD="/sbin/minit-stop"
-                                ;;
-
-                       fakeinit)
-                               FLAGS="$FLAGS --flag $f"
-                               STOPCMD="/sbin/init 6"
-                               ;;
-                       *)
-                               ;;
-                       esac
-               done
-
-               if [ -n "$S_STOP" ] ; then
-                       STOPCMD=$S_STOP
-               fi
                
-               calculateCaps $S_CAPS
-
-               cd $VROOTDIR/$1
-               IPOPT=`setipopt $IPROOT`
-               export PATH=$DEFAULTPATH
-               $CHBIND_CMD $SILENT $IPOPT --bcast $IPROOTBCAST \
-                       $CHCONTEXT_CMD $SILENT $CAPS --secure --ctx $S_CONTEXT \
-                       $CAPCHROOT_CMD . $STOPCMD
-
-               if test "$IS_MINIT"; then
-                   echo "Waiting for minit finish-signal"
-                   dd if=var/run/minit-stop of=/dev/zero bs=1 count=1 &>/dev/null
-                   sleep 1
-               else
-                   echo sleeping 5 seconds
-                   sleep 5
-               fi
-
-               echo Killing all processes
-               $CHBIND_CMD --silent $IPOPT --bcast $IPROOTBCAST \
-                       $CHCONTEXT_CMD $CAPS --secure --silent --ctx $S_CONTEXT \
-                       $VSERVERKILLALL_CMD
-       fi
-       # We umount anyway, because "enter" establish the mount
-       # but when you exit, the server is considered not running
-       umountproc $VROOTDIR/$1
-       cd /
-       test -x /etc/vservers/$1.sh && /etc/vservers/$1.sh post-stop $1
-       ifconfig_iproot_off $1
-elif [ "$2" = "restart" ] ; then
-       if $0 $1 running
-       then
-               $0 $1 stop
-               $0 $1 start
-       fi
-elif [ "$2" = "suexec" ] ; then
-       if [ -z "$3" ] ; then
-               echo "Missing user!" >&2
-               echo "vserver vserver-name suexec user command [ args ... ]" >&2
-               exit 1
-       elif [ -z "$4" ] ; then
-               echo "Missing command and arguments!" >&2
-               echo "vserver vserver-name suexec user command [ args ... ]" >&2
-               exit 1
-       else
-               IPROOT=
-               IPROOTMASK=
-               IPROOTBCAST=
-               IPROOTDEV=
-               readlastconf $1
-               . /etc/vservers/$1.conf
-               cd $VROOTDIR/$1
-               ifconfig_iproot $1
-               mountproc $VROOTDIR/$1
-               PS1="[\u@vserver:$1 \W]"
-               export PS1
-               VSERVER=$1
-               USERID=$3
-               shift; shift; shift
-               CAPS=
-               for f in $S_CAPS dummy
-               do
-                       case $f in
-                       dummy)
-                               ;;
-                       !CAP_SYS_CHROOT)
-                               CHROOTOPT=--nochroot
-                               ;;
-                       *)
-                               CAPS="$CAPS --cap $f"
-                               ;;
-                       esac
-               done
-               FLAGS=
-               for f in $S_FLAGS dummy
-               do
-                       case $f in
-                        minit)
-                               FLAGS="$FLAGS --flag fakeinit"
-                                ;;
-
-                       dummy)
-                               ;;
-                       *)
-                               FLAGS="$FLAGS --flag $f"
-                               ;;
-                       esac
-               done
-               setdefulimit
-               if [ "$ULIMIT" != "" ] ; then
-                       ulimit $ULIMIT
-               fi
-               if $0 $VSERVER running >/dev/null
-               then
-                       . /var/run/vservers/$VSERVER.ctx
-                       cd $VROOTDIR/$VSERVER
-                       IPOPT=`setipopt $IPROOT`
-                       export PATH=$DEFAULTPATH
-                       exec $CHBIND_CMD $SILENT $IPOPT --bcast $IPROOTBCAST \
-                               $CHCONTEXT_CMD $SILENT $FLAGS $CAPS --secure --ctx $S_CONTEXT \
-                               $CAPCHROOT_CMD --suid $USERID . "$@"
-               else
-                       test -x /etc/vservers/$1.sh && /etc/vservers/$1.sh pre-start $1
-                       CTXOPT=
-                       HOSTOPT=
-                       DOMAINOPT=
-                       if [ "$S_CONTEXT" != "" ] ; then
-                               CTXOPT="--ctx $S_CONTEXT"
-                       fi
-                       if [ "$S_HOSTNAME" != "" ] ; then
-                               HOSTOPT="--hostname $S_HOSTNAME"
-                               export HOSTNAME=$S_HOSTNAME
-                       fi
-                       if [ "$S_DOMAINNAME" != "" ] ; then
-                               DOMAINOPT="--domainname $S_DOMAINNAME"
-                       fi
-                       mkdir -p /var/run/vservers
-                       cd $VROOTDIR/$VSERVER
-                       IPOPT=`setipopt $IPROOT`
-                       export PATH=$DEFAULTPATH
-                       exec $CHBIND_CMD $SILENT $IPOPT --bcast $IPROOTBCAST \
-                               $CHCONTEXT_CMD $SILENT $FLAGS $CAPS --secure $CTXOPT $HOSTOPT $DOMAINOPT \
-                               $SAVE_S_CONTEXT_CMD /var/run/vservers/$VSERVER.ctx \
-                               $CAPCHROOT_CMD --suid $USERID $CHROOTOPT . "$@"
-               fi
-       fi
-elif [ "$2" = "exec" ] ; then
-       VSERV=$1
-       shift; shift
-       exec $0 $NODEV $SILENT $VSERV suexec root "$@"
-elif [ "$2" = "enter" ] ; then
-       testperm $1
-       exec $0 $NODEV $SILENT $1 exec /bin/bash -login
-elif [ "$2" = "service" ] ; then
-       VSERVER=$1
-       shift
-       shift
-       exec $0 $NODEV $SILENT $VSERVER exec /sbin/service "$@"
-elif [ "$2" = "chkconfig" ] ; then
-       VSERVER=$1
-       LEVELS=()
-       shift
-       shift
-       if [ "$1" = "--level" ] ; then
-               LEVELS=( --level "$2" )
-               shift 2
-       fi
-       if [ $# != 2 -a ! -x $VROOTDIR/$VSERVER/sbin/chkconfig ] ; then
-               echo Invalid argument, expected vserver name chkconfig [ --level nnn ] service on\|off
-       elif [ -x $VROOTDIR/$VSERVER/sbin/chkconfig ] ; then
-               exec $0 --silent $VSERVER exec /sbin/chkconfig "${LEVELS[@]}" "$@"
-       elif [ -x $VROOTDIR/$VSERVER/usr/sbin/update-rc.d ] ; then
-               if [ "$2" = "on" -o "$2" = "start" ] ; then
-                       $0 --silent $VSERVER exec /usr/sbin/update-rc.d -f $1 remove >/dev/null
-                       exec $0 --silent $VSERVER exec /usr/sbin/update-rc.d $1 start 80 2 3 4 5 . stop 20 0 1 6 . >/dev/null
-               elif [ "$2" = "off" -o "$2" = "stop" ] ; then
-                       $0 --silent $VSERVER exec /usr/sbin/update-rc.d -f $1 remove >/dev/null
-                       exec $0 --silent $VSERVER exec /usr/sbin/update-rc.d $1 stop 20 0 1 2 3 4 5 6 . >/dev/null
-               else
-                       echo vserver chkconfig: Expecting on or off
-               fi
+    (pkg)
+       shift 2
+       exec $_VPKG "$vserver" "$@"
+       ;;
+
+    (pkgmgmt)
+       op=$3
+       shift 3
+       exec $_VNAMESPACE --new -- $_PKGMGMT ${op:+--$op} "$@" -- "$vserver"
+       ;;
+
+    (apt-get|apt-config|apt-cache)
+       export _APT_GET=$2
+       shift 2
+       exec $_VAPT_GET -- "$@"
+       ;;
+    (rpm)
+       exec $_VRPM -- "$@"
+       ;;
+       
+    (status)
+       if getVserverStatus "$VSERVER_DIR" ctx procnum; then
+           msg $"Vserver '$vserver' is running at context '$ctx'"
+
+           if test "$2" = status; then
+               msg $"Number of processes: " $procnum
+               msg $"Uptime:              "    $("$_FILETIME" "$VSERVER_DIR/run")
+           fi
+           exit 0
        else
-               echo chkconfig functionality is not available on this
-               echo vserver distribution.
-               echo Looked for /sbin/chkconfig and /usr/sbin/update-rc.d
+           msg $"Vserver '$vserver' is stopped"
+           exit 3
        fi
-else
-       echo Command unknown $2
-       echo
-       usage
-fi
-
+       ;;
+    (*)
+       echo $"Usage: $0 {start|stop|suexec|restart|condrestart|exec|enter|chkconfig|running|status}" >&2
+       exit 2
+       ;;
+esac
diff --git a/scripts/vserver-build b/scripts/vserver-build
new file mode 100755 (executable)
index 0000000..ca522e4
--- /dev/null
@@ -0,0 +1,134 @@
+#! /bin/bash
+# $Id: vserver-build,v 1.20 2005/07/03 17:45:43 ensc Exp $
+
+# Copyright (C) 2003,2004,2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
+test -e "$UTIL_VSERVER_VARS" || {
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
+    exit 1
+}
+. "$UTIL_VSERVER_VARS"
+. "$_LIB_FUNCTIONS"
+. "$_LIB_VSERVER_SETUP_FUNCTIONS"
+. "$_LIB_VSERVER_BUILD_FUNCTIONS"
+
+### Some local functions
+
+function showHelp()
+{
+    echo \
+$"Usage: $(basename $0) -m <method> -n <name> --force <cfg-options>*
+    --rootdir <dir> --pkgbase <dir> [--] <method-args>*
+
+Options:
+    --force     ...  remove/rename already existing vservers with the same
+                     name
+    --keep      ...  do not delete generated files and directories when
+                     build of vserver failed.
+    -m <method> ...  use method <method>; see below for possible values
+    --rootdir <dir>
+                ...  [default: $__DEFAULT_VSERVERDIR]
+    --pkgbase <dir>
+                ...  [default: $__DEFAULT_VSERVERPKGDIR]
+      
+cfg-options are: $SETUP_HELPMSG
+
+Possible methods are:
+    legacy      ...  the \"old\" copy-all-from-host method, which requires the
+                     old legacy  vserver-legacy script;  with  this method the
+                    cfg-options will be ignored
+    copy        ...  the copy-all-from-host method which uses the recent
+                     configuration scheme
+    apt-rpm ... -- -d <distribution>
+                ...  installs the base-packages of the given distribution with
+                    help of 'vapt-get'
+    yum     ... -- -d <distribution>
+                ...  installs the base-packages of the given distribution with
+                    help of 'vyum'
+    rpm     ... -- [-d <distribution>] --empty|([--force] [--nodeps] <manifest>)+
+                ...  installs lists of rpm-packages
+    skeleton ... -- [<cmd> <args>*]
+                ...  installs a minimal skeleton filesystem, creates the
+                    configuration file and calls an optional command then
+    debootstrap ... -- -d <distribution> [-m <mirror>] [-- <debootstrap-options>*]
+                     bootstraps the vserver with Debian's 'debootstrap' package
+
+Please report bugs to $PACKAGE_BUGREPORT"
+    exit 0
+}
+
+function showVersion()
+{
+    echo \
+$"vserver-build $PACKAGE_VERSION -- initializes a vserver
+This program is part of $PACKAGE_STRING
+
+Copyright (C) 2003,2004,2005 Enrico Scholz
+This program is free software; you may redistribute it under the terms of
+the GNU General Public License.  This program has absolutely no warranty."
+    exit 0
+}
+
+### main starts here
+
+set -e
+
+declare -a default_opts=()
+test -n "$NO_DEFAULT_OPTS" || getFileArray default_opts "$__CONFDIR/.defaults/apps/build/options" || :
+
+tmp=$(getopt -o +m:n: --long keep,force,debug,help,version,rootdir:,pkgbase:,$SETUP_OPTIONS -n "$(basename $0)" -- \
+       "${default_opts[@]}" "$@") || exit 1
+eval set -- "$tmp"
+
+VSERVER_NAME=
+OPTION_FORCE=
+OPTION_DEBUG=0
+OPTION_KEEP=
+
+while true; do
+    case "$1" in
+       (--help)    showHelp $0 ;;
+       (--version) showVersion ;;
+       (--force)   OPTION_FORCE=1;;
+       (--keep)    OPTION_KEEP=1;;
+       (--debug)   let ++OPTION_DEBUG;  set -x;;
+       (--rootdir) ROOTDIR=$2;      shift;;
+       (--pkgbase) PKGCFGBASE=$2;   shift;;
+       (-m)        method=$2;       shift;;
+       (-n)        VSERVER_NAME=$2; shift;;
+       (--)        shift; break;;
+       (*)
+           { setup_setOption2 "$1" "$2" && shift; } || \
+             panic $"vserver-build: internal error."
+           ;;
+    esac
+    shift
+done
+
+test -n "$VSERVER_NAME" ||
+    panic $"Name of vserver not specified"
+
+setup_setDefaults "$VSERVER_NAME"
+
+case x"$method" in
+    (xlegacy)  exec $_VSERVER_LEGACY "$VSERVER_NAME" build "$@" ;;
+    (xapt-rpm|xcopy|xskeleton|xdebootstrap|xyum|xrpm)
+               . $__PKGLIBDIR/vserver-build.$method
+               ;;
+    (x)                panic $"No build-method specified";;
+    (*)                panic $"Unknown build-method '$method'";;
+esac
diff --git a/scripts/vserver-build.apt-rpm b/scripts/vserver-build.apt-rpm
new file mode 100644 (file)
index 0000000..35c59f8
--- /dev/null
@@ -0,0 +1,66 @@
+# $Id: vserver-build.apt-rpm,v 1.15 2005/07/03 13:17:38 ensc Exp $     --*- sh -*--
+
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+tmp=$(getopt -o +d: --long debug -n "$0" -- "$@") || exit 1
+eval set -- "$tmp"
+
+. "$_LIB_VSERVER_BUILD_FUNCTIONS_RPM"
+. "$_LIB_VSERVER_BUILD_FUNCTIONS_APT"
+. "$_LIB_VSERVER_BUILD_FUNCTIONS_PKGMGMT"
+
+while true; do
+    case "$1" in
+       (-d)            DISTRIBUTION=$2; shift;;
+       (--debug)       set -x;;
+       (--)            shift; break ;;
+       (*)             echo "vserver-build.apt-rpm: internal error: unrecognized option '$1'" >&2
+                       exit 1
+                       ;;
+    esac
+    shift
+done
+
+getDistribution
+
+base.init
+
+pkgmgmt.initVariables
+rpm.initVariables
+apt.initVariables
+
+base.initFilesystem    "$OPTION_FORCE"
+pkgmgmt.initFilesystem "$OPTION_FORCE"
+rpm.initFilesystem
+apt.initFilesystem
+
+setup_writeOption "$VSERVER_NAME"
+setup_writeInitialFstab
+
+test -z "$BUILD_INITPRE"  || "$BUILD_INITPRE" "$SETUP_CONFDIR"  "$UTIL_VSERVER_VARS"
+rpm.initDB           "$SETUP_CONFDIR"
+rpm.importGPGPubKeys "$SETUP_CONFDIR" \
+    "$__CONFDIR/.distributions/$DISTRIBUTION/pubkeys" \
+    "$__CONFDIR/.distributions/.common/pubkeys" \
+    "$__DISTRIBDIR/$DISTRIBUTION/pubkeys"
+
+$_VAPT_GET "$SETUP_CONFDIR" -- update
+apt.installBasePackages "$SETUP_CONFDIR" "$PKGINSTALLDIR"
+$_VAPT_GET "$SETUP_CONFDIR" -- dist-upgrade -y
+$_VAPT_GET "$SETUP_CONFDIR" -- clean
+test -z "$BUILD_INITPOST" || "$BUILD_INITPOST" "$SETUP_CONFDIR" "$UTIL_VSERVER_VARS"
+
+base.setSuccess
diff --git a/scripts/vserver-build.debootstrap b/scripts/vserver-build.debootstrap
new file mode 100644 (file)
index 0000000..5a72044
--- /dev/null
@@ -0,0 +1,144 @@
+# $Id: vserver-build.debootstrap,v 1.13 2005/07/04 18:14:29 ensc Exp $ --*- sh -*--
+
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+function cleanUp
+{
+    test ! -d "$workdir"  || $_RM -rf "$workdir"
+}
+
+function init
+{
+    workdir=
+    mirror=
+    trap "cleanUp" EXIT
+}
+
+function initVariables
+{
+    base.init
+
+    test -n "${mirror-unset}" || {
+       local aux
+       findFile aux "$__CONFDIR"/.defaults/apps/debootstrap/mirror ''
+       test -z "$aux" || read mirror <"$aux"
+    }
+}
+
+function initFilesystem
+{
+    base.initFilesystem "$1"
+
+    mkdir -p "$SETUP_CONFDIR"/apps/pkgmgmt
+    touch "$SETUP_CONFDIR"/apps/pkgmgmt/internal
+}
+
+function findDebootstrap
+{
+    pushd . &>/dev/null
+    DEBOOTSTRAP=$(which debootstrap 2>/dev/null) || {
+        dir=$($_MKTEMPDIR /var/tmp/debootstrap.XXXXXX)
+        workdir=$dir
+        dst=$dir/debootstrap.deb
+        
+        findFile DEBOOTSTRAP_URI "$__CONFDIR"/.defaults/apps/debootstrap/uri "$__PKGLIBDEFAULTDIR"/debootstrap.uri
+        read tmp <$DEBOOTSTRAP_URI
+        case "$tmp" in
+       (/*)                    ln -s "$tmp" "$dst";;
+       (http://*|ftp://*)
+           echo $"\
+Could not find local version of 'debootstrap'; downloading it from
+${tmp}..."
+           $_WGET -nv -O "$dst" "$tmp" || {
+               $_CAT <<EOF >&2
+ERROR: Could not download the debootstrap package from
+
+   $dst
+
+Usually, this means that Debian released a new version which is unknown
+to util-vserver and removed the known ones. To fix this, go to
+
+   http://ftp.debian.org/debian/pool/main/d/debootstrap/
+
+(or a nearby mirror) and search the URL for the most recent *.deb
+package matching your platform. Then, put this URL into
+
+   $__CONFDIR/.defaults/apps/debootstrap/uri
+
+and retry the vserver-build command again.
+EOF
+               exit 1
+           }
+           ;;
+       (*)                     echo $"Unsupported URI scheme '$tmp'" >&2
+                               exit 1;;
+        esac
+        cd $dir
+        ar x "$dst"
+        tar xzf data.tar.gz
+        export DEBOOTSTRAP_DIR=`pwd`/usr/lib/debootstrap
+        DEBOOTSTRAP=`pwd`/usr/sbin/debootstrap
+    }
+    popd &>/dev/null
+
+    test -x "$DEBOOTSTRAP" || { echo $"Can not find debootstrap at '$DEBOOTSTRAP'" >&2; exit 1; }
+}
+
+function fixupDebian
+{
+    $_RM -rf "$1"/dev
+    $_MV "$1"/dev.X "$1"/dev
+}
+
+
+###   main starts here <---
+
+
+tmp=$(getopt -o '+d:m:' --long debug -n "$0" -- "$@") || exit 1
+eval set -- "$tmp"
+
+init
+
+while true; do
+    case "$1" in
+       -d)             DISTRIBUTION=$2; shift;;
+       -m)             mirror=$2;       shift;;
+       --debug)        set -x;;
+       --)             shift; break ;;
+       *)              echo "vserver-build.debootstrap: internal error: unrecognized option '$1'" >&2
+                       exit 1
+                       ;;
+    esac
+    shift
+done
+
+getDistribution
+
+initVariables  
+initFilesystem "$OPTION_FORCE"
+
+setup_writeOption "$VSERVER_NAME"
+setup_writeInitialFstab
+
+findDebootstrap
+
+test -z "$BUILD_INITPRE"  || "$BUILD_INITPRE" "$SETUP_CONFDIR"  "$UTIL_VSERVER_VARS"
+mv "$VDIR"/dev "$VDIR"/dev.X
+"$DEBOOTSTRAP" "$@" "$DISTRIBUTION" "$VDIR" "$mirror" || :     ## HACK: ignore all errors...
+fixupDebian "$VDIR"
+test -z "$BUILD_INITPOST" || "$BUILD_INITPOST" "$SETUP_CONFDIR" "$UTIL_VSERVER_VARS"
+
+base.setSuccess
diff --git a/scripts/vserver-build.functions b/scripts/vserver-build.functions
new file mode 100644 (file)
index 0000000..981c037
--- /dev/null
@@ -0,0 +1,222 @@
+# $Id: vserver-build.functions,v 1.18 2005/07/04 22:38:42 ensc Exp $   --*- sh -*--
+
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+# Expected environment:
+#     $VSERVER_NAME ... name of vserver
+
+ROOTDIR=
+ROOTDIR_REL=
+VSERVERDIRNAME=
+
+VDIR=
+
+_DEV_FILE=
+_EXEC_DIR=
+
+BUILD_INITPRE=
+BUILD_INITPOST=
+
+__BASE_GENERATED_FILES=()
+__BASE_SUCCESS=
+
+function makeDevEntry
+{
+    local dst=$1/$2
+    case "$3" in
+       (c|b)   mknod -m$6 "$dst"  $3 $4 $5;;
+       (d)     mkdir -p -m$4 "$dst";;
+       (f)     touch "$dst"
+               chmod $4 "$dst"
+               ;;
+       (*)     echo "Unknown dev-entry mode '$3'" >&2
+               false
+               ;;
+    esac
+}
+
+function populateDirectory
+{
+    local dst=$1
+    local i
+    
+    shift
+    for i; do
+       local file=
+       
+       for file in "$i"/*; do
+           isRegularFile "$file" || continue
+           
+           cp -a "$file" "$dst/"
+       done
+    done
+}
+
+function _setRootDir
+{
+    test -z "$ROOTDIR" || return 0
+    
+    for item in "\"$__CONFDIR/.defaults/vdirbase\" 1" "$__DEFAULT_VSERVERDIR"; do
+       eval set -- "$item"
+       ROOTDIR=$1
+       ROOTDIR_REL=$2
+       test ! -d "$ROOTDIR" || break
+    done
+
+    test -d "$ROOTDIR" || {
+       echo "Root-directory '$ROOTDIR' does not exist or is invalid" >&2
+       exit 1
+    }
+}
+
+function _setVserverDir
+{
+    test -z "$VSERVERDIRNAME" || return 0
+    VSERVERDIRNAME="$VSERVER_NAME"
+}
+
+function _setVdir
+{
+    VDIR="$ROOTDIR/$VSERVERDIRNAME"
+}
+
+function say
+{
+    test -z "$OPTION_SILENT" || return 0
+    echo "$@"
+}
+
+function _renameVserverCfg
+{
+    local suffix=.~$(date +'%s')~
+    local i
+    
+    for i in "$VDIR" "$SETUP_CONFDIR"; do
+       test ! -e "$i" || {
+           mv "$i" "$i$suffix"
+           say "Renamed '$i' to '$i$suffix'"
+       }
+    done
+}
+
+
+## Usage: getDistribution [<default>]
+function getDistribution
+{
+    test -z "$DISTRIBUTION" || return 0
+
+    if test -e /etc/fedora-release; then
+       set -- $(cat /etc/fedora-release)
+       DISTRIBUTION=fdr$4
+    elif test -e /etc/redhat-release; then
+       set -- $(cat /etc/redhat-release)
+       DISTRIBUTION=rh$5
+    elif test -e /etc/debian_version; then
+       set -- $(cat /etc/debian_version)
+       DISTRIBUTION=deb$1
+    elif test -e /etc/SuSE-release; then
+       set -- $(cat /etc/SuSE-release)
+       DISTRIBUTION=suse$3
+    elif test -e /etc/gentoo-release; then
+       set -- $(cat /etc/gentoo-release)
+       DISTRIBUTION=gentoo$5
+    elif test -e /etc/slackware-release; then
+       set -- $(cat /etc/slackware-release)
+       DISTRIBUTION=slackware$2
+    elif test -n "$1"; then
+       DISTRIBUTION=$1
+    else
+       echo \
+"Can not determine distribution; please specify it manually
+with the '-d' option"  >&2
+       exit 1
+    fi >&2
+}
+
+function base._addGeneratedFile
+{
+    __BASE_GENERATED_FILES=( "${__BASE_GENERATED_FILES[@]}" "$@" )
+}
+
+## Usage: initFilesystem [force]
+function base.initFilesystem
+{
+    test -z "$1" || _renameVserverCfg
+    test ! -d "$VDIR" -a ! -d "$SETUP_CONFDIR" || {
+       echo \
+"vserver-topdirectory '$VDIR' and/or configuration at '$SETUP_CONFDIR'
+exist already; please try to use '--force', or remove them manually"
+>&2
+       exit 1
+    } >&2
+
+    mkdir -p -m755 "$VDIR"
+    chattr -t "$VDIR"
+    base._addGeneratedFile "$VDIR"
+    
+    mkdir -p -m755 "$SETUP_CONFDIR"/apps "$VDIR"/{dev/pts,etc}
+    base._addGeneratedFile "$SETUP_CONFDIR"
+    
+    ln -s "$VDIR"       "$SETUP_CONFDIR/vdir"
+
+    local spec
+    while read spec; do
+       makeDevEntry "$VDIR"/dev $spec
+    done <$_DEV_FILE
+
+    mkdir -p "$VDIR"/proc
+    findAndCopy "$VDIR"/etc/hosts         "$__CONFDIR"/.defaults/files/hosts "$__CONFDIR/.distributions/$DISTRIBUTION"/files/hosts \
+                                         "$__DISTRIBDIR/$DISTRIBUTION"/files/hosts "$__DISTRIBDIR"/defaults/files/hosts ""
+
+    for i in nsswitch.conf krb5.conf krb.conf krb.realms ldap.conf localtime resolv.conf; do
+       findAndCopy "$VDIR"/etc/$i  "$__CONFDIR/.defaults/files/$i" "$__CONFDIR/.distributions/$DISTRIBUTION/files/$i" ""
+    done
+}
+
+function base._initVariables
+{
+    _setRootDir
+    _setVserverDir
+    _setVdir
+
+    findFile _DEV_FILE      "$__CONFDIR/.distributions/$DISTRIBUTION/devs"      "$__DISTRIBDIR/$DISTRIBUTION/devs"     "$__DISTRIBDIR/defaults/devs"
+    findDir  _EXECDIR       "$__CONFDIR/.distributions/$DISTRIBUTION/execdir"   "$__DISTRIBDIR/$DISTRIBUTION/execdir"  /
+    findFile BUILD_INITPRE  "$__CONFDIR/.distributions/$DISTRIBUTION/initpre"   "$__DISTRIBDIR/$DISTRIBUTION/initpre"  ""
+    findFile BUILD_INITPOST "$__CONFDIR/.distributions/$DISTRIBUTION/initpost"  "$__DISTRIBDIR/$DISTRIBUTION/initpost" ""
+}
+
+function base.__cleanup
+{
+    test -z "$OPTION_KEEP"    || return 0
+    test -z "$__BASE_SUCCESS" || return 0
+    
+    echo rm -rf "${__BASE_GENERATED_FILES[@]}"
+}
+
+function base.init
+{
+    test -z "$SETUP_CONTEXT" || ! $_VSERVER_INFO -q "$SETUP_CONTEXT" RUNNING || \
+       panic $"\
+Context '$SETUP_CONTEXT' is already in use. Please select another one."
+
+    trap "base.__cleanup" EXIT
+    base._initVariables
+}
+
+function base.setSuccess
+{
+    __BASE_SUCCESS=1
+}
diff --git a/scripts/vserver-build.functions.apt b/scripts/vserver-build.functions.apt
new file mode 100644 (file)
index 0000000..4973fed
--- /dev/null
@@ -0,0 +1,82 @@
+# $Id: vserver-build.functions.apt,v 1.8 2005/04/16 21:20:45 ensc Exp $        --*- sh -*--
+
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+function apt.installBasePackages
+{
+    local name="$1"
+    local dir="$2"
+
+    test "$dir" != / || return 0
+    for filelist in "$dir"/*; do
+       isRegularFile "$filelist" || continue
+       local idx=0
+       local can_fail=false
+       local flags=
+
+       set -- $(<$filelist)
+       while test "$#" -gt 0; do
+           case "$1" in
+               --reinstall) flags='--reinstall';;
+               --can-fail)  can_fail=true;;
+               *)           break;;
+           esac
+           shift
+       done
+       "$_VAPT_GET" "$name" -- install -y $flags $* || $can_fail
+    done
+}
+
+function apt.initVariables
+{
+    findFile APTCONFDEFAULT \
+       "$__CONFDIR/.distributions/$DISTRIBUTION/apt.conf" \
+       "$__CONFDIR/.defaults/apps/pkgmgmt/apt.conf" \
+       "$__DISTRIBDIR/$DISTRIBUTION/apt.conf" \
+       "$__DISTRIBDIR/defaults/apt.conf" \
+       ''
+
+    findFile APTVENDORDEFAULT \
+       "$__CONFDIR/.distributions/$DISTRIBUTION/vendor.conf" \
+       "$__CONFDIR/.defaults/apps/pkgmgmt/vendor.conf" \
+       /etc/apt/vendors.list \
+       "$__DISTRIBDIR/$DISTRIBUTION/vendor.conf" \
+       "$__DISTRIBDIR/defaults/vendor.conf" \
+       ''
+}
+
+function apt.initFilesystem
+{
+    mkdir -p "$PKGCFGDIR"/apt/{etc/sources.list.d,etc/vendors.list.d,etc/apt.conf.d,archives/partial,cache,state/lists/partial}
+    
+    populateDirectory "$PKGCFGDIR/apt/etc" \
+       "$__DISTRIBDIR/defaults/apt" \
+       "$__DISTRIBDIR/$DISTRIBUTION/apt" \
+       "$__CONFDIR/.distributions/$DISTRIBUTION/apt"
+
+    local f="$PKGCFGDIR"/apt/etc/apt.conf
+    if test -e "$f"; then
+       $_SED -e "s!@APTETCDIR@!$PKGCFGDIR/apt/etc!g" "$f" >"$f.tmp"
+       $_CMP -s "$f" "$f.tmp" || $_CAT "$f.tmp" >"$f"
+       $_RM -f "$f.tmp"
+    fi
+
+    test -z "$APTCONFDEFAULT" || \
+       $_LN_S "$APTCONFDEFAULT"   "$PKGCFGDIR"/apt/etc/apt.conf.d/default.conf
+
+    test -z "$APTVENDORDEFAULT" || \
+       $_LN_S "$APTVENDORDEFAULT" "$PKGCFGDIR"/apt/etc/vendors.list.d/default.conf
+}
diff --git a/scripts/vserver-build.functions.pkgmgmt b/scripts/vserver-build.functions.pkgmgmt
new file mode 100644 (file)
index 0000000..2d0bfbb
--- /dev/null
@@ -0,0 +1,87 @@
+# $Id: vserver-build.functions.pkgmgmt,v 1.9 2005/06/30 06:16:41 ensc Exp $    --*- sh -*--
+
+# Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+PKGCFGBASE=
+PKGCFGBASE_REL=
+YUM_RELEASEPKGS=( {redhat,fedora}-release )
+
+function pkgmgmt._setPkgCfgBase
+{
+    test -z "$PKGCFGBASE" || return 0
+
+    for item in "\"$__CONFDIR/.defaults/apps/pkgmgmt/base\" 1" ${ROOTDIR:+"$ROOTDIR/.pkg"} "$__DEFAULT_VSERVERPKGDIR"; do
+       eval set -- "$item"
+       PKGCFGBASE=$1
+       PKGCFGBASE_REL=$2
+       test ! -d "$PKGCFGBASE" || break
+    done
+
+    test -d "$PKGCFGBASE"  || {
+       echo "pkgcfgbase-dir '$PKGCFGBASE' does not exist or is invalid" >&2
+       exit 1
+    }
+}
+
+function pkgmgmt._setPkgCfg
+{
+    pkgmgmt._setPkgCfgBase
+
+    test -z "$PKGCFGDIR" || return 0
+    PKGCFGDIR="$PKGCFGBASE/$VSERVERDIRNAME"
+}
+
+function pkgmgmt._renameVserverPkgCfg
+{
+    local suffix=.~$(date +'%s')~
+    local i
+    
+    for i in "$PKGCFGDIR"; do
+       test ! -e "$i" || {
+           mv "$i" "$i$suffix"
+           say "Renamed '$i' to '$i$suffix'"
+       }
+    done
+}
+
+function pkgmgmt.initFilesystem
+{
+    test -z "$1" || pkgmgmt._renameVserverPkgCfg
+    test ! -d "$PKGCFGDIR" || {
+       echo $\
+"vserver pkgmgmt-directory exists already; please try to use
+'--force'; or remove it manually" >&2
+       exit 1
+    }
+
+    mkdir -p "$PKGCFGDIR"
+    base._addGeneratedFile "$PKGCFGDIR"
+    
+    mkdir -p "${SETUP_CONFDIR:?}"/apps/pkgmgmt
+
+    test -z "$PKGCFGDIR" || {
+       ln -s "$PKGCFGDIR" "$SETUP_CONFDIR/apps/pkgmgmt/base"
+
+       test "$_EXECDIR" = / || ln -s "${_EXECDIR:?}" "$SETUP_CONFDIR/apps/pkgmgmt/execdir"
+    }
+
+}
+
+function pkgmgmt.initVariables
+{
+    pkgmgmt._setPkgCfg
+    findDir  PKGINSTALLDIR  "$__CONFDIR/.distributions/$DISTRIBUTION/pkgs"  "$__DISTRIBDIR/$DISTRIBUTION/pkgs"     /
+}
diff --git a/scripts/vserver-build.functions.rpm b/scripts/vserver-build.functions.rpm
new file mode 100644 (file)
index 0000000..9aa499d
--- /dev/null
@@ -0,0 +1,126 @@
+# $Id: vserver-build.functions.rpm,v 1.8 2005/04/16 21:20:45 ensc Exp $        --*- sh -*--
+
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+RPMDB_PATH=
+RPMLIBDIR=
+
+function rpm.importGPGPubKeys
+{
+    local dst=$1
+    local pkgs
+    declare -a pkgs
+    local i
+    
+    shift
+    for i; do
+       local file=
+       for file in "$i"/*; do
+           isRegularFile "$file" || continue
+
+           pkgs=( "${pkgs[@]}" "$file" )
+       done
+    done
+
+    test -n "$pkgs" || return 0
+    "$_VRPM" "$dst" -- --import "${pkgs[@]}"
+}
+
+function rpm.initVariables
+{
+    test -n "$WORKAROUND_106057" && \
+       RPMDB_PATH=/.rpmdb || \
+       RPMDB_PATH=/dev
+
+    findDir RPMLIBDIR "$__CONFDIR/.distributions/$DISTRIBUTION/rpmlib" "$__DISTRIBDIR/$DISTRIBUTION/rpmlib" /
+}
+
+function rpm.initFilesystem
+{
+    test -z "$WORKAROUND_106057" || mkdir -p "$RPMDB_PATH"
+    mkdir -p "$VDIR$RPMDB_PATH"
+
+    test -z "$WORKAROUND_APT_DBPATH" || {
+       mkdir -p "$VDIR/var/lib"
+       ln -s "$RPMDB_PATH" "$VDIR/var/lib/rpm"
+    }
+
+    mkdir -p "$PKGCFGDIR"/rpm/{etc,state}
+    populateDirectory "$PKGCFGDIR/rpm/etc" \
+       "$__DISTRIBDIR/defaults/rpm" \
+       "$__DISTRIBDIR/$DISTRIBUTION/rpm" \
+       "$__CONFDIR/.distributions/$DISTRIBUTION/rpm"
+
+    echo "%_dbpath $RPMDB_PATH" >>"$PKGCFGDIR/rpm/etc/macros"
+
+    test "$RPMLIBDIR"  = / || ln -s "$RPMLIB"  "$SETUP_CONFDIR/apps/pkgmgmt/rpmlib"
+}
+
+function rpm.initDB
+{
+    RPM_FLAVOR=d "$_VRPM" "$1" -- --initdb
+}
+
+
+
+## Usage: rpmlist.install <vserver> <basedir> <tmpfile> <listfile> <rpm-options>*
+function rpmlist.install()
+{
+    local      cfgdir=$1
+    local      basedir=$2
+    local       manifest=$3
+    local      listfile=$4
+    shift 4
+
+    while read; do
+       case x"$REPLY" in
+           (x|\#*)     continue;;
+       esac
+       
+       echo "$basedir/$REPLY"
+    done >"$manifest" <"$listfile"
+
+    test "$OPTION_DEBUG" -eq 0 || cat "$manifest"
+    test ! -s "$manifest"      || $_VRPM "$cfgdir" -- -U "$@" "$manifest"
+}
+
+
+## Usage: rpmlist.initByDistribution <result-var> <distribution>
+function rpmlist.initByDistribution()
+{
+    local      _rlid_listdir
+    declare -a _rlid_res=() 
+    
+
+    findDir _rlid_listdir "$__CONFDIR/.distributions/$2/rpmlist.d" \
+                         "$__DISTRIBDIR/$2/rpmlist.d" \
+                         ''
+                   
+    test -d "$_rlid_listdir" || return 0
+
+    local      _rlid_lst
+    for _rlid_lst in "$_rlid_listdir"/*.lst; do
+       isRegularFile "$_rlid_lst" || continue
+
+       local           _rlid_opts=${_rlid_lst%%lst}cmd
+       declare -a      _rlid_tmp=()
+
+       test ! -e "$_rlid_opts" || getFileArray _rlid_tmp "$_rlid_opts"
+       _rlid_res=( "${_rlid_res[@]}" "${_rlid_tmp[@]}" "$_rlid_lst" )
+    done
+
+    eval "$1"='( "${_rlid_res[@]}" )'
+}
diff --git a/scripts/vserver-build.functions.yum b/scripts/vserver-build.functions.yum
new file mode 100644 (file)
index 0000000..fd2c442
--- /dev/null
@@ -0,0 +1,87 @@
+# $Id: vserver-build.functions.yum,v 1.5 2005/04/16 21:20:45 ensc Exp $        --*- sh -*--
+
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+function yum.installBasePackages
+{
+    local name="$1"
+    local dir="$2"
+
+    test "$dir" != / || return 0
+    for filelist in "$dir"/*; do
+       isRegularFile "$filelist" || continue
+       local idx=0
+       local can_fail=false
+       local flags=
+
+       set -- $(<$filelist)
+       while test "$#" -gt 0; do
+           case "$1" in
+               --reinstall) flags='';;
+               --can-fail)  can_fail=true;;
+               *)           break;;
+           esac
+           shift
+       done
+       "$_VYUM" "$name" -- -y install $flags $* || $can_fail
+    done
+}
+
+function yum.initVariables
+{
+    findDir  YUMREPOSDEFAULT \
+       "$__CONFDIR/.distributions/$DISTRIBUTION/yum.repos.d" \
+       "$__DISTRIBDIR/$DISTRIBUTION/yum.repos.d" \
+       ''
+}
+
+function yum.__substituteConf
+{
+    local f=$1
+    local prefix=$2
+
+    if test -e "$f"; then
+       $_SED -e "s!@YUMETCDIR@!$prefix$PKGCFGDIR/yum/etc!g;
+                 s!@YUMCACHEDIR@!$prefix$PKGCFGDIR/yum/cache!g;
+                 s!@YUMLOGDIR@!$prefix$PKGCFGDIR/yum!g;
+                 s!@YUMLOCKDIR@!$prefix$PKGCFGDIR/yum!g;
+                 " "$f" >"$f.tmp"
+       $_CMP -s "$f" "$f.tmp" || $_CAT "$f.tmp" >"$f"
+       $_RM -f "$f.tmp"
+    fi
+}
+
+function yum.initFilesystem
+{
+    mkdir -p "$PKGCFGDIR"/yum/{etc,cache}
+    
+    populateDirectory "$PKGCFGDIR/yum/etc" \
+       "$__DISTRIBDIR/defaults/yum" \
+       "$__DISTRIBDIR/$DISTRIBUTION/yum" \
+       "$__CONFDIR/.distributions/$DISTRIBUTION/yum"
+
+    ## workaround for yum's automatism to search the configuration in the chroot
+    
+    local f0="$PKGCFGDIR"/yum/etc/yum.conf
+    local f1="$PKGCFGDIR"/yum/etc/yum-hack.conf
+    cp -a "$f0" "$f1"
+
+    yum.__substituteConf "$f0" 'hostfs://'
+    yum.__substituteConf "$f1" '/../../../../../../../../../../../../'
+
+    test -z "$YUMREPOSDEFAULT" -o -e "$PKGCFGDIR/yum/etc/yum.repos.d" || \
+       $_LN_S "$YUMREPOSDEFAULT"   "$PKGCFGDIR/yum/etc/yum.repos.d"
+}
diff --git a/scripts/vserver-build.rpm b/scripts/vserver-build.rpm
new file mode 100644 (file)
index 0000000..25a2862
--- /dev/null
@@ -0,0 +1,112 @@
+# $Id: vserver-build.rpm,v 1.6 2005/07/03 13:17:38 ensc Exp $  --*- sh -*--
+
+# Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+tmp=$(getopt -o +d:b:e --long debug,empty -n "$0" -- "$@") || exit 1
+eval set -- "$tmp"
+
+. "$_LIB_VSERVER_BUILD_FUNCTIONS_RPM"
+. "$_LIB_VSERVER_BUILD_FUNCTIONS_PKGMGMT"
+
+set -e
+
+
+BASEDIR=$(pwd)
+DISTRIBUTION=
+EMPTY=
+
+echo "$@"
+
+while true; do
+    case "$1" in
+       (-d)            DISTRIBUTION=$2; shift;;
+       (-b)            BASEDIR=$2; shift;;
+       (-e|--empty)    EMPTY=1;;
+       (--debug)       set -x;;
+       (--)            shift; break ;;
+       (*)             echo "vserver-build.rpm: internal error: unrecognized option '$1'" >&2
+                       exit 1
+                       ;;
+    esac
+    shift
+done
+
+
+####### some basic initializations
+
+getDistribution "template"
+
+base.init
+pkgmgmt.initVariables
+rpm.initVariables
+
+if test -z "$EMPTY" -a "$#" -eq 0; then
+    rpmlist.initByDistribution rpm_lists "$DISTRIBUTION"
+    set -- "${rpm_lists[@]}"
+fi
+
+test -n "$EMPTY" -o "$#" -gt 0 || \
+    panic $"\
+No rpm-lists specified and no list found for distribution '$DISTRIBUTION'.
+When this is really indented, please use the '--empty' option."
+
+rpm_dflt_opts=()
+test "$OPTION_DEBUG" -lt 2 || rpm_dflt_opts=( "${rpm_dflt_opts[@]}" -v  )
+test "$OPTION_DEBUG" -lt 3 || rpm_dflt_opts=( "${rpm_dflt_opts[@]}" -v  )
+test -n "$OPTION_SILENT"   || rpm_dflt_opts=( "${rpm_dflt_opts[@]}" -vh )
+
+
+######  init the filesystem
+
+base.initFilesystem    "$OPTION_FORCE"
+pkgmgmt.initFilesystem "$OPTION_FORCE"
+rpm.initFilesystem
+
+setup_writeOption "$VSERVER_NAME"
+setup_writeInitialFstab
+
+
+# when basedir is a non-local location, rpm will download it into the
+# current directory. Therefore, create and go into a temporay directory
+# before doing the operations.
+tmpdir=$($_MKTEMPDIR /var/tmp/vserver-build.rpm.XXXXXX)
+manifest=$($_MKTEMP /tmp/vserver-build.rpm.manifest.XXXXXX)
+trap "rm -rf $tmpdir $manifest" EXIT
+cd "$tmpdir"                   
+
+
+######  do the real work
+
+test -z "$BUILD_INITPRE"  || "$BUILD_INITPRE" "$SETUP_CONFDIR"  "$UTIL_VSERVER_VARS"
+rpm.initDB           "$SETUP_CONFDIR"
+rpm.importGPGPubKeys "$SETUP_CONFDIR" \
+    "$__CONFDIR/.distributions/$DISTRIBUTION/pubkeys" \
+    "$__CONFDIR/.distributions/.common/pubkeys" \
+    "$__DISTRIBDIR/$DISTRIBUTION/pubkeys"
+
+opts=()
+for i; do
+    case "$i" in
+       (--force|--nodeps)      opts=( "${opts[@]}" "$i" ); continue;;
+    esac
+    
+    rpmlist.install "$VSERVER_NAME" "$BASEDIR" "$manifest" "$i" "${rpm_dflt_opts[@]}" "${opts[@]}" 
+    opts=()
+done
+
+test -z "$BUILD_INITPOST" || "$BUILD_INITPOST" "$SETUP_CONFDIR" "$UTIL_VSERVER_VARS"
+
+base.setSuccess
diff --git a/scripts/vserver-build.skeleton b/scripts/vserver-build.skeleton
new file mode 100644 (file)
index 0000000..3bfd956
--- /dev/null
@@ -0,0 +1,52 @@
+# $Id: vserver-build.skeleton,v 1.5 2005/06/30 06:13:09 ensc Exp $     --*- sh -*--
+
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+tmp=$(getopt -o '+d:' --long debug,pkgmgmt -n "$0" -- "$@") || exit 1
+eval set -- "$tmp"
+
+. "$_LIB_VSERVER_BUILD_FUNCTIONS_PKGMGMT"
+
+DISTRIBUTION=:
+use_pkgmgmt=
+while true; do
+    case "$1" in
+       -d)             DISTRIBUTION=$2; shift;;
+       --debug)        set -x;;
+       --pkgmgmt)      use_pkgmgmt=1;;
+       --)             shift; break ;;
+       *)              echo "vserver-build.skeleton: internal error: unrecognized option '$1'" >&2
+                       exit 1
+                       ;;
+    esac
+    shift
+done
+
+getDistribution
+
+base.init
+test -z "$use_pkgmgmt" || pkgmgmt.initVariables
+
+base.initFilesystem "$OPTION_FORCE"
+test -z "$use_pkgmgmt" || pkgmgmt.initFilesystem "$OPTION_FORCE"
+
+
+setup_writeOption "$VSERVER_NAME"
+setup_writeInitialFstab
+
+test -z "$BUILD_INITPRE"  || "$BUILD_INITPRE" "$SETUP_CONFDIR"  "$UTIL_VSERVER_VARS"
+test -z "$1" || "$@"
+test -z "$BUILD_INITPOST" || "$BUILD_INITPOST" "$SETUP_CONFDIR" "$UTIL_VSERVER_VARS"
diff --git a/scripts/vserver-build.yum b/scripts/vserver-build.yum
new file mode 100644 (file)
index 0000000..72d3a81
--- /dev/null
@@ -0,0 +1,62 @@
+# $Id: vserver-build.yum,v 1.5 2005/06/30 06:13:09 ensc Exp $  --*- sh -*--
+
+# Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+tmp=$(getopt -o +d: --long debug -n "$0" -- "$@") || exit 1
+eval set -- "$tmp"
+
+. "$_LIB_VSERVER_BUILD_FUNCTIONS_RPM"
+. "$_LIB_VSERVER_BUILD_FUNCTIONS_YUM"
+. "$_LIB_VSERVER_BUILD_FUNCTIONS_PKGMGMT"
+
+while true; do
+    case "$1" in
+       (-d)            DISTRIBUTION=$2; shift;;
+       (--debug)       set -x;;
+       (--)            shift; break ;;
+       (*)             echo "vserver-build.yum-rpm: internal error: unrecognized option '$1'" >&2
+                       exit 1
+                       ;;
+    esac
+    shift
+done
+
+getDistribution
+
+base.init
+pkgmgmt.initVariables
+rpm.initVariables
+yum.initVariables
+
+base.initFilesystem    "$OPTION_FORCE"
+pkgmgmt.initFilesystem "$OPTION_FORCE"
+rpm.initFilesystem
+yum.initFilesystem
+
+setup_writeOption "$VSERVER_NAME"
+setup_writeInitialFstab
+
+test -z "$BUILD_INITPRE"  || "$BUILD_INITPRE" "$SETUP_CONFDIR"  "$UTIL_VSERVER_VARS"
+rpm.initDB           "$SETUP_CONFDIR"
+rpm.importGPGPubKeys "$SETUP_CONFDIR" \
+    "$__CONFDIR/.distributions/$DISTRIBUTION/pubkeys" \
+    "$__CONFDIR/.distributions/.common/pubkeys" \
+    "$__DISTRIBDIR/$DISTRIBUTION/pubkeys"
+yum.installBasePackages "$SETUP_CONFDIR" "$PKGINSTALLDIR"
+$_VYUM "$SETUP_CONFDIR" -- clean all
+test -z "$BUILD_INITPOST" || "$BUILD_INITPOST" "$SETUP_CONFDIR" "$UTIL_VSERVER_VARS"
+
+base.setSuccess
diff --git a/scripts/vserver-setup.functions b/scripts/vserver-setup.functions
new file mode 100644 (file)
index 0000000..127f42f
--- /dev/null
@@ -0,0 +1,187 @@
+# $Id: vserver-setup.functions,v 1.18 2005/02/25 23:32:02 ensc Exp $   --*- sh -*--
+
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+SETUP_HOSTNAME=
+SETUP_NETDEV=
+SETUP_NETMASK=
+SETUP_NETPREFIX=
+SETUP_NETBCAST=
+SETUP_LOCKFILE=
+SETUP_CONFDIR=
+SETUP_CONTEXT=
+SETUP_INITSTYLE=
+
+declare -a SETUP_INTERFACES=()
+declare -a SETUP_FLAGS=()
+
+declare -r SETUP_OPTIONS="confdir:,lockfile:,hostname:,netdev:,netmask:,netprefix:,netbcast:,interface:,flags:,context:,initstyle:"
+declare -r SETUP_HELPMSG=$"
+    --context   ...  the static context of the vserver [default: none; a dynamic
+                     context will be assumed]
+    --confdir   ...  [default: $__CONFDIR/<name>]
+    --lockfile <filename>
+               ...  [default: $__RUNDIR/<name>]
+    --hostname <hostname>
+    --netdev   <device>
+    --netbcast <broadcast>
+    --netmask <netmask>|--netprefix <prefixlen>
+                ...  sets the  default netmask  (a.b.c.d quadruple)  or prefixlen
+                    (length of the interface)
+    --interface [<name-suffix>=][<device>:]<ip>[/<mask|prefixlen>]
+                ...  declares an network-interface;  this option can be specified
+                    multiple times
+    --flags <flags>+
+                ...  sets comma-separated list of flags; possible flags are
+                    lock:  Prevent the vserver from setting new security context
+                    sched: Merge  scheduler priority  of all processes in the
+                           vserver so that it acts a like a single
+                           one (kernel 2.4 only).
+                     nproc: Limit the number of processes in the vserver
+                           according to ulimit  (instead of a per user limit,
+                           this becomes a per vserver limit)
+                    private: No other process can join this security context.
+                           Even root
+    --initstyle <style>
+                ...  configures the initstyle (e.g. minit,sysv,plain)
+"
+
+function setup_setOption2
+{
+    case "$1" in
+       (--context)     SETUP_CONTEXT=$2;;
+       (--confdir)     SETUP_CONFDIR=$2;;
+       (--lockfile)    SETUP_LOCKFILE=$2;;
+       (--hostname)    SETUP_HOSTNAME=$2;;
+       (--netdev)      SETUP_NETDEV=$2;;
+       (--netmask)     SETUP_NETMASK=$2;;
+       (--netprefix)   SETUP_NETPREFIX=$2;;
+       (--netbcast)    SETUP_NETBCAST=$2;;
+       (--interface)   SETUP_INTERFACES=( "${SETUP_INTERFACES[@]}" "$2" );;
+       (--initstyle)   SETUP_INITSTYLE=$2;;
+       (--flags)       old_IFS=$IFS
+                       IFS=,
+                       set -- $2
+                       SETUP_FLAGS=( "${SETUP_FLAGS[@]}" "$@" )
+                       IFS=$old_IFS
+                       ;;
+       (*)             return 1;;
+    esac
+
+    return 0
+}
+
+function _setup_writeSingleOption
+{
+    test -z "$1" || echo "$1" >"$2"
+}
+
+function _setup_writeInterface
+{
+    local vdir=$1
+    local idx=$2
+    local tmp=$3
+
+    local name=${tmp%%=*}
+    test "$name" != "$tmp" || name=
+
+    tmp=${tmp##${name}=}
+    local dev=${tmp%%:*}
+    test "$dev" != "$tmp" || dev=
+
+    tmp=${tmp##${dev}:}
+    local mask=${tmp##*/}
+    test "$mask" != "$tmp"  || mask=
+
+    local ip=${tmp%%/${mask}}
+
+    local prefix=
+    test "${mask%%.*}" != "$mask" || {
+       prefix=$mask
+       mask=
+    }
+
+    d=$vdir/interfaces/$idx
+    mkdir "$d"
+    
+    _setup_writeSingleOption "$name"   $d/name
+    _setup_writeSingleOption "$dev"    $d/dev
+    _setup_writeSingleOption "$ip"     $d/ip
+    _setup_writeSingleOption "$mask"   $d/mask
+    _setup_writeSingleOption "$prefix" $d/prefix
+
+    test -n "$dev" -o -n "$SETUP_NETDEV" || \
+       echo $"No device specified for interface '$idx'; do not forget to set the 'nodev' option" >&2
+}
+
+function setup_setDefaults
+{
+    : ${SETUP_CONFDIR:=$__CONFDIR/$1}
+    : ${SETUP_LOCKFILE:=$__RUNDIR/$1}
+    findFile SETUP_FSTAB "$__CONFDIR"/.defaults/fstab "$__PKGLIBDEFAULTDIR"/fstab
+}
+
+function setup_writeOption
+{
+    local name=$1
+    local cfgdir=${SETUP_CONFDIR:?}
+    local i
+
+    mkdir -p "$cfgdir"/interfaces "$cfgdir"/apps/init "$cfgdir"/uts
+
+    _setup_writeSingleOption "$name"            "$cfgdir"/name
+    _setup_writeSingleOption "$SETUP_CONTEXT"   "$cfgdir"/context
+    _setup_writeSingleOption "$SETUP_HOSTNAME"  "$cfgdir"/uts/nodename
+    _setup_writeSingleOption "$SETUP_NETDEV"    "$cfgdir"/interfaces/dev
+    _setup_writeSingleOption "$SETUP_NETMASK"   "$cfgdir"/interfaces/mask
+    _setup_writeSingleOption "$SETUP_NETPREFIX" "$cfgdir"/interfaces/prefix
+    _setup_writeSingleOption "$SETUP_NETBCAST"  "$cfgdir"/interfaces/bcast
+    _setup_writeSingleOption "$SETUP_INITSTYLE" "$cfgdir"/apps/init/style
+
+    local idx=0
+    for i in "${SETUP_INTERFACES[@]}"; do
+       _setup_writeInterface "$cfgdir" $idx "$i"
+       let ++idx
+    done
+
+    test -z "$SETUP_FLAGS" || for i in "${SETUP_FLAGS[@]}"; do
+       echo "$i"
+    done >"$cfgdir"/flags
+
+    ln -s "$SETUP_LOCKFILE"   "$cfgdir"/run
+}
+
+function setup_writeInitialFstab
+{
+    cat "${SETUP_FSTAB:?}" >"${SETUP_CONFDIR:?}"/fstab
+}
+
+function setup_test
+{
+    SETUP_INTERFACES=()
+
+    setup_setOption2 --interface foo0=eth0:1.2.3.4/1
+    setup_setOption2 --interface foo1=eth0:1.2.3.4/255.255.248.0
+    setup_setOption2 --interface foo2=eth0:1.2.3.4
+    setup_setOption2 --interface foo3=1.2.3.4
+    setup_setOption2 --interface foo4=1.2.3.4/1
+    setup_setOption2 --interface eth0:1.2.3.4
+    setup_setOption2 --interface eth0:1.2.3.4/1
+    setup_setOption2 --interface 1.2.3.4
+    setup_setOption2 --interface 1.2.3.4/1
+
+    setup_writeOption xx
+}
diff --git a/scripts/vserver-wrapper b/scripts/vserver-wrapper
new file mode 100755 (executable)
index 0000000..ccbd2e1
--- /dev/null
@@ -0,0 +1,96 @@
+#! /bin/bash
+
+# Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
+test -e "$UTIL_VSERVER_VARS" || {
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
+    exit 1
+}
+. "$UTIL_VSERVER_VARS"
+
+test -n "$MARK" || MARK=default
+: ${LOCKFILE:=vservers-$MARK}
+: ${NUMPARALLEL:=6}
+
+
+if test -e /etc/init.d/functions; then
+    . /etc/init.d/functions
+    lockfile=/var/lock/subsys/$LOCKFILE
+else
+    success() { echo .; }
+    passed()  { echo .; }
+    failure() { echo ERROR; }
+    lockfile=/var/run/$LOCKFILE
+fi
+
+
+function _tellResult()
+{
+    local rc=$1
+    case "$rc" in
+       (0)     success;;
+       (2)     passed; rc=0;;
+       (*)     failure;;
+    esac
+    echo
+    return $rc
+}
+
+function start()
+{
+    echo -n $"Starting vservers of type '$MARK'..."
+    $_START_VSERVERS -m "$MARK" -j "$NUMPARALLEL" --all --start
+    _tellResult $?
+    local rc=$?
+    test "$rc" -ne 0 || touch "$lockfile"
+    return $rc
+}
+
+function stop()
+{
+    echo -n $"Stopping vservers of type '$MARK'..."
+    $_START_VSERVERS -m "$MARK" -j "$NUMPARALLEL" --all --stop
+    _tellResult $?
+    local rc=$?
+    $_RM -f "$lockfile"
+    return $rc
+}
+
+function restart()
+{
+    stop
+    start
+}
+
+case "$1" in
+    start|stop|restart)        $1;;
+    condrestart)
+       test -f $lockfile && restart || :
+       ;;
+    status)
+       test -f $lockfile && {
+           echo $"vservers of type '$MARK' were started"
+           exit 0
+       }
+       echo $"vservers of type '$MARK' are not started"
+       exit 1
+       ;;
+    *)
+        echo "Usage: $0 {start|stop|restart|condrestart|status}"
+       exit 2
+       ;;
+esac
diff --git a/scripts/vserver.functions b/scripts/vserver.functions
new file mode 100644 (file)
index 0000000..0139d58
--- /dev/null
@@ -0,0 +1,935 @@
+# $Id: vserver.functions,v 1.57 2005/07/03 17:47:06 ensc Exp $  --*- sh -*--
+
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+## Expected env:
+#  $VSERVER_DIR   ... path to vserver-cfg dir
+#  $VSERVER_NAME  ... name of vserver
+
+declare -a NICE_CMD=()
+declare -a CHBIND_OPTS=()
+declare -a CAP_OPTS=()
+declare -a CHCONTEXT_INIT_OPTS=()
+declare -a CHCONTEXT_FLAG_OPTS=()
+declare -a CHCONTEXT_OPTS=()
+declare -a CAPCHROOT_OPTS=()
+declare -a INTERFACES=()
+
+declare -a INITCMD_RESCUE=( /bin/sleep 900 )
+declare -a INITCMD_START=()
+declare -a INITCMD_START_SYNC=()
+declare -a INITCMD_STOP=()
+declare -a INITCMD_STOP_SYNC=()
+declare -a INITCMD_PREPARE=()
+declare -a INITKILL_SEQ=()
+declare -a ENTER_SHELL=()
+
+declare -a OPTS_VCONTEXT_CREATE=()
+declare -a OPTS_VCONTEXT_MIGRATE=()
+declare -a OPTS_VCONTEXT_ENTER=()
+declare -a OPTS_VATTRIBUTE=( --flag fakeinit )
+declare -a OPTS_VSCHED=()
+
+declare -a STOPCMD_PREPARE=()
+
+declare -a VSERVER_EXTRA_CMDS=()
+
+INIT_RESCUE=
+VSHELPER_SYNC_TIMEOUT=30
+USE_VNAMESPACE=
+INTERFACE_CMDS_IDX=0
+RUNLEVEL_START=
+RUNLEVEL_STOP=
+_HAVE_INTERFACE_OPTIONS=
+_HAVE_CHBIND_OPTIONS=
+_NEED_VSHELPER_SYNC=
+_IS_FAKEINIT=
+
+INITSTYLE=sysv
+
+S_CONTEXT=
+
+SILENT_OPT=
+
+: ${VSERVER_NAME:=$(basename "$VSERVER_DIR")}
+
+if test -e "$VSERVER_DIR"/noisy -o -n "$OPTION_VERBOSE"; then
+    SILENT_OPT=
+else
+    SILENT_OPT='--silent'
+fi
+
+function _generateChbindOptions
+{
+    local vdir="$1"
+    local i
+    local bcast=
+
+    test -n "$_HAVE_INTERFACE_OPTIONS" || _generateInterfaceOptions "$vdir"
+
+    local f=$vdir/interfaces/bcast
+    getFileValue bcast "$f"
+    
+    CHBIND_OPTS=( $SILENT_OPT ${bcast:+--bcast "$bcast"} )
+
+    for i in "${INTERFACES[@]}"; do
+       CHBIND_OPTS=( "${CHBIND_OPTS[@]}" --ip "$i" )
+    done
+
+    _HAVE_CHBIND_OPTIONS=1
+}
+
+function _generateNiceCommand
+{
+    local vdir=$1
+    local nice
+
+    test -r "$vdir/nice" || return 0;
+    read nice <"$vdir"/nice
+
+    NICE_CMD=( $_NICE -$nice )
+}
+
+
+function _generatePersonalityOptions
+{
+    local vdir="$1"
+    local f="$vdir"/personality
+    local type flags
+
+    test -s "$f" || return 0
+
+    {
+       local delim tmp
+
+       read type
+       while read tmp; do
+           case x$tmp in
+               (x\#*|x)        ;;
+               (*)             flags=$flags$delim$tmp
+                               delim=,
+                               ;;
+           esac
+       done
+    } <"$f"
+
+    OPTS_VCONTEXT_ENTER=( "${OPTS_VCONTEXT_ENTER[@]}"
+                          --personality-type "$type"
+                         ${flags:+--personality-flags "$flags"} )
+}
+
+function _generateCCapabilityOptions
+{
+    local vdir=$1
+    local cap
+    local f="$vdir"/ccapabilities
+    
+    test -e "$f" || return 0
+    while read cap; do
+       case x"$cap" in
+           (x|x\#)     ;;
+           (*)         OPTS_VATTRIBUTE=( "${OPTS_VATTRIBUTE[@]}" --ccap "$cap" );;
+       esac
+    done <"$f"
+}
+
+function _generateBCapabilityOptions
+{
+    local vdir=$1
+    local cap
+    local f="$vdir"/bcapabilities
+    
+    test -e "$f" || return 0
+    while read cap; do
+       case x"$cap" in
+           (x|x\#)     ;;
+           (*)         OPTS_VATTRIBUTE=( "${OPTS_VATTRIBUTE[@]}" --bcap "$cap" );;
+       esac
+    done <"$f"
+}
+
+function _generateCapabilityOptions
+{
+    local vdir=$1
+    local cap
+
+    _generateBCapabilityOptions "$vdir"
+    _generateCCapabilityOptions "$vdir"
+    
+    test -e "$vdir"/capabilities || return 0
+
+    CAP_OPTS=()
+    CAPCHROOT_OPTS=()
+
+    while read cap; do
+       case x"$cap" in
+           (x|x\#)     ;;
+           (!CAP_SYSCHROOT)
+               CAP_OPTS=( "${CAP_OPTS[@]}" --cap "$cap" )
+               CAPCHROOT_OPTS=( "${CAPCHROOT_OPTS[@]}" --nochroot )
+               ;;
+           (*)
+               CAP_OPTS=( "${CAP_OPTS[@]}" --cap "$cap" )
+               ;;
+       esac
+    done <"$vdir"/capabilities
+}
+
+function getEnterShell
+{
+    local vdir=$1
+    local shell_file
+
+    ENTER_SHELL=()
+
+    getFileValue ENTER_SHELL "$vdir"/shell "$__CONFDIR"/.defaults/shell
+    
+    test -n "$ENTER_SHELL" || {
+       local i
+       for i in "/bin/bash -login" "/bin/sh -l" /bin/csh; do
+           set -- $i
+           test -x "$vdir/vdir/$1" || continue
+           ENTER_SHELL=( "$@" )
+           break
+       done
+    }
+}
+
+## Usage: sendKillSequence <ctx> <signal> [<wait> <signal>]*
+function sendKillSequence
+{
+    local ctx=$1
+    local wait=
+    shift
+
+    while isCtxRunning "$ctx"; do
+       test -z "$wait" || sleep "$wait"
+
+       killContext "$ctx" "$1"
+       test -n "$2" || break
+       wait="$2"
+       shift 2
+    done
+}
+
+function _generateInitOptions
+{
+    local vdir=$1
+    local cfgdir=$vdir/apps/init
+    local i f
+
+    INITCMD_START=()
+    INITCMD_STOP=()
+    INITCMD_START_SYNC=()
+    INITCMD_STOP_SYNC=()
+    INITCMD_PREPARE=()
+    STOPCMD_PREPARE=()
+
+    INITKILL_SEQ=( 15 5 9 )
+    CHCONTEXT_INIT_OPTS=()
+
+
+    getFileValue INITSTYLE      "$cfgdir"/style
+    getFileValue RUNLEVEL_START "$cfgdir"/runlevel
+    getFileValue RUNLEVEL_START "$cfgdir"/runlevel.start
+    getFileValue RUNLEVEL_STOP  "$cfgdir"/runlevel.stop
+    getFileArray INITKILL_SEQ  "$cfgdir"/killseq || :
+
+    case x"$INITSTYLE" in
+       (xrescue)
+           INITCMD_START=( "${INITCMD_RESCUE[@]}" )
+           INITCMD_STOP=( /sbin/killall5 )
+           _IS_FAKEINIT=1
+           _NEED_VSHELPER_SYNC=
+           ;;
+           
+       (xsysv)
+           test -n "$RUNLEVEL_START" || RUNLEVEL_START=3
+           test -n "$RUNLEVEL_STOP"  || RUNLEVEL_STOP=6
+
+           for i in /etc/init.d/rc /etc/rc.d/rc; do
+               test -x "$vdir/vdir/$i" || continue
+               INITCMD_START=( "$i" "$RUNLEVEL_START" )
+               INITCMD_STOP=(  "$i" "$RUNLEVEL_STOP"  )
+           done
+           INITCMD_PREPARE=( $_FAKE_RUNLEVEL "$RUNLEVEL_START" /var/run/utmp )
+           ;;
+           
+       (xplain)
+           INITCMD_START=( /sbin/init )
+           INITCMD_STOP=(  /sbin/init )
+           _IS_FAKEINIT=1
+           _NEED_VSHELPER_SYNC=1
+           test -z "$RUNLEVEL_START" || INITCMD_START=( "${INITCMD_START[@]}" "$RUNLEVEL_START" )
+           test -z "$RUNLEVEL_STOP"  || INITCMD_STOP=(  "${INITCMD_STOP[@]}"  "$RUNLEVEL_STOP"  )
+           ;;
+           
+       (xminit)
+           INITCMD_START=( /sbin/minit-start )
+           INITCMD_STOP=(  /sbin/minit-stop  )
+           _IS_FAKEINIT=1
+           INITCMD_START_SYNC=( "$_INITSYNC_MINIT_START" "$vdir" )
+           _NEED_VSHELPER_SYNC=1
+           test -z "$RUNLEVEL_START"         || INITCMD_START=( "${INITCMD_START[@]}" "$RUNLEVEL_START" )
+           test -z "$RUNLEVEL_STOP"          || INITCMD_STOP=(  "${INITCMD_STOP[@]}"  "$RUNLEVEL_STOP"  )
+           ! isNumber "${RUNLEVEL_START:-3}" || INITCMD_PREPARE=( $_FAKE_RUNLEVEL "${RUNLEVEL_START:-3}" /var/run/utmp )
+           ;;
+
+       (xgentoo)
+           INITCMD_START=( /sbin/rc default  )
+           INITCMD_STOP=(  /sbin/rc shutdown )
+           ;;
+
+       (x) ;;
+       (*) echo "Unknown init-style '$INITSTYLE'; aborting" >&2;
+           exit 1;;
+    esac
+
+    if test x"$INITSTYLE" != xrescue; then
+       getFileArray INITCMD_START      "$cfgdir"/cmd.start      || :
+       getFileArray INITCMD_STOP       "$cfgdir"/cmd.stop       || :
+       getFileArray INITCMD_START_SYNC "$cfgdir"/cmd.start-sync || :
+       getFileArray INITCMD_STOP_SYNC  "$cfgdir"/cmd.stop-sync  || :
+       getFileArray INITCMD_PREPARE    "$cfgdir"/cmd.prepare    || :
+    fi
+    
+    test -n "$OPTION_FORCE_SYNC" -o -e "$cfgdir"/sync || {
+       INITCMD_START_SYNC=()
+       INITCMD_STOP_SYNC=()
+       _NEED_VSHELPER_SYNC=
+    }
+
+    if vshelper.isEnabled; then
+       vshelper.getSyncTimeout "$vdir" VSHELPER_SYNC_TIMEOUT || :
+    else
+       _NEED_VSHELPER_SYNC=
+    fi
+}
+
+function _generateFlagOptions
+{
+    local vdir=$1
+
+    CHCONTEXT_FLAG_OPTS=()
+
+    test ! -e "$vdir"/flags || \
+    while read flag; do
+       case x"$flag" in
+           (x|x\#)             ;;
+           (xnamespace)        ;;
+           (xfakeinit)
+               _IS_FAKEINIT=1
+               ;;
+           (*)
+               OPTS_VATTRIBUTE=( "${OPTS_VATTRIBUTE[@]}" --flag "$flag" )
+               CHCONTEXT_FLAG_OPTS=( "${CHCONTEXT_FLAG_OPTS[@]}"
+                                     --flag "$flag" )
+               ;;
+       esac
+    done <"$vdir"/flags
+
+    isAvoidNamespace "$vdir" || {
+       USE_VNAMESPACE=1
+       CHCONTEXT_FLAG_OPTS=( "${CHCONTEXT_FLAG_OPTS[@]}" --flag namespace )
+    }
+}
+
+function _generateChcontextOptions
+{
+    local vdir=$1
+    local ctx hostname domainname
+    local cap_opts
+    local flag
+
+    {
+       read ctx        <"$vdir"/context        || :
+       ## LEGACY ALERT
+       read hostname   <"$vdir"/uts/nodename   || read hostname   <"$vdir"/hostname   || :
+       read domainname <"$vdir"/uts/domainname || read domainname <"$vdir"/domainname || :
+    } 2>/dev/null
+
+    test -z "$S_CONTEXT" || ctx=$S_CONTEXT
+
+    _generateCapabilityOptions "$vdir"
+    _generateFlagOptions       "$vdir"
+
+    CHCONTEXT_OPTS=( $SILENT_OPT \
+                     "${CHCONTEXT_FLAG_OPTS[@]}" \
+                    "${CAP_OPTS[@]}" \
+                    --secure
+                    ${ctx:+--ctx "$ctx"} \
+                     ${hostname:+--hostname "$hostname"} \
+                    ${domainname:+--domainname "$domainname"} )
+
+    OPTS_VCONTEXT_CREATE=( $SILENT_OPT \
+                          ${ctx:+--xid "$ctx"} )
+    ## put '--secure' at front so that it can be overridden
+    OPTS_VATTRIBUTE=( --secure "${OPTS_VATTRIBUTE[@]}" )
+}
+
+function _generateScheduleOptions
+{
+    local vdir=$1
+    local f="$vdir"/schedule
+    test -e "$f" || return 0
+
+    local fill_rate interval tokens tokens_min tokens_max prio_bias
+    {
+       {
+           read fill_rate   && \
+           read interval    && \
+           read tokens      && \
+           read tokens_min  && \
+           read tokens_max  && \
+           read prio_bias   || prio_bias=
+       } <"$f"
+    } 2>/dev/null
+
+    test -n "$prio_bias" || {
+       echo $"Bad content in '$f'; aborting..." >&2
+       false
+    }
+
+    OPTS_VSCHED=( --fill-rate  "$fill_rate"  --interval "$interval" \
+                 --tokens     "$tokens"     --tokens_min "$tokens_min" \
+                 --tokens_max "$tokens_max" --priority-bias "$prio_bias" )
+}
+
+function _getInterfaceValue
+{
+    local _giv_val=$1
+    local _giv_dflt=$2
+    shift 2
+    
+    local _giv_i
+    local _giv_tmp
+
+    for _giv_i; do
+       read _giv_tmp  <"$_giv_i/$_giv_val" && break || :
+    done 2>/dev/null
+
+    : ${_giv_tmp:=$_giv_dflt}
+    eval $_giv_val=\$_giv_tmp
+}
+
+## Usage: _transformMask2Prefix <result-varname> <prefix> <mask>
+function _transformMask2Prefix
+{
+    local _tm2p_tmp=$2
+    
+    test -n "$_tm2p_tmp" || {
+       $_MASK2PREFIX "$3" || _tm2p_tmp=$?
+    }
+
+    eval $1=\$_tm2p_tmp
+    return 0
+}
+
+function _addInterfaceCmd
+{
+    eval INTERFACE_CMDS_${INTERFACE_CMDS_IDX}='( "$@" )'
+    let ++INTERFACE_CMDS_IDX
+}
+
+## Usage: _generateMac <var> <iface> <ctx>
+function _generateMac
+{
+    isNumber "$2" || {
+       echo $"Interface basename '$iface' must be either a number, or the mac must be configured explicitly" >&2
+       return 1
+    }
+
+    eval $1=$(printf "f0:ff:%02x:%02x:%02x:%02x" $[ (~($2>>8)) & 0xff ] $[ ($2 & 0xff) ] $[ ($3>>8) & 0xff ] $[ $3 & 0xff ])
+}
+
+## Usage: _processSingleInterface <interface-directory>
+function _processSingleInterface
+{
+    local iface=$1
+
+    local ip
+    local dev
+    local prefix
+    local mask
+    local bcast
+    local name
+    local scope
+    local mac
+    local extip
+    local up="up"
+
+    _getInterfaceValue ip     '' "$iface"
+    _getInterfaceValue extip  '' "$iface" "$iface/.."
+    _getInterfaceValue dev    '' "$iface" "$iface/.."
+    _getInterfaceValue prefix '' "$iface" "$iface/.."
+    _getInterfaceValue mask   '' "$iface" "$iface/.."
+    _getInterfaceValue bcast  '' "$iface" "$iface/.."
+    _getInterfaceValue name   '' "$iface"
+    _getInterfaceValue scope  '' "$iface" "$iface/.."
+    _getInterfaceValue mac    '' "$iface"
+
+    test -n "$ip" || { echo $"Can not read ip for '$iface'"  >&2; return 1; }
+    test -n "$dev" -o -e "$iface"/nodev || {
+       echo $"No device specified for '$iface'" >&2
+       return 1;
+    }
+
+    test ! -e "$iface"/down || up=
+
+    while true; do
+       _transformMask2Prefix prefix "$prefix" "$mask"
+       INTERFACES=( "${INTERFACES[@]}" "$ip${prefix:+/$prefix}" )
+
+       test ! -e "$iface"/nodev   || break
+       ## LEGACY ALERT
+       test ! -e "$iface"/only_ip || break
+
+       case "$dev" in
+           (*.*)
+               test -d /proc/net/vlan || {
+                   echo -e $"VLAN device-name used, but vlan subsystem not enabled.\nTry to execute 'modprobe 8021q' before starting the vservers"  >&2
+                   return 1
+               }
+               test -f /proc/net/vlan || {
+                   _addInterfaceCmd VCONFIG ${dev/./ }
+                   _addInterfaceCmd IP_ADDR 127.0.0.1/8 broadcast 127.255.255.255 dev "$dev"
+                   _addInterfaceCmd IP_LINK "$dev" $up
+               }
+               ;;
+       esac
+
+       if ! test -e "$iface"/indirect; then
+           _addInterfaceCmd IP_ADDR  "$ip${prefix:+/$prefix}" broadcast ${bcast:-+} ${name:+label "$dev:$name"} dev "$dev"
+           #_addInterfaceCmd IP_ROUTE "$ip${prefix:+/$prefix}" dev "$dev"
+           _addInterfaceCmd IP_LINK  "$dev" $up
+       elif ! test -n "$ctx"; then
+           echo $"Using 'dummy' (indirect) for interface '$dev' requires a fixed context number; dynamic ctx are not supported" >&2
+           return 1
+       else
+           test -z "$mac" || _generateMac mac "$(basename $iface)" "$ctx" || return 1
+           _addInterfaceCmd MODPROBE dummy "$dev"
+           _addInterfaceCmd IP_LINK  dev dummy0 address "$mac"
+           _addInterfaceCmd NAMEIF   "$dev" "$mac"
+           _addInterfaceCmd IP_ADDR  "$ip${prefix:+/$prefix}" dev "$dev"
+           test -z "$extip" || _addInterfaceCmd IPTABLES "$ip${prefix:+/$prefix}" ${name:+label "$dev:$name"} "$ctx" "$extip"
+       fi
+
+       break
+    done
+}
+
+## Usage: _generateInterfaceOptions <vserver-directory>
+function _generateInterfaceOptions
+{
+    local iface
+    local ctx
+
+    test ! -e "$1"/context || read ctx <"$1"/context
+
+    for iface in "$1/interfaces/"*; do
+        test   -d "$iface"          || continue
+        test ! -e "$iface"/disabled || continue
+    
+        _processSingleInterface "$iface"
+    done
+    _HAVE_INTERFACE_OPTIONS=1
+}
+
+function enableInterfaces
+{
+    local i=0
+    declare -a var
+
+    lock "$__LOCKDIR"/vserver.interfaces
+
+    while test $i -lt $INTERFACE_CMDS_IDX; do
+       eval var='( "${INTERFACE_CMDS_'$i'[@]}" )'
+       local type=${var[0]}
+       unset var[0]
+
+       set -- "${var[@]}"
+       case "$type" in
+           IPTABLES)   ;; ## TODO
+           MODPROBE)
+               local mod=$1
+               local name=$2
+               shift 2
+               $_MODPROBE ${name:+-o "$name"} "$mod" "$@"
+               ;;
+           NAMEIF)             $_NAMEIF "$@";;
+           VCONFIG)            $_VCONFIG  add   "$@";;
+           IP_ADDR)            $_IP addr  add   "$@";;
+           IP_ADDR_FLUSH)      $_IP addr  flush "$@";;
+           IP_LINK)            $_IP link  set   "$@";;
+           IP_ROUTE)           $_IP route add   "$@";;
+           *)                  echo "Unknown interface-command type '$type'" >&2; false;;
+       esac
+
+       let ++i
+    done
+
+    unlock 1
+}
+
+function disableInterfaces
+{
+    test -n "$_HAVE_INTERFACE_OPTIONS" || _generateInterfaceOptions "$1"
+
+    local i=$INTERFACE_CMDS_IDX
+    declare -a var
+
+    lock "$__LOCKDIR"/vserver.interfaces
+    
+    while test $i -gt 0; do
+       let --i || :
+
+       eval var='( "${INTERFACE_CMDS_'$i'[@]}" )'
+       local type=${var[0]}
+       unset var[0]
+       
+       set -- "${var[@]}"
+       case "$type" in
+           IPTABLES)           ;; ## TODO
+           MODPROBE)           $_RMMOD "${2:-$1}";;
+           NAMEIF)             ;;
+           VCONFIG)            $_VCONFIG  rem "$@";;
+           IP_ADDR)            $_IP addr  del "$@";;
+           IP_ADDR_FLUSH)      ;;
+           IP_LINK)            ;; ## Ignore the link-down command for now
+           IP_ROUTE)           $_IP route del "$@";;
+           *)                  echo "Unknown interface-command type '$type'" >&2; false;;
+       esac
+    done
+
+    unlock 1
+}
+
+## Usage: prepareInit <vserver-directory>
+function prepareInit
+{
+    pushd "$1/vdir" >/dev/null
+    case "$INITSTYLE" in
+       sysv)
+           { find var/run  ! -type d -print0; \
+             find var/lock ! -type d -print0; } | xargs -0r $_CHROOT_SH rm
+           ;;
+       plain)
+           $_CHROOT_SH rm .autofsck forcefsck 2>/dev/null || :
+           : | $_CHROOT_SH truncate fastboot  2>/dev/null || :
+           ;;
+       minit)
+           ;;
+    esac
+    "${INITCMD_PREPARE[@]}"
+    popd >/dev/null
+}
+
+## Usage: prepareInit <vserver-directory>
+function prepareStop
+{
+    pushd "$1/vdir" >/dev/null
+    case "$INITSTYLE" in
+       (sysv)
+           export PREVLEVEL=$RUNLEVEL_START # required by Debian's initscripts
+           ;;
+    esac
+    "${STOPCMD_PREPARE[@]}"
+    popd >/dev/null
+}
+
+
+function generateOptions
+{
+    _generateInterfaceOptions   "$1"
+    test -n "$_HAVE_CHBIND_OPTIONS" || _generateChbindOptions "$1" 
+    _generateNiceCommand        "$1"
+    _generateInitOptions        "$1"
+    _generateChcontextOptions   "$1"
+    _generateScheduleOptions    "$1"
+    _generatePersonalityOptions "$1"
+
+    if test -n "$_IS_FAKEINIT"; then
+       CHCONTEXT_INIT_OPTS=( --disconnect --flag fakeinit )
+       OPTS_VCONTEXT_MIGRATE=( "${OPTS_VCONTEXT_MIGRATE[@]}" --initpid --disconnect )
+    fi
+}
+
+function _mountVserverInternal
+{
+    local fstab="$1"
+    local xflag=
+    
+    test -e "$fstab" || return 0
+    shift
+
+    pushd "$vdir" >/dev/null
+    # check whether / is mounted readonly or whether there is special
+    # magic regarding the mtab file; when etc/mtab can not be touched,
+    # add the '-n' flag to mount
+    test -w etc -o -w etc/mtab || xflag=-n
+    "$@" $_SECURE_MOUNT -a $xflag --chroot --fstab "$fstab" --rootfs no
+    popd >/dev/null
+}
+
+function mountRootFS
+{
+    local cfgdir=$1
+    local vdir=$1/vdir
+    local fstab="$cfgdir"/fstab
+    local xflag=
+
+    test -e "$fstab" || return 0
+    pushd "$vdir" >/dev/null
+    # check whether / is mounted readonly or whether there is special
+    # magic regarding the mtab file; when etc/mtab can not be touched,
+    # add the '-n' flag to mount
+    test -w etc -o -w etc/mtab || xflag=-n
+    $_SECURE_MOUNT -a $xflag --chroot --fstab "$fstab" --rootfs only -n
+    popd >/dev/null
+}
+
+function mountVserver
+{
+    local cfgdir=$1
+    local ns_opt=$2
+    local vdir=$1/vdir
+    local mtab_src
+
+    test -e "$cfgdir"/fstab -o \
+         -e "$cfgdir"/fstab.local -o \
+        -e "$cfgdir"/fstab.remote || return 0
+
+    findObject -r mtab_src "$cfgdir"/apps/init/mtab "$__CONFDIR"/.defaults/init/mtab "$__PKGLIBDEFAULTDIR"/mtab /dev/null
+    
+    pushd "$vdir" >/dev/null
+    $_CHROOT_SH truncate /etc/mtab <"$mtab_src"
+    popd >/dev/null
+
+    test -n "$_HAVE_CHBIND_OPTIONS" || _generateChbindOptions "$cfgdir"
+
+    test -z "$NAMESPACE_CLEANUP" || isAvoidNamespace "$cfgdir" || \
+       $_VNAMESPACE --cleanup
+
+    _mountVserverInternal "$cfgdir"/fstab
+    _mountVserverInternal "$cfgdir"/fstab.local
+    _mountVserverInternal "$cfgdir"/fstab.remote $_CHBIND "${CHBIND_OPTS[@]}"
+
+    isAvoidNamespace "$cfgdir" || \
+       $_SECURE_MOUNT --rbind -n "$vdir" "/"
+}
+
+function _umountVserverInternal
+{
+    local fstab="$1"
+    test -e "$fstab" || return 0
+    shift
+
+    $_TAC "$fstab" | {
+       is_ok=1
+       while read src dst tmp; do
+           test -n "$tmp" || continue
+           case x"$src" in
+               (x\#*)  continue;;
+           esac
+
+       
+           "$@" $_EXEC_CD "$dst" $_UMOUNT -lfn . || is_ok=
+       done
+       test -n "$is_ok"
+    }
+}
+
+function umountVserver
+{
+    local cfgdir=$1
+    local vdir=$1/vdir
+    local is_ok=1
+
+    isAvoidNamespace "$cfgdir"    || return 0
+    test -e "$cfgdir"/fstab -o \
+         -e "$cfgdir"/fstab.local || return 0
+    test -n "$_HAVE_CHBIND_OPTIONS"  || _generateChbindOptions "$cfgdir"
+    
+    pushd "$vdir/" >/dev/null || return 1
+       _umountVserverInternal  "$cfgdir"/fstab.local                              || is_ok=
+       _umountVserverInternal  "$cfgdir"/fstab       $_CHBIND "${CHBIND_OPTS[@]}" || is_ok=
+    popd >/dev/null           || return 1
+
+    test -n "$is_ok"
+}
+
+## Usage: waitForSync <vserver> <context> <vshelper-fifo-varname>
+function initSync
+{
+    local _is_meth=sync
+    test -n "$_NEED_VSHELPER_SYNC" && \
+       ! $_VSERVER_INFO - FEATURE vwait || _is_meth=async
+
+    vshelper.initSync "$1" "$3" "$_is_meth"
+}
+
+## Usage: initWait <vserver> <context> <vwait-tmpdir-varname>
+function initWait
+{
+    if $_VSERVER_INFO - FEATURE vwait; then
+       local _is_tmpdir
+       _is_tmpdir=$($_MKTEMPDIR /tmp/vwaitstat.XXXXXX)
+           
+       $_NOHUP $_VWAIT --timeout "$VSHELPER_SYNC_TIMEOUT" \
+           --terminate --status-fd 3 "$2"  \
+           >>$_is_tmpdir/out 2>$_is_tmpdir/err 3>$_is_tmpdir/fifo &
+
+       echo "$!" >$_is_tmpdir/pid
+       eval "$3"=$_is_tmpdir
+    fi
+}
+
+
+## Usage: _waitForVWait <fifo> <pid>
+function _waitForVWait
+{
+    declare -a status
+    wait "$2" || :
+    getFileArray status "$1"
+    set -- ${status[0]}
+
+    case "$1" in
+       (ERROR)         warning $"\
+'vwait' exited with error '$2' which indicates that vserver could not
+be stopped properly"
+                       ;;
+       (FINISHED)      ;;
+       (KILLED)        warning $"\
+A timeout occured while waiting for the vserver to finish and it was
+killed by sending a SIGKILL signal. Please investigate the reasons
+and/or increase the timeout in apps/vshelper/sync-timeout."
+                       ;;
+       (TIMEOUT|\?\?\?|*)      warning $"\
+internal error: 'vwait' exited with an unexpected status '$1'; I will
+try to continue but be prepared for unexpected events."
+                       ;;
+    esac
+
+    return 0
+}
+
+## Usage: waitForSync <vserver> [<vshelper-fifo>] [<vwait-statdir>]
+function waitForSync
+{
+    local cfgdir=$1
+    local fifo=$2
+    local vwait_statdir=$3
+    local vwait_pid=$4
+
+    if test -d "$vwait_statdir"; then
+       _waitForVWait "$vwait_statdir/fifo" "$( <$vwait_statdir/pid )"
+    elif test -n "$_NEED_VSHELPER_SYNC"; then
+       $_VSHELPER_SYNC "$fifo" "$VSHELPER_SYNC_TIMEOUT" || \
+           warning $"\
+A timeout or other error occured while waiting for the synchronization
+signal from vserver '$VSERVER_NAME'.
+The vserver will be killed nevertheless..."
+    elif test "${#INITCMD_STOP_SYNC[@]}" -ne 0; then
+       "${INITCMD_STOP_SYNC[@]}" || \
+           warning $"\
+Stop-synchronization for vserver '$VSERVER_NAME' failed. The vserver
+will be killed nevertheless..."
+    fi
+
+    test -z "$OPTION_FORCE_SYNC" -a ! -e "$cfgdir"/sync ||
+       sleep 1
+}
+
+function _sourceWrap
+{
+    local vdir name flavor start i already_handled base
+    . "$@"
+}
+
+## Usage: execScriptlets <vserver-cfgdir> <vserver-name> <script-flavor>
+function execScriptlets
+{
+    declare -r vdir=$1
+    declare -r name=$2
+    declare -r flavor=$3
+    local base i
+
+    for base in "$vdir"/scripts "$__CONFDIR"/.defaults/scripts; do
+       local   DONT_SKIP_DEFAULTS=
+       local   already_handled=
+       
+       for i in "$base/$flavor" "$base/$flavor.d"/*; do
+           isRegularFile "$i" || continue
+           test  -r "$i"      || continue
+
+           already_handled=1
+           local start=
+           test -x "$i" || start=_sourceWrap
+           $start "$i" "$flavor" "$name"
+       done
+
+       test -z "$already_handled" -o -n "$DONT_SKIP_DEFAULTS" || break
+    done
+}
+
+
+function sanityCheck
+{
+    declare -r cfgdir=$1
+
+    ! test -e "$cfgdir"/fstab.local ||
+       warning $"\
+WARNING: 'fstab' will *not* be executed in the network context of the
+  vserver anymore. Therefore, 'fstab.local' has the same functionality
+  and is obsoleted. When you need the old behaviour, put the mounts
+  into 'fstab.remote'"
+
+    ! test -e "$cfgdir"/hostname -a ! -L "$cfgdir"/hostname ||
+       warning $"\
+WARNING: The hostname is now configured in 'uts/nodename' but not in
+  'hostname'."
+
+    ! test -e "$cfgdir"/domainname -a ! -L "$cfgdir"/domainname ||
+       warning $"\
+WARNING: The domainname is now configured in 'uts/domainname' but not
+  in 'domainname'." >&2
+
+  
+    local i
+    for i in "$cfgdir"/interfaces/*/only_ip; do
+       if test -e "$i"; then
+           local iface
+           iface=${i##$cfgdir/interfaces/}
+           iface=${iface%%/only_ip}
+           warning $"\
+WARNING: The 'only_ip' flag for interface '$iface' is deprecated; use
+  'nodev' instead of"
+       fi
+    done
+
+    find "$cfgdir" -type f -exec "$_CHECK_UNIXFILE" '{}' ';'
+
+    vshelper.doSanityCheck
+
+    $_VSERVER_INFO - VERIFYCAP ||
+       panic $"capabilities are not enabled in kernel-setup"
+
+    $_VSERVER_INFO - VERIFYPROC ||
+       panic $"\
+/proc/uptime can not be accessed. Usually, this is caused by
+procfs-security. Please read the FAQ for more details
+http://www.linux-vserver.org/index.php?page=Linux-Vserver+FAQ"
+}
diff --git a/scripts/vserver.start b/scripts/vserver.start
new file mode 100644 (file)
index 0000000..7311288
--- /dev/null
@@ -0,0 +1,160 @@
+# $Id: vserver.start,v 1.45 2005/07/15 19:01:06 ensc Exp $  --*- sh -*--
+
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+
+lock "$__LOCKDIR"/vserver."$($_VSERVER_INFO "$VSERVER_DIR" CANONIFY)".startup
+
+if isVserverRunning "$VSERVER_DIR"; then
+    warning $"vserver '$VSERVER_NAME' already running"
+    exit 0
+fi
+
+function cleanup()
+{
+    set +e
+
+    test -z "$startsync_pipe"  || $_RM -f "$startsync_pipe"
+    test -z "$is_started"      || { unlock; return 0; }
+
+    if test -n "$is_configured" -a -z "$is_executed"; then
+       warning $"
+An error occured while executing the vserver startup sequence; when
+there are no other messages, it is very likely that the init-script
+(${INITCMD_START[@]}) failed.
+
+Common causes are:
+* /etc/rc.d/rc on Fedora Core 1 and RH9 fails always; the 'apt-rpm' build
+  method knows how to deal with this, but on existing installations,
+  appending 'true' to this file will help."
+    fi
+
+    if test -n "$is_executed"; then
+       warning $"
+An error occured after executing the vserver startup sequence. This
+means that some processes may exist in the created context and the
+manual execution of
+
+  $_VSERVER '$VSERVER_DIR' stop
+
+is recommended to fix this."
+    else
+       warning $"
+
+Failed to start vserver '$VSERVER_NAME'"
+    fi
+
+    test -n "$OPTION_DEBUG"    || exec 2>/dev/null >/dev/null
+    test -z "$is_mounted"      || umountVserver     "$VSERVER_DIR" || :
+    test -z "$have_interfaces" || disableInterfaces "$VSERVER_DIR" || :
+
+    unlock || :
+}
+
+is_configured=
+is_executed=
+is_started=
+is_mounted=
+is_vshelper_init=
+have_interfaces=
+startsync_pipe=
+
+while test "$#" -gt 0; do
+    case "$1" in
+       (--rescue)      INITSTYLE=rescue;;
+       (--rescue-cmd)  INITCMD_RESCUE=( $2 ); shift;;
+       (*)             panic $"vserver ... start: unknown option '$1'";;
+    esac
+    shift
+done
+
+set -e
+trap "cleanup" EXIT
+
+sanityCheck      "$VSERVER_DIR"
+
+mountRootFS      "$VSERVER_DIR"
+generateOptions  "$VSERVER_DIR"
+
+pushd "$VSERVER_DIR" >/dev/null
+execScriptlets   "$VSERVER_DIR" "$VSERVER_NAME" prepre-start
+popd >/dev/null
+
+enableInterfaces "$VSERVER_DIR" && have_interfaces=1
+
+mountVserver "$VSERVER_DIR"     && is_mounted=1
+prepareInit  "$VSERVER_DIR"
+
+pushd "$VSERVER_DIR"/vdir/ >/dev/null
+execScriptlets   "$VSERVER_DIR" "$VSERVER_NAME" pre-start
+popd >/dev/null
+
+test -z "$OPTION_DEFAULTTTY" || setDefaultTTY "$VSERVER_DIR"
+
+pushd "$VSERVER_DIR"/vdir/ >/dev/null
+is_configured=1
+if $_VSERVER_INFO - FEATURE migrate; then
+    ${NICE_CMD[@]} \
+    $_CHBIND      "${CHBIND_OPTS[@]}" -- \
+    $_EXEC_ULIMIT "$VSERVER_DIR"/ulimits \
+    $_VCONTEXT   --create "${OPTS_VCONTEXT_CREATE[@]}" -- \
+    ${USE_VNAMESPACE:+$_VNAMESPACE --set -- } \
+    $_VLIMIT     --dir "$VSERVER_DIR"/rlimits --missingok -- \
+    $_VSCHED     --xid self "${OPTS_VSCHED[@]}" -- \
+    $_VUNAME     --xid self --dir "$VSERVER_DIR"/uts     --missingok -- \
+    "${VSERVER_EXTRA_CMDS[@]}" \
+    $_VUNAME     --xid self --set -t context="$VSERVER_DIR" -- \
+    $_VATTRIBUTE --set "${OPTS_VATTRIBUTE[@]}" -- \
+    $_SAVE_CTXINFO "$VSERVER_DIR" \
+    $_ENV -i -- \
+    $_VCONTEXT   --migrate-self --endsetup --chroot $SILENT_OPT \
+    "${OPTS_VCONTEXT_MIGRATE[@]}" "${OPTS_VCONTEXT_ENTER[@]}" -- \
+    "${INITCMD_START[@]}"
+else
+    if test -n "$_IS_FAKEINIT"; then
+       startsync_pipe=$($_MKTEMP /tmp/vserver-start.XXXXXX)
+       $_RM -f "$startsync_pipe"
+       $_MKFIFO -m600 "$startsync_pipe"        ## safe, since mkfifo does not follow symlinks
+    fi
+    
+    ${NICE_CMD[@]} \
+    $_CHBIND           "${CHBIND_OPTS[@]}" \
+    $_EXEC_ULIMIT      "$VSERVER_DIR/ulimits" \
+    $_CHCONTEXT_COMPAT "${CHCONTEXT_OPTS[@]}" "${CHCONTEXT_INIT_OPTS[@]}" \
+    $_SAVE_CTXINFO     "$VSERVER_DIR" \
+    $_ENV -i -- \
+    $_CHAINECHO "${_IS_FAKEINIT:+$startsync_pipe}" "" \
+    $_CAPCHROOT        "${CAPCHROOT_OPTS[@]}" . \
+    "${INITCMD_START[@]}"
+
+    ## the additional synchronization step is needed since vshelper.doInit
+    ## below might be executed before needed context information were
+    ## saved by $_SAVE_CTXINFO
+    ${_IS_FAKEINIT:+cat "$startsync_pipe"} >/dev/null
+fi
+is_executed=1
+
+"${INITCMD_START_SYNC[@]}"
+popd >/dev/null
+
+pushd "$VSERVER_DIR"/vdir/ >/dev/null
+execScriptlets   "$VSERVER_DIR" "$VSERVER_NAME" post-start
+popd >/dev/null
+
+is_vshelper_init=1
+! vshelper.isEnabled "" "$VSERVER_DIR" || vshelper.doInit "$VSERVER_DIR"
+
+is_started=1
diff --git a/scripts/vserver.stop b/scripts/vserver.stop
new file mode 100644 (file)
index 0000000..f1ac335
--- /dev/null
@@ -0,0 +1,101 @@
+# $Id: vserver.stop,v 1.29 2005/06/30 06:17:58 ensc Exp $  --*- sh -*--
+
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+
+lock "$__LOCKDIR"/vserver."$($_VSERVER_INFO "$VSERVER_DIR" CANONIFY)".startup
+
+if ! isVserverRunning "$VSERVER_DIR" S_CONTEXT; then
+    warning $"vserver '$VSERVER_NAME' is not running" >&2
+    test -n "$OPTION_DEBUG" || exec 2>/dev/null >/dev/null
+    umountVserver     "$VSERVER_DIR" || :
+    disableInterfaces "$VSERVER_DIR" || :
+    unlock
+    exit 0
+fi
+
+function cleanup
+{
+    set +e
+    unlock
+    
+    test ! -p "$sync_fifo" || {
+       $_RM -f "$sync_fifo"
+       $_RMDIR $($_DIRNAME "$sync_fifo")
+    }
+
+    test ! -d "$vwait_statdir" ||
+       $_RM -rf "$vwait_statdir"
+}
+
+vwait_statdir=
+vwait_pid=
+sync_fifo=
+trap "cleanup" EXIT
+
+OPTION_FORCE_SYNC=1
+
+set -e
+generateOptions   "$VSERVER_DIR"
+set +e
+
+vshelper.doDestroy "$VSERVER_DIR" "$S_CONTEXT"
+initSync           "$VSERVER_DIR" "$S_CONTEXT" sync_fifo
+prepareStop        "$VSERVER_DIR"
+
+cd "$VSERVER_DIR"/vdir/
+execScriptlets     "$VSERVER_DIR" "$VSERVER_NAME" pre-stop
+cd "$VSERVER_DIR"/vdir/
+
+test -z "$OPTION_DEFAULTTTY" || setDefaultTTY "$VSERVER_DIR"
+
+fail=
+initWait          "$VSERVER_DIR" "$S_CONTEXT" vwait_statdir
+if test -n "$_IS_FAKEINIT" && \
+   $_VSERVER_INFO - FEATURE vkill; then
+    $_VKILL -s INT --xid "$S_CONTEXT" -- 1 || fail=1
+    ## HACK: remove the 'initpid' stuff above when PID virtualization
+    ## is implemented
+elif $_VSERVER_INFO - FEATURE migrate; then
+    "${NICE_CMD[@]}" \
+    ${USE_VNAMESPACE:+$_VNAMESPACE --enter "$S_CONTEXT" -- } \
+    $_VCONTEXT $SILENT_OPT --migrate --chroot --xid "$S_CONTEXT" -- \
+    "${INITCMD_STOP[@]}" || fail=1
+else
+    "${NICE_CMD[@]}" \
+    "$_CHBIND"       "${CHBIND_OPTS[@]}" \
+    "$_EXEC_ULIMIT"  "$VSERVER_DIR/ulimits" \
+    ${USE_VNAMESPACE:+$_VNAMESPACE --enter "$S_CONTEXT"} \
+    $_CHCONTEXT_COMPAT    "${CHCONTEXT_OPTS[@]}" \
+    "$_CAPCHROOT"    "${CAPCHROOT_OPTS[@]}" "." \
+    "${INITCMD_STOP[@]}" || fail=1
+fi
+
+test -n "$fail" || waitForSync "$VSERVER_DIR" "$sync_fifo" "$vwait_statdir"
+
+vshelper.doDestroy "$VSERVER_DIR" "$S_CONTEXT"
+sendKillSequence   "$S_CONTEXT" "${INITKILL_SEQ[@]}"
+
+## Small hack... isVserverRunning removes stale runfiles as a sideeffect
+! isVserverRunning  "$VSERVER_DIR" || \
+    echo $"Vserver '$VSERVER_DIR' still running unexpectedly; please investigate it manually..." >&2
+
+execScriptlets    "$VSERVER_DIR" "$VSERVER_NAME" post-stop
+    
+umountVserver     "$VSERVER_DIR" || :
+disableInterfaces "$VSERVER_DIR"
+
+execScriptlets    "$VSERVER_DIR" "$VSERVER_NAME" postpost-stop
diff --git a/scripts/vserver.suexec b/scripts/vserver.suexec
new file mode 100644 (file)
index 0000000..963bdf5
--- /dev/null
@@ -0,0 +1,59 @@
+# $Id: vserver.suexec,v 1.14 2005/07/15 19:01:06 ensc Exp $  --*- sh -*--
+
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+is_stopped=
+isVserverRunning "$VSERVER_DIR" S_CONTEXT || is_stopped=1
+test -z "$is_stopped" -o "$OPTION_INSECURE" || {
+    echo $"'vserver ... suexec' is supported for running vservers only; aborting..." >&2
+    exit 1
+}
+generateOptions  "$VSERVER_DIR"
+
+user=$1
+shift
+
+cd "$VSERVER_DIR"/vdir/
+
+if $_VSERVER_INFO - FEATURE migrate; then
+    if test -z "$is_stopped"; then
+       exec \
+        $_CHBIND      "${CHBIND_OPTS[@]}" \
+       $_EXEC_ULIMIT "$VSERVER_DIR/ulimits" \
+       ${USE_VNAMESPACE:+$_VNAMESPACE --enter "$S_CONTEXT" -- } \
+       $_VCONTEXT $SILENT_OPT --migrate --chroot \
+         --xid "$S_CONTEXT" --uid "$user" "${OPTS_VCONTEXT_ENTER[@]}" -- \
+       "$@"
+    else
+       exec \
+       $_CHBIND      "${CHBIND_OPTS[@]}" \
+       $_EXEC_ULIMIT "$VSERVER_DIR/ulimits" \
+        $_VCONTEXT --create "${OPTS_VCONTEXT_CREATE[@]}" -- \
+       $_VUNAME   --xid self --dir "$VSERVER_DIR"/uts     --missingok -- \
+       $_VUNAME   --xid self --set -t context="$VSERVER_DIR" -- \
+       $_VCONTEXT --migrate-self --endsetup --chroot $SILENT_OPT -- \
+       "$@"
+    fi
+else
+    exec \
+    "${NICE_CMD[@]}" \
+    "$_CHBIND"       "${CHBIND_OPTS[@]}" \
+    "$_EXEC_ULIMIT"  "$VSERVER_DIR/ulimits" \
+    ${USE_VNAMESPACE:+$_VNAMESPACE --enter "$S_CONTEXT" --} \
+    $_CHCONTEXT_COMPAT "${CHCONTEXT_OPTS[@]}" -- \
+    "$_CAPCHROOT"    "${CAPCHROOT_OPTS[@]}" --suid "$user" . \
+    "$@"
+fi
index 930d3a1..7770a6b 100644 (file)
 
 # Produce some XML statistics about vservers
 
-: ${UTIL_VSERVER_VARS:=$(dirname $0)/util-vserver-vars}
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
 test -e "$UTIL_VSERVER_VARS" || {
-    echo "Can not find util-vserver installation; aborting..."
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
     exit 1
 }
 . "$UTIL_VSERVER_VARS"
 
-cd $VROOTDIR
+cd $__DEFAULT_VSERVERDIR
 for vserv in *
 do
        if [ -f /etc/vservers/$vserv.conf ] ; then
@@ -43,7 +43,7 @@ do
                        esac
                done
                echo "  <status>"
-               $SBINDIR/vserver $vserv status
+               $_VSERVER $vserv status
                echo "  </status>"
                echo "</m:vserver>"
        fi
diff --git a/scripts/vshelper b/scripts/vshelper
new file mode 100755 (executable)
index 0000000..9738ba8
--- /dev/null
@@ -0,0 +1,213 @@
+#! /usr/lib/util-vserver/sigexec /bin/bash
+
+# Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+## Usage: vshelper <xid> <action> <args>
+
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
+test -e "$UTIL_VSERVER_VARS" || {
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
+    exit 1
+}
+. "$UTIL_VSERVER_VARS"
+. "$_LIB_FUNCTIONS"
+
+function showHelp
+{
+    echo $"\
+Usage: vshelper <xid> <event> <args>*
+
+Report bugs to <$PACKAGE_BUGREPORT>."
+    exit 0
+}
+
+function showVersion
+{
+    echo $"\
+vshelper $PACKAGE_VERSION -- userspace reboot helper
+This program is part of $PACKAGE_STRING
+
+Copyright (C) 2004 Enrico Scholz
+This program is free software; you may redistribute it under the terms of
+the GNU General Public License.  This program has absolutely no warranty."
+    exit 0
+}
+
+function doInternalMethod
+{
+    local method=$1
+    case "$method" in
+       (restart)
+           case "$ACTION" in
+               (restart)
+                   logging $"Restarting vserver '$VSERVER'"
+                   spawn   killContext "$XID"
+                   execute $_VSERVER --defaulttty "$VSERVER" restart
+                   ;;
+               (halt|poweroff)
+                   logging $"Stopping vserver '$VSERVER'"
+                   spawn   killContext "$XID"
+                   execute $_VSERVER --defaulttty "$VSERVER" stop
+                   ;;
+               (swsusp)
+                   ## TODO: any senseful action here? Perhaps shutdown scheduler for it?
+                   exit 0
+                   ;;
+               (restart2)      ;;
+               (*)
+                   warning $"Unknown action '$ACTION' for vserver '$VSERVER'"
+                   exit 1
+           esac
+           ;;
+
+       (async)
+           spawn killContext "$XID"
+           ;;
+           
+       (sync)
+           local f=${METHOD_ARGS[0]}
+           test -n "$f" ||
+               panic $"Insufficent arguments for method '$method' and vserver '$VSERVER'"
+
+           test -p "$f" ||
+               panic $"File '$f' which is required for synchronisation of vserver '$VSERVER' is not a pipe"
+
+           spawn killContext "$XID"
+           echo "$ACTION" >"$f"
+           ;;
+
+       (*)
+           local script
+           findObject -x script "$__CONFDIR"/.defaults/apps/vshelper-methods/"$method" "$__PKGLIBDIR"/vshelper-methods/"$method" ''
+           
+           test -n '$script' || {
+               warning $"No handler for internal method '$method' found"
+               exit 1
+           }
+
+           export VSERVER
+           execute "$script" "${ARGS[@]}"
+    esac
+}
+    
+function doDefaultMethod
+{
+    local handler
+
+    vshelper.getHandler handler "$VSERVER" "$ACTION" || {
+       warning $"No handler configured for action '$ACTION' on vserver '$VSERVER'"
+       exit 1
+    }
+
+    case "$handler" in
+       (/*)    execute "$handler" "${ARGS[@]}";;
+       (:*)    doInternalMethod "${handler##:}" "$@";;
+    esac
+}
+
+#===========
+
+test "$1" != '--version' || showVersion
+test "$1" != '--help'    || showHelp
+
+if ! tty -s; then
+    findObject -e _VS_LOGFILE "$__CONFDIR"/.defaults/apps/vshelper/logfile /dev/null
+    findObject -e _VS_ERRFILE "$__CONFDIR"/.defaults/apps/vshelper/logfile /dev/null
+
+    exec   </dev/null
+    exec  >>$_VS_LOGFILE
+    exec 2>>$_VS_ERRFILE
+fi
+
+logging "$(date): vshelper $*"
+    
+test "$#" -ge 2 ||
+    panic $"vshelper called with missing arguments; try '--help' for more information"
+
+    
+vshelper.isEnabled || exit 0
+! vshelper.isDebug || set -x
+    
+set -eu
+
+if $_VSERVER_INFO - FEATURE vshelper0; then
+    declare -r XID=$1
+    declare -r ACTION=$2
+elif $_VSERVER_INFO - FEATURE vshelper; then
+    declare -r ACTION=$1
+    declare -r XID=$2
+else
+    panic $"vshelper functionality not supported by kernel"
+fi
+
+findObject -x delegate "$__CONFDIR"/.defaults/apps/vshelper-delegate/"$ACTION" "$__PKGLIBDIR"/vshelper-delegate/"$ACTION" ''
+test -e "$delegate" && exec -a "$ACTION" "$delegate" "$@"
+
+this_xid=$($_VSERVER_INFO - XID)
+pxid=
+responsible_xid=$XID
+while true; do
+    pxid=$($_VSERVER_INFO "$responsible_xid" PXID) || break
+    test "$pxid" -ne "$this_xid"                   || break
+    responsible_xid=$pxid
+done
+
+vserver_id=$($_VSERVER_INFO "$responsible_xid" ID) ||
+    panic $"No responsible vserver found for xid '$responsible_xid' ($XID); aborting..."
+    
+test "$XID" = "$responsible_xid" || {
+    logging "Giving 'vshelper' task for '$XID' to parent vserver '$vserver_id' ($responsible_xid)"
+    execute $_VSERVER "$vserver_id" exec $_VSHELPER "$@"
+}
+
+#===========
+
+ARGS=( "$@" )
+
+declare -a state
+getFileArray state "$__VSHELPERSTATEDIR/$XID" && test ${#state[@]} -ge 2 || {
+    logging "'vshelper' not configured for xid '$XID'"
+    exit 0
+}
+
+declare -r VSERVER=${state[0]}
+
+cfg_xid=$($_VSERVER_INFO "${state[0]}" CONTEXT false) ||
+    panic $"Configured vserver '$VSERVER' does not seem to run; aborting..."
+
+test "$cfg_xid" = "$XID" ||
+    panic $"Configured ($cfg_xid) and actual ($XID) xid for vserver '$VSERVER' are mismatching; aborting..."
+
+cur_xid=$($_VSERVER_INFO "$VSERVER" CONTEXT false) ||
+    panic $"Vserver '$VSERVER' with '$XID' does not seem to run; strange..."
+
+test "$cur_xid" = "$XID" ||
+    panic $"Expected ($XID) and actual ($cur_xid) xid for vserver '$VSERVER' are mismatching; strange..."
+
+
+method=${state[1]}
+if test "${#state[@]}" -gt 2; then
+    unset state[0] state[1]
+    declare -ra METHOD_ARGS=( "${state[@]}" )
+else
+    declare -ra METHOD_ARGS=()
+fi
+
+case "$method" in
+    (default)          doDefaultMethod "$@";;
+    (sync|async)       doInternalMethod "$method" "$@";;
+    (*)                        panic $"Unknown method '$method' used by vserver '$VSERVER'";;
+esac
diff --git a/scripts/vsomething b/scripts/vsomething
new file mode 100755 (executable)
index 0000000..1826a20
--- /dev/null
@@ -0,0 +1,126 @@
+#! /bin/bash
+# $Id: vsomething,v 1.3 2005/04/24 20:30:55 ensc Exp $
+
+# Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
+test -e "$UTIL_VSERVER_VARS" || {
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
+    exit 1
+}
+. "$UTIL_VSERVER_VARS"
+. "$_LIB_FUNCTIONS"
+
+
+function showHelp()
+{
+    echo \
+$"Usage: $0 [--quiet|-q] [--debug] <cmd> [--] <vserver-name>* [--all] -- <params>+
+
+Execute <cmd> <vserver> <params>* foreach vserver.
+
+Report bugs to <$PACKAGE_BUGREPORT>."
+    exit 0
+}
+
+function showVersion()
+{
+    echo \
+$"vsomething $PACKAGE_VERSION -- execute something for a set of vservers
+This program is part of $PACKAGE_STRING
+
+Copyright (C) 2005 Enrico Scholz
+This program is free software; you may redistribute it under the terms of
+the GNU General Public License.  This program has absolutely no warranty."
+    exit 0
+}
+
+
+is_quiet=
+declare -a vservers=()
+
+tmp=$(getopt -o +q --long help,version,debug,quiet -n "$0" -- "$@") || exit 1
+eval set -- "$tmp"
+
+while true; do
+    case "$1" in
+       (--help)        showHelp $0 ;;
+       (--version)     showVersion ;;
+       (--debug)       set -x;;
+       (--quiet|-q)    is_quiet=1 ;;
+       (--)            shift; break;;
+       (*)             echo $"vserver: internal error; arg=='$1'" >&2; exit 1;;
+    esac
+    shift
+done
+
+test "$#" -ge 1 || \
+    panic $"vsomething: no operation specified; try '--help' for more information"
+
+cmd=$1
+title=${VSOMETHING_TITLE:-$cmd}
+shift
+
+while test "$#" -ge 1; do
+    if getAllVserversByArg tmp "$1"; then
+       vservers=( "${vservers[@]}" "${tmp[@]}" )
+    else
+       case "$1" in
+           (--) shift; break;;
+           (*)  vservers=( "${vservers[@]}" "$1" )
+       esac
+    fi
+    shift
+done
+
+
+test "${#vservers[@]}" -ne 1 || is_quiet=1
+
+
+cnt=0
+res=255
+for i in "${vservers[@]}"; do
+    cnt=$[ cnt + 1 ]
+
+    test -n "$is_quiet" || {
+       colorize bold echo -n "$title: operating on vserver "
+       colorize bold colorize emph echo "$i"
+       xtermTitle "$title: operating on vserver '$i'  [$cnt/${#vservers[@]}]"
+    }
+
+    if test -n "$VSOMETHING_PKGMGMT"; then
+       if pkgmgmt.isInternal "$i"; then
+           $_VSERVER "$i" exec "$cmd" "$@"
+       else
+           callInNamespace "$i" \
+               "$_VNAMESPACE" --new -- "$VSOMETHING_WORKER" "$i" "$@"
+       fi
+    else
+       "$cmd" "$i" "$@"
+    fi
+       
+    res=$?
+
+    test $res -eq 0 -o -n "$is_quiet" || {
+       colorize error echo -n $"$title failed on vserver '$i' with errorcode $res"
+       echo
+    }
+       
+    test -n "$is_quiet" || echo
+done
+
+test "$cnt" -ge 0 || warning $"No vservers specified"
+exit $res
index f26ccf5..24d3eaa 100755 (executable)
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
 # Helper script for all the v_xxx scripts
-: ${UTIL_VSERVER_VARS:=$(dirname $0)/util-vserver-vars}
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
 test -e "$UTIL_VSERVER_VARS" || {
-    echo "Can not find util-vserver installation; aborting..."
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
     exit 1
 }
 . "$UTIL_VSERVER_VARS"
 
 if [ $# = 0 ] ; then
        echo vsysvwrapper service_name >&2
+       exit 6
 else
        SERVICE=$1
        shift
@@ -39,8 +40,6 @@ else
        do
                IPOPT="$IPOPT --ip $oneip"
        done
-       echo exec $SBINDIR/chbind $IPOPT /etc/init.d/$SERVICE $*
-       exec $SBINDIR/chbind $IPOPT /etc/init.d/$SERVICE $*
+       echo exec $CHBIND $IPOPT /etc/init.d/$SERVICE "$@"
+       exec $CHBIND $IPOPT /etc/init.d/$SERVICE "$@"
 fi
-
-
index ae32b54..5ebf25f 100755 (executable)
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
 #Presents the processes running in all virtual servers
-: ${UTIL_VSERVER_VARS:=$(dirname $0)/util-vserver-vars}
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
 test -e "$UTIL_VSERVER_VARS" || {
-    echo "Can not find util-vserver installation; aborting..."
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
     exit 1
 }
 . "$UTIL_VSERVER_VARS"
 
-exec $SBINDIR/chcontext --silent --ctx 1 top $*
+exec $__SBINDIR/chcontext --silent --ctx 1 top "$@"
diff --git a/scripts/vyum b/scripts/vyum
new file mode 100755 (executable)
index 0000000..3c40e8d
--- /dev/null
@@ -0,0 +1,74 @@
+#! /bin/bash
+# $Id: vyum,v 1.2 2005/03/02 01:24:44 ensc Exp $
+
+# Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
+test -e "$UTIL_VSERVER_VARS" || {
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
+    exit 1
+}
+. "$UTIL_VSERVER_VARS"
+. "$_LIB_FUNCTIONS"
+
+
+function showHelp()
+{
+    echo \
+$"Usage: $0 <vserver-name>* [--all] -- <params>+
+
+Report bugs to <$PACKAGE_BUGREPORT>."
+    exit 0
+}
+
+function showVersion()
+{
+    echo \
+$"vyum $PACKAGE_VERSION -- yum for vservers
+This program is part of $PACKAGE_STRING
+
+Copyright (C) 2005 Enrico Scholz
+This program is free software; you may redistribute it under the terms of
+the GNU General Public License.  This program has absolutely no warranty."
+    exit 0
+}
+
+tmp=$(getopt -o +q --long help,version,debug,quiet,all -n "$0" -- "$@") || exit 1
+eval set -- "$tmp"
+
+declare -a send_through yum_opts
+
+while true; do
+    case "$1" in
+       (--help)        showHelp $0 ;;
+       (--version)     showVersion ;;
+       (--debug)       send_through=( "${send_through[@]}" "$1" ); set -x;;
+       (--quiet|-q)    send_through=( "${send_through[@]}" "$1" );;
+       (--all)         yum_opts=( "${yum_opts[@]}" "$1" );;
+       (--)            shift; break;;
+       (*)             echo $"vyum: internal error; arg=='$1'" >&2; exit 1;;
+    esac
+    shift
+done
+
+VSOMETHING_TITLE=vyum
+VSOMETHING_WORKER=$_VYUM_WORKER
+VSOMETHING_PKGMGMT=1
+
+export VSOMETHING_TITLE VSOMETHING_WORKER VSOMETHING_PKGMGMT
+
+test ${#yum_opts[@]} -eq 0 || yum_opts=( "${yum_opts[@]}" -- )
+exec $_VSOMETHING "${send_through[@]}" yum "${yum_opts[@]}" "$@"
diff --git a/scripts/vyum-worker b/scripts/vyum-worker
new file mode 100755 (executable)
index 0000000..984d1d6
--- /dev/null
@@ -0,0 +1,64 @@
+#! /bin/bash
+# $Id: vyum-worker,v 1.5 2005/04/08 19:18:06 ensc Exp $
+
+# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#  
+# 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; version 2 of the License.
+#  
+# 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.
+
+set -e
+
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
+test -e "$UTIL_VSERVER_VARS" || {
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
+    exit 1
+}
+. "$UTIL_VSERVER_VARS"
+. "$_LIB_FUNCTIONS"
+
+vserver=$1
+shift
+
+pkgInit "$vserver" rpm yum
+rpmFake.init "$vserver"
+
+test -z "$_YUM" || {
+    warning $"The environment variable \$_YUM is not supported anymore; please use \$YUM instead of"
+    ${YUM:=$_YUM}
+}
+
+yum=${YUM:-yum}
+conf=yum.conf
+case $(yum --version) in
+    (2.[0123]*)
+       python -c 'import yum,sys; sys.exit(not hasattr(yum.config.yumconf, "getRootedPath"))' &>/dev/null || {
+           warning "\
+You are using a version of yum which is insecure and broken in chroot
+related operations; either apply the patches shipped in the 'contrib/'
+directory of util-vserver, or ask the author of yum to apply them
+(preferred).
+
+In the meantime, 'vyum' will continue with dirty hacks which might not
+work when the vserver is running and local DOS attacks are possible.
+
+Execution will continue in 5 seconds..."
+           sleep 5
+           conf=yum-hack.conf
+       }
+       ;;
+esac
+
+rpmFake.exec $yum \
+    -c "$YUMETCDIR/${YUM_CONF:-$conf}" \
+    --installroot="$VDIR" \
+    "$@"
index 2d2586e..5def348 100644 (file)
@@ -1,6 +1,6 @@
-## $Id: Makefile-files,v 1.1.4.8 2004/02/09 23:18:59 ensc Exp $  -*- makefile -*-
+## $Id: Makefile-files,v 1.70 2005/07/02 09:17:55 ensc Exp $  -*- makefile -*-
 
-## Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+## Copyright (C) 2003,2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 ##  
 ## 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
 ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 ##  
 
-src_HDRS               =  src/vutil.h src/vutil.p \
-                          src/ext2fs.h
-
-src_pkglib_SCRPTS      =  src/setattr
-src_pkglib_PRGS                =  src/capchroot \
-                          src/fakerunlevel \
-                          src/filetime \
-                          src/ifspec \
-                          src/listdevip \
-                          src/parserpmdump \
-                          src/readlink \
-                          src/showattr \
-                          src/showperm \
-                          src/vbuild \
-                          src/vcheck \
-                          src/vreboot \
-                          src/vunify
-
-src_sbin_PRGS          =  src/chbind \
-                          src/chcontext \
-                          src/rebootmgr \
-                          src/reducecap \
-                          src/vlimit \
-                          src/vdu \
-                          src/vfiles \
-                          src/vkill \
-                          src/vserver-stat
-
-src_GENFILES           =  src/setattr
-
-src_capchroot_SOURCES          =  src/capchroot.c
-src_capchroot_LDADD            =  lib/libvserver.a
-
-src_chbind_SOURCES             =  src/chbind.c
-src_chbind_LDADD               =  lib/libvserver.a
-
-src_chcontext_SOURCES          =  src/chcontext.c
-src_chcontext_LDADD            =  lib/libvserver.a
+src_sbin_CXX_PROGS =   
+src_pkglib_CXX_PROGS = 
+
+src_pkglib_C99_PROGS = src/vunify src/vcopy
+
+
+AM_INSTALLCHECK_STD_OPTIONS_EXEMPT += \
+                       src/parserpmdump \
+                       src/showperm \
+                       src/vbuild \
+                       src/vcheck \
+                       src/vreboot \
+                       src/save_ctxinfo \
+                       src/mask2prefix \
+                       src/ifspec \
+                       src/rebootmgr \
+                       src/vdu \
+                       src/vfiles
+
+DIETPROGS +=           src/chcontext-compat \
+                       src/capchroot \
+                       src/chain-echo \
+                       src/check-unixfile \
+                       src/chroot-sh \
+                       src/filetime \
+                       src/lockfile \
+                       src/readlink \
+                       src/secure-mount \
+                       src/save_ctxinfo \
+                       src/mask2prefix \
+                       src/chbind \
+                       src/exec-cd \
+                       src/fakerunlevel \
+                       src/keep-ctx-alive \
+                       src/exec-ulimit \
+                       src/vps \
+                       src/lsxid \
+                       src/chxid \
+                       src/reducecap \
+                       src/showattr \
+                       src/setattr \
+                       src/sigexec \
+                       src/vattribute \
+                       src/vlimit \
+                       src/vnamespace \
+                       src/vunify \
+                       src/vuname \
+                       src/rpm-fake-resolver \
+                       src/vcontext \
+                       src/vcopy \
+                       src/vkill \
+                       src/vsched \
+                       src/vshelper-sync \
+                       src/vrsetup \
+                       src/vserver-stat \
+                       src/vserver-info \
+                       src/vdlimit \
+                       src/vwait
+
+if ENSC_CAN_BEECRYPT_WITH_DIETLIBC
+DIETPROGS +=           src/vhashify
+endif
+
+noinst_HEADERS +=      src/capability-compat.h \
+                       src/util.h \
+                       src/fstool.h \
+                       src/compat-pivot_root.h \
+                       src/stack-start.h \
+                       src/vcopy-init.hc \
+                       src/vunify.h \
+                       src/vunify-init.hc \
+                       src/vhashify.h \
+                       src/vhashify-init.hc \
+                       src/vserver-visitdir.hc \
+                       src/context-sync.hc
+
+pkglib_PROGRAMS +=     src/capchroot \
+                       src/chain-echo \
+                       src/chcontext-compat \
+                       src/check-unixfile \
+                       src/chroot-sh \
+                       src/fakerunlevel \
+                       src/filetime \
+                       src/keep-ctx-alive \
+                       src/lockfile \
+                       src/readlink \
+                       src/save_ctxinfo \
+                       src/secure-mount \
+                       src/mask2prefix \
+                       src/exec-ulimit \
+                       src/rpm-fake-resolver \
+                       src/vshelper-sync \
+                       src/sigexec \
+                       $(src_pkglib_C99_X_PROGS) \
+                       $(src_pkglib_CXX_X_PROGS)
+
+if ENSC_HAVE_C99_COMPILER
+if ENSC_HAVE_BEECRYPT
+pkglib_PROGRAMS +=     src/vhashify
+endif ENSC_HAVE_BEECRYPT
+endif ENSC_HAVE_C99_COMPILER
+
+legacy_PROGRAMS +=     src/ifspec \
+                       src/listdevip \
+                       src/parserpmdump \
+                       src/rebootmgr \
+                       src/showperm \
+                       src/vreboot
+
+pkglib_LTLIBRARIES +=  src/rpm-fake.la
+
+sbin_PROGRAMS +=       src/chbind \
+                       src/exec-cd \
+                       src/lsxid \
+                       src/chxid \
+                       src/vps \
+                       src/showattr \
+                       src/setattr \
+                       src/reducecap \
+                       src/vdu \
+                       src/vattribute \
+                       src/vcontext \
+                       src/vlimit \
+                       src/vkill \
+                       src/vnamespace \
+                       src/vrsetup \
+                       src/vsched \
+                       src/vserver-stat \
+                       src/vserver-info \
+                       src/vuname \
+                       src/vwait \
+                       $(src_sbin_CXX_X_PROGS)
+
+if ENSC_HAVE_C99_COMPILER
+sbin_PROGRAMS +=       src/vdlimit
+endif
+
+
+src_capchroot_SOURCES =                src/capchroot.c
+src_capchroot_LDADD =          $(VSERVER_LDADDS)
+src_capchroot_LDFLAGS =                $(VSERVER_LDFLGS)
+
+src_chbind_SOURCES =           src/chbind.c
+src_chbind_LDADD =             $(VSERVER_LDADDS)
+src_chbind_LDFLAGS =           $(VSERVER_LDFLGS)
+
+src_chcontext_compat_SOURCES = src/chcontext.c
+src_chcontext_compat_LDADD =   $(VSERVER_LDADDS) $(LIBINTERNAL)
+src_chcontext_compat_LDFLAGS = $(VSERVER_LDFLGS)
+
+src_vcontext_SOURCES           =  src/vcontext.c
+src_vcontext_LDADD             =  $(VSERVER_LDADDS) $(LIBINTERNAL)
+src_vcontext_LDFLAGS           =  $(VSERVER_LDFLGS)
+
+src_vsched_SOURCES             =  src/vsched.c
+src_vsched_LDADD               =  $(VSERVER_LDADDS)
+src_vsched_LDFLAGS             =  $(VSERVER_LDFLGS)
 
-src_fakerunlevel_SOURCES       =  src/fakerunlevel.c
 src_filetime_SOURCES           =  src/filetime.c
+src_filetime_LDADD             =  $(VSERVER_LDADDS)
+src_filetime_LDFLAGS           =  $(VSERVER_LDFLGS)
+
+src_chain_echo_SOURCES         =  src/chain-echo.c
+src_chroot_sh_SOURCES          =  src/chroot-sh.c
+src_exec_cd_SOURCES            =  src/exec-cd.c
+src_fakerunlevel_SOURCES       =  src/fakerunlevel.c
 src_ifspec_SOURCES             =  src/ifspec.c
 src_listdevip_SOURCES          =  src/listdevip.c
+src_lockfile_SOURCES           =  src/lockfile.c
 src_parserpmdump_SOURCES       =  src/parserpmdump.c
 src_readlink_SOURCES           =  src/readlink.c
-
 src_rebootmgr_SOURCES          =  src/rebootmgr.c
-src_rebootmgr_CPPFLAGS         =  $(AM_CPPFLAGS) -DSBINDIR=\"$(sbindir)\" -DVROOTDIR=\"$(vserverdir)\"
+src_exec_ulimit_SOURCES                =  src/exec-ulimit.c
+src_vshelper_sync_SOURCES      =  src/vshelper-sync.c
 
 src_reducecap_SOURCES          =  src/reducecap.c
-src_reducecap_LDADD            =  lib/libvserver.a
-
-src_vlimit_SOURCES             =  src/vlimit.c
-src_vlimit_LDADD               =  lib/libvserver.a
+src_reducecap_LDADD            =  $(VSERVER_LDADDS)
+src_reducecap_LDFLAGS          =  $(VSERVER_LDFLGS)
 
 src_vkill_SOURCES              =  src/vkill.c
-src_vkill_LDADD                        =  lib/libvserver.a
+src_vkill_LDADD                        =  $(VSERVER_LDADDS)
+src_vkill_LDFLAGS              =  $(VSERVER_LDFLGS)
 src_vkill_CPPFLAGS             =  $(AM_CPPFLAGS) -DLEGACYDIR=\"$(legacydir)\"
 
-src_showattr_SOURCES           =  src/showattr.c
-src_showperm_SOURCES           =  src/showperm.c
-src_vbuild_SOURCES             =  src/vbuild.cc src/vutil.cc
-src_vdu_SOURCES                        =  src/vdu.c
-src_vfiles_SOURCES             =  src/vfiles.cc src/vutil.cc
-src_vreboot_SOURCES            =  src/vreboot.c
+src_vlimit_SOURCES             =  src/vlimit.c
+src_vlimit_LDADD               =  $(VSERVER_LDADDS)
+src_vlimit_LDFLAGS             =  $(VSERVER_LDFLGS)
+
+src_save_ctxinfo_SOURCES       =  src/save_ctxinfo.c
+src_save_ctxinfo_LDADD         =  $(VSERVER_LDADDS)
+src_save_ctxinfo_LDFLAGS       =  $(VSERVER_LDFLGS)
+
+src_vdu_SOURCES =              src/vdu.c
+src_vreboot_SOURCES =          src/vreboot.c
+
+src_secure_mount_SOURCES =     src/secure-mount.c
+src_secure_mount_LDADD =       $(VSERVER_LDADDS)
+src_secure_mount_LDFLAGS =     $(VSERVER_LDFLGS)
+
+src_vattribute_SOURCES =       src/vattribute.c
+src_vattribute_LDADD =         $(VSERVER_LDADDS)
+src_vattribute_LDFLAGS =       $(VSERVER_LDFLGS)
+
+src_vnamespace_SOURCES =       src/vnamespace.c
+src_vnamespace_LDADD =         $(VSERVER_LDADDS) $(LIBINTERNAL)
+src_vnamespace_LDFLAGS =       $(VSERVER_LDFLGS)
+
+src_rpm_fake_resolver_SOURCES  =  src/rpm-fake-resolver.c
+src_rpm_fake_resolver_LDADD    =  $(VSERVER_LDADDS)
+src_rpm_fake_resolver_LDFLAGS  =  $(VSERVER_LDFLGS)
+
+src_mask2prefix_SOURCES                =  src/mask2prefix.c
+
+src_vps_SOURCES                        =  src/vps.c
+src_vps_LDADD                  =  $(LIBINTERNAL) $(VSERVER_LDADDS)
+src_vps_LDFLAGS                        =  $(VSERVER_LDFLGS)
+
+src_vserver_info_SOURCES       =  src/vserver-info.c
+src_vserver_info_LDADD         =  $(LIBINTERNAL) $(VSERVER_LDADDS)
+src_vserver_info_LDFLAGS       =  $(VSERVER_LDFLGS)
 
 src_vserver_stat_SOURCES       =  src/vserver-stat.c
-src_vserver_stat_LDADD         =  lib/libvserver.a
+src_vserver_stat_LDADD         =  $(LIBINTERNAL) $(VSERVER_LDADDS) $(LIBENSCVECTOR)
+src_vserver_stat_LDFLAGS       =  $(VSERVER_LDFLGS)
+
+src_lsxid_SOURCES              =  src/fstool.c src/lsxid.c
+src_lsxid_LDADD                        =  $(LIBINTERNAL) $(VSERVER_LDADDS) $(LIBENSCVECTOR)
+src_lsxid_LDFLAGS              =  $(VSERVER_LDFLGS) 
+
+src_chxid_SOURCES              =  src/fstool.c src/chxid.c
+src_chxid_LDADD                        =  $(LIBINTERNAL) $(VSERVER_LDADDS)
+src_chxid_LDFLAGS              =  $(VSERVER_LDFLGS)
+
+src_showattr_SOURCES           =  src/fstool.c src/showattr.c
+src_showattr_LDADD             =  $(LIBINTERNAL) $(VSERVER_LDADDS)
+src_showattr_LDFLAGS           =  $(VSERVER_LDFLGS)
+
+src_setattr_SOURCES            =  src/fstool.c src/setattr.c
+src_setattr_LDADD              =  $(LIBINTERNAL) $(VSERVER_LDADDS)
+src_setattr_LDFLAGS            =  $(VSERVER_LDFLGS)
+
+src_keep_ctx_alive_SOURCES =   src/keep-ctx-alive.c
+src_keep_ctx_alive_LDADD =     $(VSERVER_LDADDS)
+src_keep_ctx_alive_LDFLAGS =   $(VSERVER_LDFLGS)
+
+
+src_vcopy_SOURCES =            src/vcopy.c
+src_vcopy_LDADD =              $(LIBINTERNAL) $(VSERVER_LDADDS)
+src_vcopy_LDFLAGS =            $(VSERVER_LDFLGS)
+
+src_vunify_SOURCES =           src/vunify.c
+src_vunify_LDADD =             $(LIBINTERNAL) $(VSERVER_LDADDS)
+src_vunify_LDFLAGS =           $(VSERVER_LDFLGS)
+
+src_vhashify_SOURCES =         src/vhashify.c
+if ENSC_CAN_BEECRYPT_WITH_DIETLIBC
+src_vhashify_LDADD =           $(LIBINTERNAL) $(LIBENSCVECTOR) -lbeecrypt $(VSERVER_LDADDS)
+src_vhashify_LDFLAGS =         $(VSERVER_LDFLGS)
+else
+src_vhashify_LDADD =           $(LIBINTERNAL_GLIBC) $(LIBENSCVECTOR_GLIBC) $(LIBVSERVER_GLIBC) -lbeecrypt
+src_vhashify_LDFLAGS =
+endif
+
+src_vuname_SOURCES =           src/vuname.c
+src_vuname_LDADD =             $(VSERVER_LDADDS)
+src_vuname_LDFLAGS =           $(VSERVER_LDFLGS)
+
+src_rpm_fake_la_SOURCES                =  src/rpm-fake.c
+src_rpm_fake_la_CFLAGS         =  $(AM_CFLAGS)
+src_rpm_fake_la_LDFLAGS                =  -module -avoid-version -rpath $(pkglibdir)
+src_rpm_fake_la_LIBADD         =  $(LIBVSERVER_GLIBC) -ldl
+
+src_vdlimit_SOURCES            = src/vdlimit.c
+src_vdlimit_LDADD              = $(VSERVER_LDADDS)
+src_vdlimit_LDFLAGS            = $(VSERVER_LDFLGS)
+
+src_vwait_SOURCES              = src/vwait.c
+src_vwait_LDADD                        = $(VSERVER_LDADDS)
+src_vwait_LDFLAGS              = $(VSERVER_LDFLGS)
+
+EXTRA_PROGRAMS +=              $(src_sbin_CXX_PROGS) $(src_pkglib_CXX_PROGS)
+
+TESTS_ENVIRONMENT +=           srctestsuitedir=$(top_builddir)/src/testsuite
 
-src_vunify_SOURCES             =  src/vunify.cc src/vutil.cc
-src_vunify_CPPFLAGS            =  $(AM_CPPFLAGS) -DVROOTDIR=\"$(vserverdir)\"
-src_vcheck_SOURCES             =  src/vcheck.cc src/vutil.cc
+if ENSC_HAVE_C99_COMPILER
+src_sbin_C99_X_PROGS =         $(src_sbin_C99_PROGS)
+src_pkglib_C99_X_PROGS =       $(src_pkglib_C99_PROGS)
+else
+src_sbin_C99_X_PROGS =
+src_pkglib_C99_X_PROGS =  
+endif
 
-#install-data-hook:            $(DESTDIR)$(pkglibdir)/setattr
+if ENSC_HAVE_CXX_COMPILER
+src_sbin_CXX_X_PROGS =         $(src_sbin_CXX_PROGS)
+src_pkglib_CXX_X_PROGS =       $(src_pkglib_CXX_PROGS)
+else
+src_sbin_CXX_X_PROGS =
+src_pkglib_CXX_X_PROGS =  
+endif
 
-#$(DESTDIR)$(pkglibdir)/setattr:
-#                              ln -s showattr '$@'
+install-exec-hook:             src_install_exec_hook
 
-src/setattr$(EXEEXT):          src/showattr$(EXEEXT)
-                               @rm -f '$@'
-                               ln -s showattr$(EXEEXT) '$@'
+src_install_exec_hook:
+                               -rm -f $(DESTDIR)$(pkglibdir)/rpm-fake.a $(DESTDIR)$(pkglibdir)/rpm-fake.la
 
-## Local Variables:
-## compile-command: "make -C .. -k"
-## End:
+include $(top_srcdir)/src/testsuite/Makefile-files
diff --git a/src/capability-compat.h b/src/capability-compat.h
new file mode 100644 (file)
index 0000000..de9228b
--- /dev/null
@@ -0,0 +1,31 @@
+// $Id: capability-compat.h,v 1.1 2005/01/27 20:38:12 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#ifdef HAVE_SYS_CAPABILITY_H
+#  include <sys/capability.h>
+#else
+#  include <linux/capability.h>
+
+extern int capget (struct __user_cap_header_struct *, struct __user_cap_data_struct *);
+extern int capset (struct __user_cap_header_struct *, struct __user_cap_data_struct *);
+
+#endif
index 5b8d738..69dbe37 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: capchroot.c,v 1.1.4.2 2003/11/28 23:08:43 ensc Exp $
+// $Id: capchroot.c,v 1.7 2004/03/24 01:41:28 ensc Exp $
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 // based on capchroot.cc by Jacques Gelinas
        system call is executed, it (option) remove the CAP_SYS_CHROOT
        capability. Then it executes its argument
 */
+
 #ifdef HAVE_CONFIG_H
 #  include <config.h>
 #endif
-#include "compat.h"
+
+#include "vserver.h"
+#include "util.h"
 
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
 #include <stdbool.h>
 #include <stdlib.h>
+#include <getopt.h>
+#include <libgen.h>
 
-#include "linuxcaps.h"
-#include "vserver.h"
+#define ENSC_WRAPPERS_PREFIX   "capchroot: "
+#define ENSC_WRAPPERS_UNISTD   1
+#define ENSC_WRAPPERS_VSERVER  1
+#include <wrappers.h>
 
-int main (int argc, char *argv[])
+#define CMD_HELP               0x1000
+#define CMD_VERSION            0x1001
+#define CMD_NOCHROOT           0x2000
+#define CMD_SUID               0x2001
+
+int                    wrapper_exit_code = 255;
+
+static struct option const
+CMDLINE_OPTIONS[] = {
+  { "help",        no_argument,       0, CMD_HELP },
+  { "version",     no_argument,       0, CMD_VERSION },
+  { "nochroot",    no_argument,       0, CMD_NOCHROOT },
+  { "suid",        required_argument, 0, CMD_SUID },
+  {0,0,0,0}
+};
+
+static void
+showHelp(int fd, char const *cmd, int res)
+{
+  VSERVER_DECLARE_CMD(cmd);
+  WRITE_MSG(fd, "Usage:  ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " --nochroot [--suid <user>] [--] <directory> <command> <args>*\n"
+           "\n"
+           "Options:\n"
+            "    --nochroot     ... remove the CAP_SYS_CHROOT capability\n"
+            "                       after the chroot system call.\n"
+           "    --suid <user>  ... switch to a different user (in the vserver\n"
+           "                       context) before executing the command.\n"
+           "\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+  exit(res);
+}
+
+static void
+showVersion()
 {
-       if (argc < 3){
-               fprintf (stderr,"capchroot version %s\n",VERSION);
-               fprintf (stderr
-                       ,"capchroot --nochroot directory [ --suid user ] command argument\n"
-                        "\n"
-                        "--nochroot remove the CAP_SYS_CHROOT capability\n"
-                        "           after the chroot system call.\n"
-                        "--suid switch to a different user (in the vserver context)\n"
-                        "       before executing the command.\n");
-       }else{
-               const char *uid = NULL;
-               bool nochroot = false;
-               int dir;
-               for (dir=1; dir<argc; dir++){
-                       const char *arg = argv[dir];
-                       if (arg[0] != '-' && arg[1] != '-'){
-                               break;
-                       }else if (strcmp(arg,"--nochroot")==0){
-                               nochroot = true;
-                       }else if (strcmp(arg,"--suid")==0){
-                               dir++;
-                               uid = argv[dir];
-                       }
-                       
-               }
-               // We resolve the UID before doing the chroot.
-               // If we do the getpwnam after the chroot, we will end
-               // up loading shared object from the vserver.
-               // This is causing two kind of problem: Incompatibilities
-               // and also a security flaw. The shared objects in the vserver
-               // may be tweaked to get control of the root server ...
-               getpwnam ("root");
-               if (chroot(argv[dir]) == -1){
-                       fprintf (stderr,"Can't chroot to directory %s (%s)\n",argv[dir]
-                               ,strerror(errno));
-               }else{
-                       struct passwd *p = NULL;
-                       int cmd          = dir + 1;
-
-                       if (nochroot){
-                               vc_new_s_context (-2,1<<CAP_SYS_CHROOT,0);
-                       }
-
-                       if (uid != NULL && strcmp(uid,"root")!=0){
-                               p = getpwnam(uid);
-                               if (p == NULL){
-                                       fprintf (stderr,"User not found: %s\n",uid);
-                                       exit (-1);
-                               }
-                       }
-                       if (p != NULL) {
-                               setgroups (0,NULL);
-                               setgid(p->pw_gid);
-                               setuid(p->pw_uid);
-                       }
-                       if (cmd >= argc){
-                               fprintf (stderr,"capchroot: No command to execute, do nothing\n");
-                       }else{
-                               execvp (argv[cmd],argv+cmd);
-                               fprintf (stderr,"Can't execute %s (%s)\n",argv[cmd]
-                                       ,strerror(errno));
-                       }
-               }
-       }
-       return -1;
+  WRITE_MSG(1,
+           "capchroot " VERSION " -- a capability aware chroot\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2004 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+static void
+setUser(char const *user)
+{
+  struct passwd                *p = 0;
+  if (user!=0 && strcmp(user, "root")!=0) {
+    errno = 0;
+    p     = getpwnam(user);
+    if (p==0) {
+      if (errno==0) errno = ENOENT;
+      PERROR_Q(ENSC_WRAPPERS_PREFIX "getpwnam", user);
+      exit(wrapper_exit_code);
+    }
+  }
+
+  if (p!=0) {
+    Esetgroups(1, &p->pw_gid);
+    Esetgid(p->pw_gid);
+    Esetuid(p->pw_uid);
+
+    if (getuid()!=p->pw_uid || getgid()!=p->pw_gid) {
+      WRITE_MSG(2, ENSC_WRAPPERS_PREFIX "Something went wrong while changing uid; expected uid/gid do not match the actual one\n");
+      exit(wrapper_exit_code);
+    }
+  }
 }
+    
+int main (int argc, char *argv[])
+{
+  bool                         nochroot  = false;
+  char const *         suid_user = 0;
+  
+  while (1) {
+    int                c = getopt_long(argc, argv, "+", CMDLINE_OPTIONS, 0);
+    if (c==-1) break;
 
+    switch (c) {
+      case CMD_HELP    :  showHelp(1, argv[0], 0);
+      case CMD_VERSION :  showVersion();
+      case CMD_NOCHROOT        :  nochroot  = true;   break;
+      case CMD_SUID    :  suid_user = optarg; break;
+      default          :
+       WRITE_MSG(2, "Try '");
+       WRITE_STR(2, argv[0]);
+       WRITE_MSG(2, " --help\" for more information.\n");
+       return EXIT_FAILURE;
+       break;
+    }
+  }
 
+  if (optind==argc)
+    WRITE_MSG(2, "No directory specified; try '--help' for more information\n");
+  else if (optind+1==argc)
+    WRITE_MSG(2, "No command specified; try '--help' for more information\n");
+  else {
+      // We resolve the UID before doing the chroot.
+      // If we do the getpwnam after the chroot, we will end
+      // up loading shared object from the vserver.
+      // This is causing two kind of problem: Incompatibilities
+      // and also a security flaw. The shared objects in the vserver
+      // may be tweaked to get control of the root server ...
+    getpwnam("root");
+    Echroot(argv[optind]);
+    if (nochroot)
+      Evc_new_s_context(VC_SAMECTX, 1<<VC_CAP_SYS_CHROOT,0);
+    setUser(suid_user);
+    EexecvpD(argv[optind+1], argv+optind+1);
+  }
+
+  return EXIT_FAILURE;
+}
diff --git a/src/chain-echo.c b/src/chain-echo.c
new file mode 100644 (file)
index 0000000..4965ae2
--- /dev/null
@@ -0,0 +1,86 @@
+// $Id: chain-echo.c,v 1.1 2004/04/20 17:54:40 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+#include "util.h"
+
+#include <errno.h>
+#include <string.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+#define ENSC_WRAPPERS_PREFIX   "chain-echo: "
+#define ENSC_WRAPPERS_FCNTL    1
+#define ENSC_WRAPPERS_UNISTD   1
+#define ENSC_WRAPPERS_IO       1
+#include <wrappers.h>
+
+int    wrapper_exit_code = 255;
+
+static void
+showHelp(char const *cmd)
+{
+  WRITE_MSG(1, "Usage:  ");
+  WRITE_STR(1, cmd);
+  WRITE_MSG(1,
+           " [--] <file> <data> <command> <args>*\n\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+  exit(0);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "chain-echo " VERSION " -- puts data into a file within a command-chain\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2004 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+int main(int argc, char *argv[])
+{
+  int          idx = 1;
+  int          fd;
+
+  if (argc>=2) {
+    if (strcmp(argv[1], "--help")   ==0) showHelp(argv[0]);
+    if (strcmp(argv[1], "--version")==0) showVersion();
+    if (strcmp(argv[1], "--")       ==0) ++idx;
+  }
+  
+  if (argc<idx+3) {
+    WRITE_MSG(2, "Not enough parameters; use '--help' for more information\n");
+   return wrapper_exit_code;
+  }
+
+  if (argv[idx][0]=='\0')
+    fd = 1;
+  else {
+    fd = Eopen(argv[idx], O_WRONLY|O_NOFOLLOW, 0600);
+    Efcntl(fd, F_SETFD, FD_CLOEXEC);
+  }
+
+  if (argv[idx+1][0]!='\0')
+    EwriteAll(fd, argv[idx+1], strlen(argv[idx+1]));
+
+  Eexecv(argv[idx+2], argv+idx+2);
+}
index 3f82a3d..bc68711 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: chbind.c,v 1.1.4.1 2003/10/14 00:42:32 ensc Exp $
+// $Id: chbind.c,v 1.9 2004/03/16 14:30:10 ensc Exp $
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 // based on chbind.cc by Jacques Gelinas
@@ -20,7 +20,9 @@
 #ifdef HAVE_CONFIG_H
 #  include <config.h>
 #endif
-#include "compat.h"
+
+#include "vserver.h"
+#include "util.h"
 
 #include <stdio.h>
 #include <stdlib.h>
 #include <netdb.h>
 #include <sys/socket.h>
 #include <sys/ioctl.h>
-#include <netinet/in.h>
 #include <net/if.h>
 #include <unistd.h>
 #include <errno.h>
+#include <getopt.h>
+#include <fcntl.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
 
-#include "vserver.h"
+#define ENSC_WRAPPERS_PREFIX   "chbind: "
+#define ENSC_WRAPPERS_IO       1
+#define ENSC_WRAPPERS_UNISTD   1
+#include "wrappers.h"
+
+#define CMD_HELP       0x1000
+#define CMD_VERSION    0x1001
+
+#define CMD_SILENT     0x2000
+#define CMD_IP         0x2001
+#define CMD_BCAST      0x2002
+
+int wrapper_exit_code = 255;
+
+
+static struct option const
+CMDLINE_OPTIONS[] = {
+  { "help",     no_argument,  0, CMD_HELP },
+  { "version",  no_argument,  0, CMD_VERSION },
+  { "silent",   no_argument,  0, CMD_SILENT },
+  { "ip",       required_argument, 0, CMD_IP },
+  { "bcast",    required_argument, 0, CMD_BCAST },
+  { 0,0,0,0 }
+};
+
+static void
+showHelp(int fd, char const *cmd, int res)
+{
+  WRITE_MSG(fd, "Usage:\n  ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " [--silent] [--ip <ip_num>[/<mask>]] [--bcast <broadcast>] [--] <commands> <args>*\n\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+
+  exit(res);
+}
 
-static void usage()
+static void
+showVersion()
 {
-       fprintf (stderr,"chbind version %s\n",VERSION);
-       fprintf (stderr,"chbind [ --silent ] [ --ip ip_num[/mask] ] [ --bcast broadcast ] command argument\n");
-       exit (-1);
+  WRITE_MSG(1,
+           "chbind " VERSION " -- bind to an ip and execute a program\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2003,2004 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
 }
 
 /*
@@ -49,26 +93,33 @@ static void usage()
 
        Return != 0 if the device exist.
 */
-static int chbind_devexist (const char *dev)
+static bool
+existsDevice(char const *dev_raw)
 {
-       int ret = 0;
-       FILE *fin = fopen ("/proc/net/dev","r");
-       if (fin != NULL){
-               int len = strlen(dev);
-               char buf[1000];
-               fgets(buf,sizeof(buf)-1,fin);   // Skip one line
-               while (fgets(buf,sizeof(buf)-1,fin)!=NULL){
-                       const char *pt = strstr(buf,dev);
-                       if (pt != NULL && pt[len] == ':'){
-                               ret = 1;
-                               break;
-                       }
-               }
-               fclose (fin);
-       }
-       return ret;
-}
+  size_t       buf_size=8192;
+  char         dev[strlen(dev_raw)+2];
+
+  strcpy(dev, dev_raw);
+  strcat(dev, ":");
+  for (;;) {
+    char       buf[buf_size];
+    char *     pos;
+    bool       too_small;
+    int                fd=open("/proc/net/dev", O_RDONLY);
+    
+    if (fd==-1) return false;
+    too_small = EreadAll(fd, buf, buf_size);
+    close(fd);
 
+    if (too_small) {
+      buf_size *= 2;
+      continue;
+    }
+
+    pos = strstr(buf, dev);
+    return (pos && (pos==buf || pos[-1]==' ' || pos[-1]=='\n'));
+  }
+}
 
 static int ifconfig_ioctl(
        int fd,
@@ -87,12 +138,12 @@ static int ifconfig_ioctl(
 */
 int ifconfig_getaddr (
        const char *ifname,
-       unsigned long *addr,
-       unsigned long *mask,
-       unsigned long *bcast)
+       uint32_t *addr,
+       uint32_t *mask,
+       uint32_t *bcast)
 {
        int ret = -1;
-       if (chbind_devexist(ifname)){
+       if (existsDevice(ifname)){
                int skfd = socket(AF_INET, SOCK_DGRAM, 0);
                *addr = 0;
                *bcast = 0xffffffff;
@@ -119,118 +170,159 @@ int ifconfig_getaddr (
        return ret;
 }
 
+static void
+readIP(char const *str, struct vc_ip_mask_pair *ip, uint32_t *bcast)
+{
+  if (ifconfig_getaddr(str, &ip->ip, &ip->mask, bcast)==-1) {
+    char               *pt;
+    char               tmpopt[strlen(str)+1];
+    struct hostent     *h;
+
+    strcpy(tmpopt,str);
+    pt = strchr(tmpopt,'/');
+    
+    if (pt==0)
+      ip->mask = ntohl(0xffffff00);
+    else {
+      *pt++ = '\0';
+
+      // Ok, we have a network size, not a netmask
+      if (strchr(pt,'.')==0) {
+       int             sz = atoi(pt);
+       ;
+       for (ip->mask = 0; sz>0; --sz) {
+         ip->mask >>= 1;
+         ip->mask  |= 0x80000000;
+       }
+       ip->mask = ntohl(ip->mask);
+      }
+      else { 
+       struct hostent *h = gethostbyname (pt);
+       if (h==0) {
+         WRITE_MSG(2, "Invalid netmask '");
+         WRITE_STR(2, pt);
+         WRITE_MSG(2, "'\n");
+         exit(wrapper_exit_code);
+       }
+
+       memcpy (&ip->mask, h->h_addr, sizeof(ip->mask));
+      }
+    }
 
+    h = gethostbyname (tmpopt);
+    if (h==0) {
+      WRITE_MSG(2, "Invalid IP number or host name '");
+      WRITE_STR(2, tmpopt);
+      WRITE_MSG(2, "'\n");
+      exit(wrapper_exit_code);
+    }
 
+    memcpy (&ip->ip, h->h_addr,sizeof(ip->ip));
+  }
+}
+
+static void
+readBcast(char const *str, uint32_t *bcast)
+{
+  uint32_t     tmp;
+  if (ifconfig_getaddr(str, &tmp, &tmp, bcast)==-1){
+    struct hostent *h = gethostbyname (str);
+    if (h==0){
+      WRITE_MSG(2, "Invalid broadcast number '");
+      WRITE_STR(2, optarg);
+      WRITE_MSG(2, "'\n");
+      exit(wrapper_exit_code);
+    }
+    memcpy (bcast, h->h_addr,sizeof(*bcast));
+  }
+}
 
 int main (int argc, char *argv[])
 {
-       int ret = -1;
-       int silent = 0;
-       int i;
-       struct vc_ip_mask_pair  ips[16];
-       int nbaddrs = 0;
-       unsigned long bcast = 0xffffffff;
-       for (i=1; i<argc; i++){
-               const char *arg = argv[i];
-               const char *opt = argv[i+1];
-               if (strcmp(arg,"--ip")==0){
-                       unsigned long addr,mask;
-                       if (nbaddrs == 16){
-                               fprintf (stderr,"Too many IP numbers, max 16, ignored\n");
-
-                       }else if (ifconfig_getaddr(opt,&addr,&mask,&bcast)==-1){
-                               unsigned long mask = 0x00ffffff;
-                               const char *pt = strchr(opt,'/');
-                               char tmpopt[strlen(opt)+1];
-                               struct hostent *h;
-                               
-                               if (pt != NULL){
-                                       strcpy (tmpopt,opt);
-                                       tmpopt[pt-opt] = '\0';
-                                       opt = tmpopt;
-                                       pt++;
-                                       if (strchr(pt,'.')==NULL){
-                                               // Ok, we have a network size, not a netmask
-                                               int size = atoi(pt);
-                                               int i;
-                                               mask = 0;
-                                               for (i=0; i<size; i++){
-                                                       mask = mask >> 1;
-                                                       mask |= 0x80000000;
-                                               }
-                                               mask = ntohl(mask);
-                                       }else{
-                                               struct hostent *h = gethostbyname (pt);
-                                               if (h != NULL){
-                                                       memcpy (&mask,h->h_addr,sizeof(mask));
-                                               }else{
-                                                       fprintf (stderr,"Invalid netmask: %s\n",pt);
-                                                       usage();
-                                               }
-                                       }
-                                                       
-                               }
-
-                               h = gethostbyname (opt);
-                               if (h == NULL){
-                                       fprintf (stderr,"Invalid IP number or host name: %s\n",opt);
-                                       usage();
-                               }else{
-                                       memcpy (&addr,h->h_addr,sizeof(addr));
-                                       ips[nbaddrs].ip   = addr;
-                                       ips[nbaddrs].mask = mask;
-                                       ++nbaddrs;
-                               }
-                       }else{
-                             ips[nbaddrs].ip   = addr;
-                             ips[nbaddrs].mask = mask;
-                             ++nbaddrs;
-                       }
-                       i++;
-               }else if (strcmp(arg,"--bcast")==0){
-                       unsigned long tmp;
-                       if (ifconfig_getaddr(opt,&tmp,&tmp,&bcast)==-1){
-                               struct hostent *h = gethostbyname (opt);
-                               if (h == NULL){
-                                       fprintf (stderr,"Invalid broadcast number: %s\n",opt);
-                                       usage();
-                               }else{
-                                       memcpy (&bcast,h->h_addr,sizeof(bcast));
-                               }
-                       }
-                       i++;
-               }else if (strcmp(arg,"--silent")==0){
-                       silent = 1;
-               }else{
-                       break;
-               }
-       }
-       if (i == argc){
-               usage();
-       }else if (argv[i][0] == '-'){
-               usage();
-       }else{
-             if (vc_set_ipv4root(bcast,nbaddrs,ips)==0){
-                       if (!silent){
-                               int i;
-                               printf ("ipv4root is now");
-                               for (i=0; i<nbaddrs; i++){
-                                       unsigned long hostaddr = ntohl(ips[i].ip);
-                                       printf (" %ld.%ld.%ld.%ld"
-                                               ,hostaddr>>24
-                                               ,(hostaddr>>16)&0xff
-                                               ,(hostaddr>>8)&0xff
-                                               ,hostaddr &0xff);
-                               }
-                               printf ("\n");
-                       }
-                       execvp (argv[i],argv+i);
-                       fprintf (stderr,"Can't exec %s (%s)\n",argv[i],strerror(errno));
-               }else{
-                       fprintf (stderr,"Can't set the ipv4 root (%s)\n",strerror(errno));
-               }
+  size_t const                 nb_ipv4root = vc_get_nb_ipv4root();
+  bool                         is_silent   = false;
+  struct vc_ip_mask_pair       ips[nb_ipv4root];
+  size_t                       nbaddrs = 0;
+  uint32_t                     bcast   = 0xffffffff;
+  
+  while (1) {
+    int                c = getopt_long(argc, argv, "+", CMDLINE_OPTIONS, 0);
+    if (c==-1) break;
+
+    switch (c) {
+      case CMD_HELP            :  showHelp(1, argv[0], 0);
+      case CMD_VERSION         :  showVersion();
+      case CMD_SILENT          :  is_silent = true; break;
+      case CMD_BCAST           :  readBcast(optarg, &bcast); break;
+      case CMD_IP              :
+       if (nbaddrs>=nb_ipv4root) {
+         WRITE_MSG(2, "Too many IP numbers, max 16\n");
+         exit(wrapper_exit_code);
        }
-       return ret;
+       readIP(optarg, ips+nbaddrs, &bcast);
+       ++nbaddrs;
+       break;
+      default          :
+       WRITE_MSG(2, "Try '");
+       WRITE_STR(2, argv[0]);
+       WRITE_MSG(2, " --help\" for more information.\n");
+       exit(wrapper_exit_code);
+       break;
+    }
+  }
+
+  if (optind==argc) {
+    WRITE_MSG(2, "No command given; try '--help' for more information\n");
+    exit(wrapper_exit_code);
+  }
+  
+
+  if (vc_set_ipv4root(bcast,nbaddrs,ips)!=0) {
+    perror("chbind: vc_set_ipv4root()");
+    exit(wrapper_exit_code);
+  }
+
+  if (!is_silent) {
+    size_t             i;
+    
+    WRITE_MSG(1, "ipv4root is now");
+    for (i=0; i<nbaddrs; ++i) {
+      WRITE_MSG(1, " ");
+      WRITE_STR(1, inet_ntoa(*reinterpret_cast(struct in_addr *)(&ips[i].ip)));
+    }
+    WRITE_MSG(1, "\n");
+  }
+
+  Eexecvp (argv[optind],argv+optind);
+  return EXIT_SUCCESS;
 }
 
+#ifdef ENSC_TESTSUITE
+#include <assert.h>
+
+void test()
+{
+  struct vc_ip_mask_pair       ip;
+  uint32_t                     bcast;
+
+  bcast = 0;
+  readIP("1.2.3.4", &ip, &bcast);
+  assert(ip.ip==ntohl(0x01020304) && ip.mask==ntohl(0xffffff00) && bcast==0);
 
+  readIP("1.2.3.4/8", &ip, &bcast);
+  assert(ip.ip==ntohl(0x01020304) && ip.mask==ntohl(0xff000000) && bcast==0);
+
+  readIP("1.2.3.4/255.255.0.0", &ip, &bcast);
+  assert(ip.ip==ntohl(0x01020304) && ip.mask==ntohl(0xffff0000) && bcast==0);
+
+  readIP("localhost", &ip, &bcast);
+  assert(ip.ip==ntohl(0x7f000001) && ip.mask==ntohl(0xffffff00) && bcast==0);
+
+#if 0
+  if (ifconfig_getaddr("lo", &tmp, &tmp, &tmp)!=-1) {
+    readIP("lo", &ip, &bcast);
+    assert(ip.ip==ntohl(0x7f000001) && ip.mask==ntohl(0xff000000) && bcast==ntohl(0x7fffffff));
+  }
+#endif
+}
+#endif
index 236e0cc..fe66a22 100644 (file)
@@ -1,6 +1,6 @@
-// $Id: chcontext.c,v 1.1.4.3 2004/01/07 16:24:01 ensc Exp $
+// $Id: chcontext.c,v 1.24 2005/03/22 15:05:24 ensc Exp $
 
-// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+// Copyright (C) 2003,2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 // based on chcontext.cc by Jacques Gelinas
 //  
 // This program is free software; you can redistribute it and/or modify
 #ifdef HAVE_CONFIG_H
 #  include <config.h>
 #endif
-#include "compat.h"
+
+#include "util.h"
+#include "vserver.h"
+#include "internal.h"
+#include "lib_internal/jail.h"
 
 #include <stdio.h>
 #include <unistd.h>
 #include <string.h>
 #include <stdlib.h>
 #include <errno.h>
+#include <getopt.h>
+#include <assert.h>
+#include <fcntl.h>
+#include <libgen.h>
+#include <signal.h>
 
-#include "linuxcaps.h"
-#include "vserver.h"
+#define ENSC_WRAPPERS_PREFIX   "chcontext: "
+#define ENSC_WRAPPERS_VSERVER  1
+#define ENSC_WRAPPERS_UNISTD   1
+#define ENSC_WRAPPERS_FCNTL    1
+#include <wrappers.h>
 
-#ifndef CAP_QUOTACTL
-#  define CAP_QUOTACTL 29
-#endif
+#define CMD_HELP       0x1000
+#define CMD_VERSION    0x1001
+#define CMD_CAP                0x4000
+#define CMD_CTX                0x4001
+#define CMD_DISCONNECT 0x4002
+#define CMD_DOMAINNAME 0x4003
+#define CMD_FLAG       0x4004
+#define CMD_HOSTNAME   0x4005
+#define CMD_SECURE     0x4006
+#define CMD_SILENT     0x4007
+
+int wrapper_exit_code  = 255;
+
+struct option const
+CMDLINE_OPTIONS[] = {
+  { "help",     no_argument,  0, CMD_HELP },
+  { "version",  no_argument,  0, CMD_VERSION },
+  { "cap",        required_argument,  0, CMD_CAP },
+  { "ctx",        required_argument,  0, CMD_CTX },
+  { "xid",        required_argument,  0, CMD_CTX },
+  { "disconnect", no_argument,        0, CMD_DISCONNECT },
+  { "domainname", required_argument,  0, CMD_DOMAINNAME },
+  { "flag",       required_argument,  0, CMD_FLAG },
+  { "hostname",   required_argument,  0, CMD_HOSTNAME },
+  { "secure",     no_argument,        0, CMD_SECURE },
+  { "silent",     no_argument,        0, CMD_SILENT },
+  { 0,0,0,0 }
+};
+
+struct Arguments {
+    size_t             nbctx;
+    xid_t              ctxs[16];
+    bool               do_disconnect;
+    bool               do_silent;
+    unsigned int       flags;
+    uint32_t           remove_caps;
+    uint32_t           add_caps;
+    char const *       hostname;
+    char const *       domainname;
+};
+
+static struct Arguments const *                global_args = 0;
+
+static void
+showHelp(int fd, char const *cmd, int res)
+{
+  VSERVER_DECLARE_CMD(cmd);
+  
+  WRITE_MSG(fd, "Usage: ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " [--cap [!]<cap_name>] [--secure] [--xid <num>] [--disconnect]\n"
+           "       [--domainname <name>] [--hostname <name>] [--flag <flags>+]\n"
+           "       [--silent] [--] command arguments ...\n"
+           "\n"
+           "chcontext allocate a new security context and executes\n"
+           "a command in that context.\n"
+           "By default, a new/unused context is allocated\n"
+           "\n"
+           "--cap CAP_NAME\n"
+           "    Add a capability from the command. This option may be\n"
+           "    repeated several time.\n"
+           "    See /usr/include/linux/capability.h\n"
+           "    In general, this option is used with the --secure option\n"
+           "    --secure removes most critical capabilities and --cap\n"
+           "    adds specific ones.\n"
+           "\n"
+
+           "--cap !CAP_NAME\n"
+           "    Remove a capability from the command. This option may be\n"
+           "    repeated several time.\n"
+           "    See /usr/include/linux/capability.h\n"
+           "\n"
+           "--xid num\n"
+           "    Select the context. On root in context 0 is allowed to\n"
+           "    select a specific context.\n"
+           "    Context number 1 is special. It can see all processes\n"
+           "    in any contexts, but can't kill them though.\n"
+           "    Option --xid may be repeated several times to specify up to 16 contexts.\n"
+
+           "--disconnect\n"
+           "    Start the command in background and make the process\n"
+           "    a child of process 1.\n"
+
+           "--domainname new_domainname\n"
+           "    Set the domainname (NIS) in the new security context.\n"
+           "    Use \"none\" to unset the domain name.\n"
+
+           "--flag\n"
+           "    Set one flag in the new or current security context. The following\n"
+           "    flags are supported. The option may be used several time.\n"
+           "\n"
+           "        fakeinit: The new process will believe it is process number 1.\n"
+           "                  Useful to run a real /sbin/init in a vserver.\n"
+           "        lock:     The new process is trapped and can't use chcontext anymore.\n"
+           "        sched:    The new process and its children will share a common \n"
+           "                  execution priority.\n"
+           "        nproc:    Limit the number of process in the vserver according to\n"
+           "                  ulimit setting. Normally, ulimit is a per user thing.\n"
+           "                  With this flag, it becomes a per vserver thing.\n"
+           "        private:  No one can join this security context once created.\n"
+           "        ulimit:   Apply the current ulimit to the whole context\n"
+
+           "--hostname new_hostname\n"
+           "    Set the hostname in the new security context\n"
+           "    This is need because if you create a less privileged\n"
+           "    security context, it may be unable to change its hostname\n"
+
+           "--secure\n"
+           "    Remove all the capabilities to make a virtual server trustable\n"
+
+           "--silent\n"
+           "    Do not print the allocated context number.\n"
+           "\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+
+  exit(res);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "chcontext-compat " VERSION " -- allocates/enters a security context\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2003,2004 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+static inline void
+setCap(char const *str, uint32_t *add_caps, uint32_t *remove_caps)
+{
+  uint32_t     *cap;
+  int          bit;
+  
+  if (str[0] != '!')
+    cap = add_caps;
+  else {
+    cap = remove_caps;
+    str++;
+  }
+       
+  bit = vc_text2cap(str);
+       
+  if (bit!=-1) *cap |= (1<<bit);
+  else {
+    WRITE_MSG(2, "Unknown capability '");
+    WRITE_STR(2, str);
+    WRITE_MSG(2, "'\n");
+    exit(wrapper_exit_code);
+  }
+}
+
+static inline void
+setFlags(char const *str, uint32_t *flags)
+{
+  struct vc_err_listparser     err;
+  
+  *flags = vc_list2cflag_compat(str, 0, &err);
 
-static void usage()
+  if (err.ptr!=0) {
+    WRITE_MSG(2, "Unknown flag '");
+    Vwrite(2, err.ptr, err.len);
+    WRITE_MSG(2, "'\n");
+    exit(wrapper_exit_code);
+  }
+}
+
+static inline ALWAYSINLINE void
+setHostname(char const *name)
+{
+  if (name == NULL) return;
+  
+  if (sethostname(name, strlen(name))==-1) {
+    perror("chcontext: sethostname()");
+    exit(255);
+  }
+  if (!global_args->do_silent) {
+    WRITE_MSG(1, "Host name is now ");
+    WRITE_STR(1, name);
+    WRITE_MSG(1, "\n");
+  }
+}
+
+static inline ALWAYSINLINE void
+setDomainname(char const *name)
+{
+  if (name == NULL) return;
+  
+  if (setdomainname(name, strlen(name))==-1) {
+    perror("chcontext: setdomainname()");
+    exit(255);
+  }
+  if (!global_args->do_silent) {
+    WRITE_MSG(1, "Domain name is now ");
+    WRITE_STR(1, name);
+    WRITE_MSG(1, "\n");
+  }
+}
+
+static inline ALWAYSINLINE void
+tellContext(xid_t ctx)
 {
-       fprintf (stderr,"chcontext version %s\n",VERSION);
-       fprintf (stderr
-               ,"chcontext [ options ] command arguments ...\n"
-                "\n"
-                "chcontext allocate a new security context and executes\n"
-                "a command in that context.\n"
-                "By default, a new/unused context is allocated\n"
-                "\n"
-
-                "--cap CAP_NAME\n"
-                "\tAdd a capability from the command. This option may be\n"
-                "\trepeated several time.\n"
-                "\tSee /usr/include/linux/capability.h\n"
-                "\tIn general, this option is used with the --secure option\n"
-                "\t--secure removes most critical capabilities and --cap\n"
-                "\tadds specific ones.\n"
-                "\n"
-
-                "--cap !CAP_NAME\n"
-                "\tRemove a capability from the command. This option may be\n"
-                "\trepeated several time.\n"
-                "\tSee /usr/include/linux/capability.h\n"
-                "\n"
-                "--ctx num\n"
-                "\tSelect the context. On root in context 0 is allowed to\n"
-                "\tselect a specific context.\n"
-                "\tContext number 1 is special. It can see all processes\n"
-                "\tin any contexts, but can't kill them though.\n"
-                "\tOption --ctx may be repeated several times to specify up to 16 contexts.\n"
-
-                "--disconnect\n"
-                "\tStart the command in background and make the process\n"
-                "\ta child of process 1.\n"
-
-                "--domainname new_domainname\n"
-                "\tSet the domainname (NIS) in the new security context.\n"
-                "\tUse \"none\" to unset the domain name.\n"
-
-                "--flag\n"
-                "\tSet one flag in the new or current security context. The following\n"
-                "\tflags are supported. The option may be used several time.\n"
-                "\n"
-                "\tfakeinit: The new process will believe it is process number 1.\n"
-                "            Useful to run a real /sbin/init in a vserver.\n"
-                "\tlock: The new process is trapped and can't use chcontext anymore.\n"
-                "\tsched: The new process and its children will share a common \n"
-                "         execution priority.\n"
-                "\tnproc: Limit the number of process in the vserver according to\n"
-                "         ulimit setting. Normally, ulimit is a per user thing.\n"
-                "         With this flag, it becomes a per vserver thing.\n"
-                "\tprivate: No one can join this security context once created.\n"
-                "\tulimit: Apply the current ulimit to the whole context\n"
-
-                "--hostname new_hostname\n"
-                "\tSet the hostname in the new security context\n"
-                "\tThis is need because if you create a less privileged\n"
-                "\tsecurity context, it may be unable to change its hostname\n"
-
-                "--secure\n"
-                "\tRemove all the capabilities to make a virtual server trustable\n"
-
-                "--silent\n"
-                "\tDo not print the allocated context number.\n"
-                "\n"
-                "Information about context is found in /proc/self/status\n");
+  char         buf[sizeof(xid_t)*3+2];
+  size_t       l;
+
+  if (global_args->do_silent) return;
+
+  l = utilvserver_fmt_long(buf,ctx);
+
+  WRITE_MSG(1, "New security context is ");
+  Vwrite(1, buf, l);
+  WRITE_MSG(1, "\n");
 }
 
+#include "context-sync.hc"
 
 int main (int argc, char *argv[])
 {
-       int ret = -1;
-       int i;
-       int nbctx = 0;
-       int ctxs[16];
-       int disconnect = 0;
-       int silent = 0;
-       int flags = 0;
-       unsigned remove_cap = 0;
-       unsigned add_cap = 0;
-       unsigned long secure = (1<<CAP_LINUX_IMMUTABLE)
-               |(1<<CAP_NET_BROADCAST)
-               |(1<<CAP_NET_ADMIN)
-               |(1<<CAP_NET_RAW)
-               |(1<<CAP_IPC_LOCK)
-               |(1<<CAP_IPC_OWNER)
-               |(1<<CAP_SYS_MODULE)
-               |(1<<CAP_SYS_RAWIO)
-               |(1<<CAP_SYS_PACCT)
-               |(1<<CAP_SYS_ADMIN)
-               |(1<<CAP_SYS_BOOT)
-               |(1<<CAP_SYS_NICE)
-               |(1<<CAP_SYS_RESOURCE)
-               |(1<<CAP_SYS_TIME)
-               |(1<<CAP_MKNOD)
-               |(1<<CAP_QUOTACTL);
-       const char *hostname=NULL, *domainname=NULL;
-
-       for (i=1; i<argc; i++){
-               const char *arg = argv[i];
-               const char *opt = argv[i+1];
-               if (strcmp(arg,"--ctx")==0){
-                       if (nbctx >= 16){
-                               fprintf (stderr,"Too many context, max 16, ignored.\n");
-                       }else{
-                               ctxs[nbctx++] = atoi(opt);
-                       }
-                       i++;
-               }else if (strcmp(arg,"--disconnect")==0){
-                       disconnect = 1;
-               }else if (strcmp(arg,"--silent")==0){
-                       silent = 1;
-               }else if (strcmp(arg,"--flag")==0){
-                       if (strcmp(opt,"lock")==0){
-                               flags |= 1;
-                       }else if (strcmp(opt,"sched")==0){
-                               flags |= 2;
-                       }else if (strcmp(opt,"nproc")==0){
-                               flags |= 4;
-                       }else if (strcmp(opt,"private")==0){
-                               flags |= 8;
-                       }else if (strcmp(opt,"fakeinit")==0){
-                               flags |= 16;
-                       }else if (strcmp(opt,"hideinfo")==0){
-                               flags |= 32;
-                       }else if (strcmp(opt,"ulimit")==0){
-                               flags |= 64;
-                       }else{
-                               fprintf (stderr,"Unknown flag %s\n",opt);
-                       }
-                       i++;
-               }else if (strcmp(arg,"--cap")==0){
-                       static struct {
-                               const char *option;
-                               int bit;
-                       }tbcap[]={
-                               // The following capabilities are normally available
-                               // to vservers administrator, but are place for
-                               // completeness
-                               {"CAP_CHOWN",CAP_CHOWN},
-                               {"CAP_DAC_OVERRIDE",CAP_DAC_OVERRIDE},
-                               {"CAP_DAC_READ_SEARCH",CAP_DAC_READ_SEARCH},
-                               {"CAP_FOWNER",CAP_FOWNER},
-                               {"CAP_FSETID",CAP_FSETID},
-                               {"CAP_KILL",CAP_KILL},
-                               {"CAP_SETGID",CAP_SETGID},
-                               {"CAP_SETUID",CAP_SETUID},
-                               {"CAP_SETPCAP",CAP_SETPCAP},
-                               {"CAP_SYS_TTY_CONFIG",CAP_SYS_TTY_CONFIG},
-                               {"CAP_LEASE",CAP_LEASE},
-                               {"CAP_SYS_CHROOT",CAP_SYS_CHROOT},
-
-                               // Those capabilities are not normally available
-                               // to vservers because they are not needed and
-                               // may represent a security risk
-                               {"CAP_LINUX_IMMUTABLE",CAP_LINUX_IMMUTABLE},
-                               {"CAP_NET_BIND_SERVICE",CAP_NET_BIND_SERVICE},
-                               {"CAP_NET_BROADCAST",CAP_NET_BROADCAST},
-                               {"CAP_NET_ADMIN",       CAP_NET_ADMIN},
-                               {"CAP_NET_RAW", CAP_NET_RAW},
-                               {"CAP_IPC_LOCK",        CAP_IPC_LOCK},
-                               {"CAP_IPC_OWNER",       CAP_IPC_OWNER},
-                               {"CAP_SYS_MODULE",CAP_SYS_MODULE},
-                               {"CAP_SYS_RAWIO",       CAP_SYS_RAWIO},
-                               {"CAP_SYS_PACCT",       CAP_SYS_PACCT},
-                               {"CAP_SYS_ADMIN",       CAP_SYS_ADMIN},
-                               {"CAP_SYS_BOOT",        CAP_SYS_BOOT},
-                               {"CAP_SYS_NICE",        CAP_SYS_NICE},
-                               {"CAP_SYS_RESOURCE",CAP_SYS_RESOURCE},
-                               {"CAP_SYS_TIME",        CAP_SYS_TIME},
-                               {"CAP_MKNOD",           CAP_MKNOD},
-                               {"CAP_QUOTACTL",        CAP_QUOTACTL},
-                               {NULL,0}
-                       };
-                       int j;
-                       unsigned *cap = &add_cap;
-                       if (opt[0] == '!'){
-                               cap = &remove_cap;
-                               opt++;
-                       }
-                       for (j=0; tbcap[j].option != NULL; j++){
-                               if (strcasecmp(tbcap[j].option,opt)==0){
-                                       *cap |= (1<<tbcap[j].bit);
-                                       break;
-                               }
-                       }
-                       if (tbcap[j].option == NULL){
-                               fprintf (stderr,"Unknown capability %s\n",opt);
-                       }
-                       i++;
-               }else if (strcmp(arg,"--secure")==0){
-                       remove_cap |= secure;
-               }else if (strcmp(arg,"--hostname")==0){
-                       hostname = opt;
-                       i++;
-               }else if (strcmp(arg,"--domainname")==0){
-                       if (opt != NULL && strcmp(opt,"none")==0) opt = "";
-                       domainname = opt;
-                       i++;
-               }else{
-                       break;
-               }
-       }
-       if (i == argc){
-               usage();
-       }else if (argv[i][0] == '-'){
-               usage();
-       }else{
-               /*
-                       We must fork early because fakeinit set the current
-                       process as the special init process
-               */
-               if (disconnect == 0 || fork()==0){
-                       int newctx;
-                       int xflags = flags & 16;
-
-                       if (nbctx == 0) ctxs[nbctx++] = -1;
-                       newctx = vc_new_s_context(ctxs[0],0,flags&~16);
-                       if (newctx != -1){
-                               if (hostname != NULL){
-                                       if (sethostname (hostname,strlen(hostname))==-1){
-                                               fprintf (stderr,"Can't set the host name (%s)\n"
-                                                       ,strerror(errno));
-                                       }else if (!silent){
-                                               printf ("Host name is now %s\n",hostname);
-                                       }
-                               }
-                               if (domainname != NULL){
-                                       setdomainname (domainname,strlen(domainname));
-                                       if (!silent){
-                                               printf ("Domain name is now %s\n",domainname);
-                                       }
-                               }
-                               remove_cap &= (~add_cap);
-                               if (remove_cap!=0 || xflags!=0)
-                                       vc_new_s_context (-2,remove_cap,xflags);
-                               if (!silent){
-                                       printf ("New security context is %d\n"
-                                               ,ctxs[0] == -1 ? newctx : ctxs[0]);
-                               }
-                               execvp (argv[i],argv+i);
-                               fprintf (stderr,"Can't exec %s (%s)\n",argv[i]
-                                       ,strerror(errno));
-                       }else{
-                               perror ("Can't set the new security context\n");
-                       }
-                       if (disconnect != 0) _exit(0);
-               }
+  struct Arguments args = {
+    .nbctx         = 0,
+    .do_disconnect = false,
+    .do_silent     = false,
+    .flags         = 0,
+    .remove_caps   = 0,
+    .add_caps      = 0,
+    .hostname      = 0,
+    .domainname    = 0
+  };
+  xid_t                newctx;
+  int          xflags;
+  int          p[2][2];
+  pid_t                pid;
+  
+  global_args = &args;
+  signal(SIGCHLD, SIG_DFL);
+
+  while (1) {
+    int                c = getopt_long(argc, argv, "+", CMDLINE_OPTIONS, 0);
+    if (c==-1) break;
+
+    switch (c) {
+      case CMD_HELP            :  showHelp(1, argv[0], 0);
+      case CMD_VERSION         :  showVersion();
+      case CMD_DISCONNECT      :  args.do_disconnect = true;   break;
+      case CMD_SILENT          :  args.do_silent     = true;   break;
+      case CMD_DOMAINNAME      :  args.domainname    = optarg; break;
+      case CMD_HOSTNAME                :  args.hostname      = optarg; break;
+       
+      case CMD_CAP             :
+       setCap(optarg, &args.add_caps, &args.remove_caps);
+       break;
+      case CMD_SECURE          :
+       args.remove_caps |= vc_get_insecurebcaps();
+       break;
+      case CMD_FLAG            :
+       setFlags(optarg, &args.flags);
+       break;
+      case CMD_CTX             :
+       if (args.nbctx>0)
+         WRITE_MSG(2, "WARNING: More than one ctx not supported by this version\n");
+       if (args.nbctx>=DIM_OF(args.ctxs)) {
+         WRITE_MSG(2, "Too many contexts given\n");
+         exit(255);
        }
-       return ret;
+       args.ctxs[args.nbctx++] = Evc_xidopt2xid(optarg, true);
+       break;
+
+         
+      default          :
+       WRITE_MSG(2, "Try '");
+       WRITE_STR(2, argv[0]);
+       WRITE_MSG(2, " --help\" for more information.\n");
+       return 255;
+       break;
+    }
+  }
+
+  if (optind>=argc) {
+    WRITE_MSG(2, "No command given; use '--help' for more information.\n");
+    exit(255);
+  }
+  
+  if (args.domainname && strcmp(args.domainname, "none")==0)
+    args.domainname = "";
+    
+  if (args.nbctx == 0)
+    args.ctxs[args.nbctx++] = VC_DYNAMIC_XID;
+    
+  xflags      = args.flags & S_CTX_INFO_INIT;
+  args.flags &= ~S_CTX_INFO_INIT;
+
+  pid = initSync(p, args.do_disconnect);
+  if (pid==0) {
+    doSyncStage0(p, args.do_disconnect);
+    
+    newctx            = Evc_new_s_context(args.ctxs[0],0,args.flags);
+    args.remove_caps &= (~args.add_caps);
+    setHostname(args.hostname);
+    setDomainname(args.domainname);
+
+    if (args.remove_caps!=0 || xflags!=0)
+      Evc_new_s_context (VC_SAMECTX,args.remove_caps,xflags);
+    tellContext(args.ctxs[0]==VC_DYNAMIC_XID ? newctx : args.ctxs[0]);
+
+    doSyncStage1(p, args.do_disconnect);
+    execvp (argv[optind],argv+optind);
+    doSyncStage2(p, args.do_disconnect);
+
+    PERROR_Q("chcontext: execvp", argv[optind]);
+    exit(255);
+  }
+
+  waitOnSync(pid, p, args.ctxs[0]!=VC_DYNAMIC_XID);
+  return EXIT_SUCCESS;
 }
 
+#ifdef ENSC_TESTSUITE
+#define FLAG_TEST(STR,EXP) \
+  {                       \
+    uint32_t   flag=0;    \
+    setFlags(STR, &flag);  \
+    assert(flag==(EXP));   \
+  }
+
+#define CAP_TEST(STR,EXP_ADD,EXP_DEL)          \
+  {                                            \
+    uint32_t   add=0,del=0;                    \
+    setCap(STR, &add, &del);                   \
+    assert(add==(EXP_ADD));                    \
+    assert(del==(EXP_DEL));                    \
+  }
+
+void
+test()
+{
+  FLAG_TEST("lock",       1);
+  FLAG_TEST("lock,sched", 3);
+
+  CAP_TEST("CHOWN",      1, 0);
+  CAP_TEST("CAP_CHOWN",  1, 0);
+  CAP_TEST("!CHOWN",     0, 1);
+  CAP_TEST("!CAP_CHOWN", 0, 1);
+}
+#endif
diff --git a/src/check-unixfile.c b/src/check-unixfile.c
new file mode 100644 (file)
index 0000000..a8d94e9
--- /dev/null
@@ -0,0 +1,115 @@
+// $Id: check-unixfile.c,v 1.1 2005/01/27 19:13:04 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "util.h"
+
+#include <fcntl.h>
+#include <errno.h>
+#include <unistd.h>
+#include <sys/mman.h>
+#include <limits.h>
+
+#define ENSC_WRAPPERS_PREFIX   "check-unixfile: "
+#define ENSC_WRAPPERS_FCNTL    1
+#define ENSC_WRAPPERS_UNISTD   1
+#include <wrappers.h>
+
+int            wrapper_exit_code = 255;
+
+static void
+showHelp(int fd, char const *cmd)
+{
+  WRITE_MSG(fd, "Usage:  ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " [--] <file>+\n\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+  exit(0);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "check-unixfile " VERSION " -- execute some basic fileformat checks\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2005 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+static bool
+checkFile(char const *fname)
+{
+  int          fd   = Eopen(fname, O_RDONLY, 0);
+  off_t                l    = Elseek(fd, 0, SEEK_END);
+  char const * data = 0;
+  bool         res  = true;
+
+  if (l>100*1024*1024) {
+    WRITE_MSG(2, "WARNING: '");
+    WRITE_STR(2, fname);
+    WRITE_STR(2, "' is too large for a vserver configuration file\n");
+    res = false;
+  }
+  else if (l>0) {
+    data = mmap(0, l, PROT_READ, MAP_PRIVATE, fd, 0);
+    if (data==0) {
+      perror("mmap()");
+      exit(wrapper_exit_code);
+    }
+
+    if (data[l-1]!='\n') {
+      WRITE_MSG(2, "WARNING: '");
+      WRITE_STR(2, fname);
+      WRITE_MSG(2, "' does not end on newline\n");
+      res = false;
+    }
+    
+    munmap(const_cast(char *)(data), l);
+  }
+
+  Eclose(fd);
+
+  return res;
+}
+
+int main(int argc, char *argv[])
+{
+  int          idx    = 1;
+  bool         ok     = true;
+  bool         passed = false;
+
+  if (argc>=2) {
+    if (strcmp(argv[1], "--help")   ==0) showHelp(1, argv[0]);
+    if (strcmp(argv[1], "--version")==0) showVersion();
+    if (strcmp(argv[1], "--")       ==0) ++idx;
+  }
+
+  for (; idx<argc; ++idx)
+    if (checkFile(argv[idx])) passed = true;
+    else                      ok     = false;
+
+  if (ok)          return 0;
+  else if (passed) return 2;
+  else             return 1;
+}
diff --git a/src/chroot-sh.c b/src/chroot-sh.c
new file mode 100644 (file)
index 0000000..a1d4bb9
--- /dev/null
@@ -0,0 +1,219 @@
+// $Id: chroot-sh.c,v 1.2 2005/07/03 17:40:15 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <lib_internal/util.h>
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+#define ENSC_WRAPPERS_PREFIX   "chroot-sh"
+#define ENSC_WRAPPERS_UNISTD   1
+#define ENSC_WRAPPERS_IO       1
+#define ENSC_WRAPPERS_FCNTL    1
+#include <ensc_wrappers/wrappers.h>
+
+int    wrapper_exit_code = EXIT_FAILURE;
+
+static void
+showFD(int fd_in, int fd_out)
+{
+  for (;;) {
+    char               buf[4096];
+    char const *       ptr=buf;
+    ssize_t            len;
+
+    len = Eread(fd_in, buf, sizeof(buf));
+    if (len<=0) break;
+
+    EwriteAll(fd_out, ptr, len);
+  }
+}
+
+static int
+redirectFileInternal(int argc, char *argv[],
+                    int mode, bool is_input,
+                    char const *operation)
+{
+  int          fd;
+
+  if (argc<2) {
+    WRITE_MSG(2, "Not enough parameters for '");
+    WRITE_STR(2, operation);
+    WRITE_MSG(2, "' operation; use '--help' for more information\n");
+    return wrapper_exit_code;
+  }
+
+  fd = EopenD(argv[1], mode, 0644);
+  if (is_input) showFD(fd,  1);
+  else          showFD( 0, fd);
+  Eclose(fd);
+
+  return EXIT_SUCCESS;
+}
+
+static mode_t
+testInternal(int argc, char *argv[], char const *operation)
+{
+  struct stat          st;
+    
+  if (argc<2) {
+    WRITE_MSG(2, "Not enough parameters for '");
+    WRITE_STR(2, operation);
+    WRITE_MSG(2, "' operation; use '--help' for more information\n");
+    return wrapper_exit_code;
+  }
+
+  if (stat(argv[1], &st)==-1) return 0;
+  else                        return st.st_mode;
+}
+
+static int
+execCat(int argc, char *argv[])
+{
+  return redirectFileInternal(argc, argv,
+                             O_RDONLY|O_NOCTTY, true,
+                             "cat");
+}
+
+static int
+execAppend(int argc, char *argv[])
+{
+  return redirectFileInternal(argc, argv,
+                             O_WRONLY|O_CREAT|O_APPEND, false,
+                             "append");
+}
+
+static int
+execTruncate(int argc, char *argv[])
+{
+  return redirectFileInternal(argc, argv,
+                             O_WRONLY|O_CREAT|O_TRUNC, false,
+                             "truncate");
+}
+
+static int
+execRm(int argc, char *argv[])
+{
+  int          i   = 1;
+  int          res = EXIT_SUCCESS;
+  
+  if (argc<2) {
+    WRITE_MSG(2, "No files specified for 'rm' operation; try '--help' for more information\n");
+    return wrapper_exit_code;
+  }
+
+  for (;i<argc; ++i) {
+    if (unlink(argv[i])==-1) {
+      PERROR_Q(ENSC_WRAPPERS_PREFIX "unlink", argv[i]);
+      res = EXIT_FAILURE;
+    }
+  }
+
+  return res;
+}
+
+static int
+execTestFile(int argc, char *argv[])
+{
+  int          res = testInternal(argc, argv, "testfile");
+  
+  return res!=-1 && S_ISREG(res) ? EXIT_SUCCESS : EXIT_FAILURE;
+}
+
+
+static struct Command {
+    char const         *cmd;
+    int                        (*handler)(int argc, char *argv[]);
+} const                COMMANDS[] = {
+  { "cat",      execCat },
+  { "append",   execAppend },
+  { "truncate", execTruncate },
+  { "testfile", execTestFile },
+  { "rm",       execRm },
+  { 0,0 }
+};
+
+static void
+showHelp()
+{
+  WRITE_MSG(1,
+           "Usage: chroot-sh "
+           " [--] <cmd> <args>*\n\n"
+           "This program chroots into the current directory and executes the specified\n"
+           "commands there. This means that all used paths are relative to the current\n"
+           "directory, and symlinks can point to files under the current path only.\n"
+           "\n"
+           "The supported commands are:\n"
+           "  cat <file>      ...  gives out <file> to stdout\n"
+           "  append <file>   ...  appends stdin to <file> which is created when needed\n"
+           "  truncate <file> ...  clear <file> and fill it with stdin; the <file> is\n"
+           "                       created when needed\n"
+           "  rm <file>+      ...  unlink the given files\n\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+  exit(0);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "chroot-sh " VERSION " -- execute commands within a chroot\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2005 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+
+int main(int argc, char *argv[])
+{
+  struct Command const *cmd;
+  int                  idx = 1;
+  
+  if (argc>=2) {
+    if (strcmp(argv[idx], "--help")   ==0) showHelp();
+    if (strcmp(argv[idx], "--version")==0) showVersion();
+    if (strcmp(argv[idx], "--")==0)        ++idx;
+  }
+
+  if (argc<idx+1) {
+    WRITE_MSG(2, "No command specified; try '--help' for more information\n");
+    return wrapper_exit_code;
+  }
+
+  Echroot(".");
+  Echdir("/");
+
+  for (cmd=COMMANDS+0; cmd->cmd!=0; ++cmd) {
+    if (strcmp(cmd->cmd, argv[idx])==0)
+      return cmd->handler(argc-idx, argv+idx);
+  }
+
+  WRITE_MSG(2, "Invalid command '");
+  WRITE_STR(2, argv[idx]);
+  WRITE_MSG(2, "'; try '--help' for more information\n");
+
+  return wrapper_exit_code;
+}
diff --git a/src/chxid.c b/src/chxid.c
new file mode 100644 (file)
index 0000000..e6e6db9
--- /dev/null
@@ -0,0 +1,98 @@
+// $Id: chxid.c,v 1.10 2004/08/19 14:28:57 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "fstool.h"
+#include "util.h"
+
+#include "lib/vserver.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+struct option const
+CMDLINE_OPTIONS[] = {
+  { "help",     no_argument,  0, CMD_HELP },
+  { "version",  no_argument,  0, CMD_VERSION },
+  { 0,0,0,0 }
+};
+
+char const             CMDLINE_OPTIONS_SHORT[] = "Rc:x";
+
+void
+showHelp(int fd, char const *cmd, int res)
+{
+  WRITE_MSG(fd, "Usage:  ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " -c <ctx|vserver> [-Rx] [--] <file>+\n\n"
+           " Options:\n"
+           "   -R  ...  recurse through directories\n"
+           "   -c  ...  assign the given context/vserver to the file(s)\n"
+           "   -x  ...  do not cross filesystems\n\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+  exit(res);
+}
+
+void
+showVersion()
+{
+  WRITE_MSG(1,
+           "chxid " VERSION " -- assigns a context to a file\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2004 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+bool
+handleFile(char const *name, char const * display_name)
+{
+  int  rc = vc_set_iattr(name, global_args->ctx, 0, VC_IATTR_XID);
+  
+  if (rc==-1) {
+    perror(display_name);
+    return false;
+  }
+
+  return true;
+}
+
+void
+fixupParams(struct Arguments UNUSED *args, int argc)
+{
+  if (optind==argc) {
+    WRITE_MSG(2, "No filename given; use '--help' for more information\n");
+    exit(1);
+  }
+
+  if (args->ctx_str==0) {
+    WRITE_MSG(2, "No context given; use '--help' for more information\n");
+    exit(1);
+  }
+
+  args->ctx            = vc_xidopt2xid(args->ctx_str, true, 0);
+  args->do_display_dir = !args->do_recurse;
+  args->do_display_dot = true;
+}
diff --git a/src/compat-pivot_root.h b/src/compat-pivot_root.h
new file mode 100644 (file)
index 0000000..98b3039
--- /dev/null
@@ -0,0 +1,29 @@
+// $Id: compat-pivot_root.h,v 1.3 2005/05/02 21:44:06 ensc Exp $    --*- c++ -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_SRC_COMPAT_PIVOT_ROOT_H
+#define H_UTIL_VSERVER_SRC_COMPAT_PIVOT_ROOT_H
+
+#include <unistd.h>
+#include <errno.h>
+
+#include "syscall-wrap.h"
+
+inline static _syscall2(int,pivot_root,const char *,new_root,const char *,put_old)
+
+#endif //  H_UTIL_VSERVER_SRC_COMPAT_PIVOT_ROOT_H
diff --git a/src/context-sync.hc b/src/context-sync.hc
new file mode 100644 (file)
index 0000000..6f786d5
--- /dev/null
@@ -0,0 +1,89 @@
+// $Id: context-sync.hc,v 1.5 2005/04/10 01:01:33 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+/// \args p[0]  used for parent -> child sync (child waits till parent is in deathrow)
+/// \args p[1]  used for child -> parent sync (recognize execv() errors)
+static inline ALWAYSINLINE int
+initSync(int p[2][2], bool do_disconnect)
+{
+  if (!do_disconnect) return 0;
+
+  Epipe(p[0]);
+  Epipe(p[1]);
+  fcntl(p[1][1], F_SETFD, FD_CLOEXEC);
+  return Efork();
+}
+
+static inline ALWAYSINLINE void
+doSyncStage0(int p[2][2], bool do_disconnect)
+{
+  char         c;
+  if (!do_disconnect) return;
+
+  Eclose(p[0][1]);
+  Eread (p[0][0], &c, 1);
+  Eclose(p[0][0]);
+}
+
+static inline ALWAYSINLINE void
+doSyncStage1(int p[2][2], bool do_disconnect)
+{
+  int  fd;
+
+  if (!do_disconnect) return;
+  
+  fd = EopenD("/dev/null", O_RDONLY|O_NONBLOCK, 0);
+  (void)setsid();      // ignore error when we are already a session-leader
+  Edup2(fd, 0);
+  Eclose(p[1][0]);
+  if (fd!=0) Eclose(fd);
+  Ewrite(p[1][1], ".", 1);
+}
+
+static inline ALWAYSINLINE void
+doSyncStage2(int p[2][2], bool do_disconnect)
+{
+  if (!do_disconnect) return;
+
+  Ewrite(p[1][1], "X", 1);
+}
+
+/// \args p[0]  used for parent -> child sync (child waits till parent is in deathrow)
+/// \args p[1]  used for child -> parent sync (recognize execv() errors)
+static void
+waitOnSync(pid_t pid, int p[2][2], bool is_prevent_race)
+{
+  char         c;
+  size_t       l;
+
+  if (is_prevent_race &&
+      !jailIntoTempDir(0)) {
+    perror(ENSC_WRAPPERS_PREFIX "jailIntoTempDir()");
+    exit(255);
+  }
+
+  Eclose(p[0][0]);
+  Ewrite(p[0][1], "X", 1);
+  Eclose(p[0][1]);
+  
+  Eclose(p[1][1]);
+  l = Eread(p[1][0], &c, 1);
+  if (l!=1) exitLikeProcess(pid,0, wrapper_exit_code);
+  l = Eread(p[1][0], &c, 1);
+  if (l!=0) exitLikeProcess(pid,0, wrapper_exit_code);
+}
diff --git a/src/exec-cd.c b/src/exec-cd.c
new file mode 100644 (file)
index 0000000..dde12cf
--- /dev/null
@@ -0,0 +1,88 @@
+// $Id: exec-cd.c,v 1.5 2005/05/05 09:20:37 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "util.h"
+#include <fcntl.h>
+#include <errno.h>
+
+#define ENSC_WRAPPERS_PREFIX   "exec-cd: "
+#define ENSC_WRAPPERS_FCNTL    1
+#define ENSC_WRAPPERS_UNISTD   1
+#include <wrappers.h>
+
+int    wrapper_exit_code = 255;
+
+static void
+showHelp(int fd, char const *cmd, int res)
+{
+  WRITE_MSG(fd, "Usage:  ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " [--] <dir> <cmd> <args>*\n\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+  exit(res);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "exec-cd " VERSION " -- executes commands within a safely changed cwd\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2003 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+int main(int argc, char *argv[])
+{
+  int          dirfd_root = Eopen("/", O_RDONLY, 0);
+  int          idx = 1;
+  int          dirfd_cur;
+
+  if (argc>=2) {
+    if (strcmp(argv[1], "--help")   ==0) showHelp(1, argv[0], 0);
+    if (strcmp(argv[1], "--version")==0) showVersion();
+    if (strcmp(argv[1], "--")       ==0) ++idx;
+  }
+
+  if (argc<idx+2) {
+    WRITE_MSG(2, "Not enough parameters; use '--help' for more information\n");
+    return wrapper_exit_code;
+  }
+
+
+  Echroot(".");
+  Echdir(argv[idx]);
+
+  dirfd_cur  = Eopen(".", O_RDONLY, 0);
+
+  Efchdir(dirfd_root);
+  Echroot(".");
+
+  Efchdir(dirfd_cur);
+
+  Eclose(dirfd_cur);
+  Eclose(dirfd_root);
+
+  Eexecv(argv[idx+1], argv+idx+1);
+}
diff --git a/src/exec-ulimit.c b/src/exec-ulimit.c
new file mode 100644 (file)
index 0000000..510e5d0
--- /dev/null
@@ -0,0 +1,186 @@
+// $Id: exec-ulimit.c,v 1.7 2004/05/08 01:40:25 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "util.h"
+
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <errno.h>
+
+#define ENSC_WRAPPERS_PREFIX   "exec-ulimit: "
+#define ENSC_WRAPPERS_UNISTD   1
+#define ENSC_WRAPPERS_FCNTL    1
+#define ENSC_WRAPPERS_RESOURCE 1
+#include <wrappers.h>
+
+#define DECLARE_LIMIT(RES,FNAME) { #FNAME, RLIMIT_##RES }
+
+int    wrapper_exit_code = 255;
+
+static struct {
+    char const *fname;
+    int                code;
+} const LIMITS[] = {
+  DECLARE_LIMIT(CORE,    core),
+  DECLARE_LIMIT(CPU,     cpu),
+  DECLARE_LIMIT(DATA,    data),
+  DECLARE_LIMIT(FSIZE,   fsize),
+  DECLARE_LIMIT(LOCKS,   locks),
+  DECLARE_LIMIT(MEMLOCK, memlock),
+  DECLARE_LIMIT(NOFILE,  nofile),
+  DECLARE_LIMIT(NPROC,   nproc),
+  DECLARE_LIMIT(RSS,     rss),
+  DECLARE_LIMIT(STACK,   stack),
+};
+
+static rlim_t
+readValue(int fd, char const *filename)
+{
+  char         buf[128];
+  size_t       len = Eread(fd, buf, sizeof(buf)-1);
+  long int     res;
+  char *       errptr;
+
+  buf[len] = '\0';
+  if (strncmp(buf, "inf", 3)==0) return RLIM_INFINITY;
+  res = strtol(buf, &errptr, 0);
+
+  if (errptr!=buf) {
+    switch (*errptr) {
+      case 'M' :  res *= 1024; /* fallthrough */
+      case 'K' :  res *= 1024; ++errptr; break;
+      case 'm' :  res *= 1000; /* fallthrough */
+      case 'k' :  res *= 1000; ++errptr; break;
+      default  :  break;
+    }
+  }
+
+  if (errptr==buf || (*errptr!='\0' && *errptr!='\n')) {
+    WRITE_MSG(2, "Invalid limit in '");
+    WRITE_STR(2, filename);
+    WRITE_STR(2, "'\n");
+    exit(255);
+  }
+
+  return res;
+}
+
+static bool
+readSingleLimit(struct rlimit *lim, char const *fname_base)
+{
+  size_t       fname_len = strlen(fname_base);
+  char         fname[fname_len + sizeof(".hard")];
+  int          fd;
+  bool         is_modified = false;
+
+  strcpy(fname, fname_base);
+  
+  fd = open(fname, O_RDONLY);
+  if (fd!=-1) {
+    rlim_t     tmp = readValue(fd, fname_base);
+    lim->rlim_cur = tmp;
+    lim->rlim_max = tmp;
+    Eclose(fd);
+
+    is_modified = true;
+  }
+
+  strcpy(fname+fname_len, ".hard");
+  fd = open(fname, O_RDONLY);
+  if (fd!=-1) {
+    lim->rlim_max = readValue(fd, fname_base);
+    Eclose(fd);
+    
+    is_modified = true;
+  }
+
+  strcpy(fname+fname_len, ".soft");
+  fd = open(fname, O_RDONLY);
+  if (fd!=-1) {
+    lim->rlim_cur = readValue(fd, fname_base);
+    Eclose(fd);
+    
+    is_modified = true;
+  }
+
+  if (is_modified &&
+      lim->rlim_max!=RLIM_INFINITY &&
+      (lim->rlim_cur==RLIM_INFINITY ||
+       lim->rlim_cur>lim->rlim_max))
+    lim->rlim_cur = lim->rlim_max;
+
+  return is_modified;
+}
+
+static void
+showHelp(int fd, char const *cmd, int res)
+{
+  WRITE_MSG(fd, "Usage:  ");
+  WRITE_STR(fd, cmd);
+  WRITE_STR(fd,
+           "<ulimit-cfgdir> <cmd> <argv>*\n\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+  exit(res);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "exec-ulimit " VERSION " -- executes programs with resource limits\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2003 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+int main(int argc, char *argv[])
+{
+  size_t               i;
+  int                  cur_fd = Eopen(".", O_RDONLY, 0);
+
+  if (argc==2) {
+    if (strcmp(argv[1], "--help")==0)    showHelp(1,argv[0],0);
+    if (strcmp(argv[1], "--version")==0) showVersion();
+  }
+
+  if (argc<3) {
+    WRITE_MSG(2, "Bad parameter count; use '--help' for more information.\n");
+    exit(255);
+  }
+
+  if (chdir(argv[1])!=-1) {
+    for (i=0; i<sizeof(LIMITS)/sizeof(LIMITS[0]); ++i) {
+      struct rlimit    limit;
+
+      Egetrlimit(LIMITS[i].code, &limit);
+      if (readSingleLimit(&limit, LIMITS[i].fname))
+       Esetrlimit(LIMITS[i].code, &limit);
+    }
+    Efchdir(cur_fd);
+  }
+  Eclose(cur_fd);
+
+  Eexecv(argv[2], argv+2);
+}
index 3ddcfe9..ef3fd95 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: fakerunlevel.c,v 1.1 2003/09/29 22:01:57 ensc Exp $
+// $Id: fakerunlevel.c,v 1.6 2004/02/27 04:42:10 ensc Exp $
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 // based on fakerunlevel.cc by Jacques Gelinas
        This is used when a vserver lack a private init process
        so runlevel properly report the fake runlevel.
 */
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "util.h"
+
 #include <utmp.h>
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
 #include <errno.h>
+#include <fcntl.h>
+#include <grp.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#define ENSC_WRAPPERS_PREFIX   "fakerunlevel: "
+#define ENSC_WRAPPERS_UNISTD   1
+#define ENSC_WRAPPERS_FCNTL    1
+#include <wrappers.h>
+
+int    wrapper_exit_code = 1;
 
-static void usage()
+static void
+showHelp(int fd, int exit_code)
 {
-       fprintf (stderr,"fakerunlevel version %s\n",VERSION);
-       fprintf (stderr
-               ,"\n"
-                "fakerunlevel runlevel utmp_file\n"
-                "\n"
-                "Put a runlevel record in file utmp_file\n");
+  WRITE_MSG(fd,
+           "Usage: fakerunlevel <runlevel> <utmp_file>\n\n"
+           "Put a runlevel record in file <utmp_file>\n\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+
+  exit(exit_code);
 }
 
-int main (int argc, char *argv[])
+static void
+showVersion()
 {
-       if (argc != 3){
-               usage();
-       }else{
-               int runlevel = atoi(argv[1]);
-               const char *fname = argv[2];
-               if (runlevel < 1 || runlevel > 5){
-                       usage();
-               }else{
-                       // Make sure the file exist
-                       FILE *fout = fopen (fname,"a");
-                       if (fout == NULL){
-                               fprintf (stderr,"Can't open file %s (%s)\n",fname
-                                       ,strerror(errno));
-                       }else{
-                               struct utmp ut;
-
-                               fclose (fout);
-                               utmpname (fname);
-                               setutent();
-                               memset (&ut,0,sizeof(ut));
-                               ut.ut_type = RUN_LVL;
-                               ut.ut_pid = ('#' << 8) + runlevel+'0';
-                               pututline (&ut);
-                               endutent();
-                       }
-               }
-       }
-
-       return 0;
+  WRITE_MSG(1,
+           "fakerunlevel " VERSION "\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2003 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
 }
 
+int main (int argc, char *argv[])
+{
+  if (argc==1) showHelp(2,1);
+  if (strcmp(argv[1], "--help")==0)    showHelp(1,0);
+  if (strcmp(argv[1], "--version")==0) showVersion();
+  if (argc!=3) showHelp(2,1);
+
+  {
+    int  const                 runlevel = atoi(argv[1]);
+    char const * const fname    = argv[2];
+    int                        fd;
+    struct utmp        ut;
+    
+    gid_t              gid;
+    char               *gid_str = getenv("UTMP_GID");
+    
+    if (runlevel<0 || runlevel>6) showHelp(2,1);
+
+    Echroot(".");
+    Echdir("/");
+
+      // Real NSS is too expensive/insecure in this state; therefore, use the
+      // value detected at ./configure stage or overridden by $UTMP_GID
+      // env-variable
+    gid = gid_str ? atoi(gid_str) : UTMP_GID;
+    Esetgroups(1, &gid);
+    Esetgid(gid);
+
+    if (getgid()!=gid) {
+      WRITE_MSG(2, "fakerunlevel: Failed to set group\n");
+      return EXIT_FAILURE;
+    }
+
+    umask(002);
+    fd = EopenD(fname, O_WRONLY|O_CREAT|O_APPEND, 0664);
+    Eclose(fd);
+
+    utmpname (fname);
+    setutent();
+    memset (&ut,0,sizeof(ut));
+    ut.ut_type = RUN_LVL;
+    ut.ut_pid  = ('#' << 8) + runlevel+'0';
+    pututline (&ut);
+    endutent();
+  }
+
+  return EXIT_SUCCESS;
+}
index 59531d1..39d9b03 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: filetime.c,v 1.1 2003/09/29 22:01:57 ensc Exp $
+// $Id: filetime.c,v 1.4 2005/03/24 12:44:17 ensc Exp $
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 // based on filetime.cc by Jacques Gelinas
 // along with this program; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "util.h"
+#include "lib/internal.h"
+
+#include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
 #include <errno.h>
 #include <time.h>
 #include <sys/stat.h>
 
+static void
+showHelp(char const *cmd)
+{
+  WRITE_MSG(1, "Usage:  ");
+  WRITE_STR(1, cmd);
+  WRITE_MSG(1,
+           " [--] <filename>\n"
+           "\n"
+           "Shows the relative age of <filename>\n"
+           "\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+  exit(0);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "filetime " VERSION " -- shows age of a file\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2004 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
 int main (int argc, char *argv[])
 {
-       int ret = -1;
-       if (argc != 2){
-               fprintf (stderr
-                       ,"filetime version %s\n"
-                        "filetime file\n"
-                        "\n"
-                        "Prints the age of a file\n"
-                        "(how long since it was created or modified)\n"
-                       ,VERSION);
-       }else{
-               struct stat st;
-               if (stat(argv[1],&st)==-1){
-                       fprintf (stderr,"Can't stat file %s (%s)\n",argv[1]
-                               ,strerror(errno));
-               }else{
-                       time_t now = time(NULL);
-                       time_t since = now - st.st_mtime;
-                       int days = since / (24*60*60);
-                       int today = since % (24*60*60);
-                       int hours = today / (60*60);
-                       int minutes = (today % (60*60)) / 60;
-                       if (days > 0){
-                               printf ("%d days ",days);
-                       }
-                       printf ("%02d:%02d\n",hours,minutes);
-                       ret = 0;
-               }
-       }
-       return ret;
+  int                  idx = 1;
+  struct stat          st;
+  
+  if (argc>=2) {
+    if (strcmp(argv[1], "--help")   ==0) showHelp(argv[0]);
+    if (strcmp(argv[1], "--version")==0) showVersion();
+    if (strcmp(argv[1], "--")       ==0) ++idx;
+  }
+  if (argc<idx+1)
+    WRITE_MSG(2, "No filename specified; use '--help' for more information\n");
+  else if (stat(argv[idx], &st)==-1)
+    PERROR_Q("stat", argv[idx]);
+  else {    
+    time_t     now     = time(NULL);
+    time_t     since   = now - st.st_mtime;
+    int                days    = since / (24*60*60);
+    int                today   = since % (24*60*60);
+    int                hours   = today / (60*60);
+    int                minutes = (today % (60*60)) / 60;
+
+    char       buf[3*sizeof(time_t)*3 + 128];
+    size_t     l = 0;
+
+    if (days > 0) {
+      l        = utilvserver_fmt_ulong(buf, days);
+      buf[l++] = ' ';
+      #define MSG      "days, "
+      memcpy(buf+l, MSG, sizeof(MSG)-1); l += sizeof(MSG)-1;
+    }
+
+    if (hours<10) buf[l++] = '0';
+    l += utilvserver_fmt_ulong(buf+l, hours);
+    buf[l++] = ':';
+    if (minutes<10) buf[l++] = '0';
+    l += utilvserver_fmt_ulong(buf+l, minutes);
+    buf[l++] = '\n';
+
+    Vwrite(1, buf, l);
+    return EXIT_SUCCESS;
+  }
+
+  return EXIT_FAILURE;
 }
 
diff --git a/src/fstool.c b/src/fstool.c
new file mode 100644 (file)
index 0000000..4bb8b8f
--- /dev/null
@@ -0,0 +1,230 @@
+// $Id: fstool.c,v 1.8 2004/08/19 14:29:25 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "fstool.h"
+#include "util.h"
+
+#include <lib/vserver.h>
+
+#include <getopt.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <dirent.h>
+#include <errno.h>
+#include <fcntl.h>
+
+#define ENSC_WRAPPERS_DIRENT   1
+#define ENSC_WRAPPERS_FCNTL    1
+#define ENSC_WRAPPERS_UNISTD   1
+#include <wrappers.h>
+
+struct Arguments const *               global_args = 0;
+
+int wrapper_exit_code = 1;
+
+inline static bool
+isSpecialDir(char const *d)
+{
+  return ( (d[0]=='.' && !global_args->do_display_dot) ||
+          (d[0]=='.' && (d[1]=='\0' || (d[1]=='.' && d[2]=='\0'))) );
+}
+
+#define CONCAT_PATHS(LHS, LHS_LEN, RHS)                                        \
+  size_t               l_rhs = strlen(RHS);                            \
+  char                 new_path[(LHS_LEN) + l_rhs + sizeof("/")];      \
+  memcpy(new_path, LHS, (LHS_LEN));                                    \
+  memcpy(new_path+(LHS_LEN), "/", 1);                                  \
+  memcpy(new_path+(LHS_LEN)+1, RHS, l_rhs);                            \
+  new_path[(LHS_LEN)+1+l_rhs] = '\0';
+
+static uint64_t
+iterateFilesystem(char const *path)
+{
+  bool                 do_again = false;
+  size_t               path_len = strlen(path);
+  uint64_t             err = 0;
+  struct stat          cur_st;
+  DIR *                        dir = opendir(".");
+
+  if (dir==0) {
+    perror("opendir()");
+    return 1;
+  }
+
+  // show current directory entry first
+  if (lstat(".", &cur_st)==-1) perror("lstat()");
+  else err += handleFile(".", path) ? 0 : 1;
+
+  // strip trailing '/'
+  while (path_len>0 && path[path_len-1]=='/') --path_len;
+
+  // process regular files before directories
+  for (;;) {
+    struct dirent      *ent = Ereaddir(dir);
+    struct stat                st;
+    
+    if (ent==0) break;
+    if (isSpecialDir(ent->d_name)) continue;
+
+    if (lstat(ent->d_name, &st)==-1) {
+      perror("lstat()");
+      ++err;
+      continue;
+    }
+
+    if (S_ISDIR(st.st_mode) && global_args->do_recurse) {
+      do_again = true;
+      continue;
+    }
+    
+    {
+      CONCAT_PATHS(path, path_len, ent->d_name);
+      err += handleFile(ent->d_name, new_path) ? 0 : 1;
+    }
+  }
+
+  if (do_again) {
+    int                cur_dir = Eopen(".", O_RDONLY, 0);
+    rewinddir(dir);
+
+    for (;;) {
+      struct dirent    *ent = Ereaddir(dir);
+      struct stat      st;
+    
+      if (ent==0) break;
+      if (isSpecialDir(ent->d_name)) continue;
+      
+      if (lstat(ent->d_name, &st)==-1) {
+       perror("lstat()");
+       ++err;
+       continue;
+      }
+
+      if (!S_ISDIR(st.st_mode) ||
+         (global_args->local_fs && st.st_dev!=cur_st.st_dev))
+       continue;
+
+      if (safeChdir(ent->d_name, &st)==-1) {
+       perror("chdir()");
+       ++err;
+       continue;
+      }
+      
+      {
+       CONCAT_PATHS(path, path_len, ent->d_name);
+       err += iterateFilesystem(new_path);
+      }
+      Efchdir(cur_dir);
+    }
+    Eclose(cur_dir);
+  }
+
+  Eclosedir(dir);
+
+  return err;
+}
+#undef CONCAT_PATHS
+
+static uint64_t
+processFile(char const *path)
+{
+  struct stat          st;
+
+  if (lstat(path, &st)==-1) {
+    perror("lstat()");
+    return 1;
+  }
+
+  if (S_ISDIR(st.st_mode) && !global_args->do_display_dir) {
+    Echdir(path);
+    return iterateFilesystem(path);
+  }
+  else
+    return handleFile(path, path) ? 0 : 1;
+}
+
+int main(int argc, char *argv[])
+{
+  uint64_t             err_cnt = 0;
+  int                  i;
+  struct Arguments     args = {
+    .do_recurse                =  false,
+    .do_display_dot    =  false,
+    .do_display_dir    =  false,
+    .do_mapping                =  true,
+    .ctx               =  VC_NOCTX,
+    .is_legacy          =  false,
+    .do_set             =  false,
+    .do_unset           =  false,
+    .local_fs          =  false,
+    .set_mask           = 0,
+    .del_mask           = 0
+  };
+
+  global_args = &args;
+  while (1) {
+    int                c = getopt_long(argc, argv, CMDLINE_OPTIONS_SHORT,
+                               CMDLINE_OPTIONS, 0);
+    if (c==-1) break;
+
+    switch (c) {
+      case CMD_HELP            :  showHelp(1, argv[0], 0);
+      case CMD_VERSION         :  showVersion();
+      case CMD_IMMU            :  args.set_mask |= VC_IATTR_IMMUTABLE; /*@fallthrough@*/
+      case CMD_IMMUX           :  args.set_mask |= VC_IATTR_IUNLINK; break;
+      case CMD_ADMIN           :  args.set_mask |= VC_IATTR_ADMIN;   break;
+      case CMD_WATCH           :  args.set_mask |= VC_IATTR_WATCH;   break;
+      case CMD_HIDE            :  args.set_mask |= VC_IATTR_HIDE;    break;
+      case CMD_BARRIER         :  args.set_mask |= VC_IATTR_BARRIER; break;
+      case CMD_UNSET_IMMU      :  args.del_mask |= VC_IATTR_IMMUTABLE; /*@fallthrough@*/
+      case CMD_UNSET_IMMUX     :  args.del_mask |= VC_IATTR_IUNLINK; break;
+      case CMD_UNSET_ADMIN     :  args.del_mask |= VC_IATTR_ADMIN;   break;
+      case CMD_UNSET_WATCH     :  args.del_mask |= VC_IATTR_WATCH;   break;
+      case CMD_UNSET_HIDE      :  args.del_mask |= VC_IATTR_HIDE;    break;
+      case CMD_UNSET_BARRIER   :  args.del_mask |= VC_IATTR_BARRIER; break;
+      case 'R'                 :  args.do_recurse     = true;  break;
+      case 'a'                 :  args.do_display_dot = true;  break;
+      case 'd'                 :  args.do_display_dir = true;  break;
+      case 'n'                 :  args.do_mapping     = false; break;
+      case 's'                 :  args.do_set         = true;  break;
+      case 'u'                 :  args.do_unset       = true;  break;
+      case 'c'                 :  args.ctx_str        = optarg; break;
+      case 'x'                 :  args.local_fs       = true;   break;
+      default          :
+       WRITE_MSG(2, "Try '");
+       WRITE_STR(2, argv[0]);
+       WRITE_MSG(2, " --help\" for more information.\n");
+       return EXIT_FAILURE;
+       break;
+    }
+  }
+
+  fixupParams(&args, argc);
+
+  if (optind==argc)
+    err_cnt  = processFile(".");
+  else for (i=optind; i<argc; ++i)
+    err_cnt += processFile(argv[i]);
+
+  return err_cnt>0 ? EXIT_FAILURE : EXIT_SUCCESS;
+}
diff --git a/src/fstool.h b/src/fstool.h
new file mode 100644 (file)
index 0000000..b0b340d
--- /dev/null
@@ -0,0 +1,71 @@
+// $Id: fstool.h,v 1.7 2004/08/19 14:29:44 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_SRC_FSTOOL_H
+#define H_UTIL_VSERVER_SRC_FSTOOL_H
+
+#include <getopt.h>
+#include <stdbool.h>
+
+#define CMD_HELP               0x8000
+#define CMD_VERSION            0x8001
+#define CMD_IMMUTABLE          0x8002
+#define CMD_IMMULINK           0x8003
+#define CMD_LEGACY             0x8004
+#define CMD_IMMU               0x8010
+#define CMD_ADMIN              0x8011
+#define CMD_WATCH              0x8012
+#define CMD_HIDE               0x8013
+#define CMD_BARRIER            0x8014
+#define CMD_IMMUX              0x8015
+#define CMD_UNSET_IMMU         0x8020
+#define CMD_UNSET_ADMIN                0x8021
+#define CMD_UNSET_WATCH                0x8022
+#define CMD_UNSET_HIDE         0x8023
+#define CMD_UNSET_BARRIER      0x8024
+#define CMD_UNSET_IMMUX                0x8025
+
+
+struct stat;
+
+struct Arguments {
+    bool               do_recurse;
+    bool               do_display_dot;
+    bool               do_display_dir;
+    bool               do_mapping;
+    char const *       ctx_str;
+    xid_t              ctx;
+    bool               is_legacy;
+    bool               do_set;
+    bool               do_unset;
+    bool               local_fs;
+
+    uint32_t           set_mask;
+    uint32_t           del_mask;
+};
+
+extern struct option const             CMDLINE_OPTIONS[];
+extern char const                      CMDLINE_OPTIONS_SHORT[];
+extern struct Arguments const *                global_args;
+
+void   fixupParams(struct Arguments *, int argc);
+bool   handleFile(char const *d_name, char const *full_name);
+void   showHelp(int fd, char const *cmd, int res);
+void   showVersion();
+
+#endif //  H_UTIL_VSERVER_SRC_FSTOOL_H
index c375bcc..85c1960 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: ifspec.c,v 1.1.4.1 2003/11/21 16:01:09 ensc Exp $
+// $Id: ifspec.c,v 1.4 2004/02/20 16:59:40 ensc Exp $
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 // based on ifspec.cc by Jacques Gelinas
        NETMASK=
        BCAST=
 */
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -120,7 +124,7 @@ int ifconfig_print (
                        ret = 0;
                }
                else {
-                 perror("ioctl(SIOCGIFADDR)");
+                 perror("ifspec: ioctl(SIOCGIFADDR)");
                }
                
                if (maskstr != NULL && maskstr[0] != '\0'){
@@ -138,7 +142,7 @@ int ifconfig_print (
                        ret = 0;
                }
                else {
-                 perror("ioctl(SIOCGIFNETMASK)");
+                 perror("ifspec: ioctl(SIOCGIFNETMASK)");
                }
                
                if (bcaststr != NULL && bcaststr[0] != '\0'){
diff --git a/src/keep-ctx-alive.c b/src/keep-ctx-alive.c
new file mode 100644 (file)
index 0000000..0314881
--- /dev/null
@@ -0,0 +1,194 @@
+// $Id: keep-ctx-alive.c,v 1.3 2004/12/16 00:11:01 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "util.h"
+
+#include <lib/vserver.h>
+#include <lib/internal.h>
+
+#include <getopt.h>
+#include <errno.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <sys/select.h>
+
+#define ENSC_WRAPPERS_PREFIX   "keep-ctx-alive: "
+#define ENSC_WRAPPERS_VSERVER  1
+#define ENSC_WRAPPERS_SOCKET   1
+#define ENSC_WRAPPERS_UNISTD   1
+#define ENSC_WRAPPERS_IOSOCK   1
+#define ENSC_WRAPPERS_IO       1
+#include <wrappers.h>
+
+
+#define CMD_HELP               0x1000
+#define CMD_VERSION            0x1001
+#define CMD_SOCKET             0x4000
+#define CMD_TIMEOUT            0x4001
+#define CMD_QUIT               0x4002
+
+int    wrapper_exit_code = 1;
+
+struct option const
+CMDLINE_OPTIONS[] = {
+  { "help",       no_argument,       0, CMD_HELP },
+  { "version",    no_argument,       0, CMD_VERSION },
+  { "socket",     required_argument, 0, CMD_SOCKET },
+  { "timeout",    required_argument, 0, CMD_TIMEOUT },
+  { "quit",       required_argument, 0, CMD_QUIT },
+  {0,0,0,0},
+};
+
+static void
+showHelp(int fd, char const *cmd, int res)
+{
+  WRITE_MSG(fd, "Usage:\n    ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " --socket <filename> [--timeout <seconds>]\n"
+           "\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+
+  exit(res);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "keep-ctx-alive " VERSION " -- keeps a context alive\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2004 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+static void
+printXid(int fd)
+{
+  xid_t                xid = Evc_get_task_xid(0);
+  char         buf[sizeof(xid)*3 + 2];
+  size_t       l;
+
+  l = utilvserver_fmt_long(buf, xid);
+  EwriteAll(fd, buf, l);
+  Eclose(fd);
+}
+
+static void handleMessage(int fd)
+{
+  char                 buf[128];
+  size_t               len;
+  struct sockaddr_un   addr;
+  socklen_t            addr_len = sizeof(addr);
+  int                  new_fd   = Eaccept(fd, &addr, &addr_len);
+
+  len = Erecv(new_fd, buf, sizeof buf,0);
+  if (len==0) exit(1);
+  
+    // TODO: handle message???
+  exit(0);
+}
+
+static int
+sendQuitSignal(char const *filename, char const *msg)
+{
+  int                  fd;
+  struct sockaddr_un   addr;
+
+  ENSC_INIT_UNIX_SOCK(addr, filename);
+  fd = Esocket(PF_UNIX, SOCK_STREAM, 0);
+  Econnect(fd, &addr, sizeof(addr));
+
+  if (msg) EsendAll(fd, msg, strlen(msg));
+  Eclose(fd);
+
+  return EXIT_SUCCESS;
+}
+
+static int
+doit(char const *filename, struct timeval *timeout)
+{
+  int                  fd;
+  struct sockaddr_un   sock;
+  pid_t                        pid;
+  fd_set               fdset;
+
+  ENSC_INIT_UNIX_SOCK(sock, filename);
+
+  fd = Esocket(PF_UNIX, SOCK_STREAM, 0);
+  Ebind(fd, &sock, sizeof sock);
+  Elisten(fd, 5);
+
+  printXid(1);
+
+  FD_ZERO(&fdset);
+  FD_SET(fd, &fdset);
+
+  pid = Efork();
+  if (pid==0) {
+    Eselect(fd+1, &fdset, 0,0, timeout);
+    if (FD_ISSET(fd, &fdset)) handleMessage(fd);
+    exit(1);
+  }
+
+  return EXIT_SUCCESS;
+}
+
+int main(int argc, char *argv[])
+{
+  char const *         socket_name = 0;
+  struct timeval       timeout = { 0,0 };
+  struct timeval       *timeout_ptr = 0;
+  char const *         quit_msg = false;
+  
+  while (1) {
+    int                c = getopt_long(argc, argv, "+", CMDLINE_OPTIONS, 0);
+    if (c==-1) break;
+
+    switch (c) {
+      case CMD_HELP            :  showHelp(1, argv[0], 0);
+      case CMD_VERSION         :  showVersion();
+      case CMD_SOCKET          :  socket_name = optarg; break;
+      case CMD_QUIT            :  quit_msg    = optarg; break;
+      case CMD_TIMEOUT         :
+       timeout.tv_sec = atoi(optarg);
+       timeout_ptr    = &timeout;
+       break;
+      default          :
+       WRITE_MSG(2, "Try '");
+       WRITE_STR(2, argv[0]);
+       WRITE_MSG(2, " --help\" for more information.\n");
+       return 255;
+       break;
+    }
+  }
+
+  if (socket_name==0)
+    WRITE_MSG(2, "reserve-context: No socketname specified\n");
+  if (quit_msg)
+    return sendQuitSignal(socket_name, quit_msg);
+  else
+    return doit(socket_name, timeout_ptr);
+
+  return EXIT_FAILURE;
+}
index 84fa388..e62b4ae 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: listdevip.c,v 1.1 2003/09/29 22:01:57 ensc Exp $
+// $Id: listdevip.c,v 1.3 2004/02/20 16:59:40 ensc Exp $
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 // based on listdevip.cc by Jacques Gelinas
        Print the list of all network (IP) devices. Print the IP
        in fact, including all aliases.
 */
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+#include "compat.h"
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -47,7 +52,7 @@ static int devlist_read2_2()
        int ret = -1;
        int skfd = socket (AF_INET,SOCK_DGRAM,0);
        if (skfd < 0) {
-               perror ("socket");
+               perror ("listdevip: socket()");
        }else{
                struct ifconf ifc;
                int numreqs = 30;
@@ -58,7 +63,7 @@ static int devlist_read2_2()
                        ifc.ifc_buf = (char*)realloc(ifc.ifc_buf, ifc.ifc_len);
 
                        if (ioctl(skfd, SIOCGIFCONF, &ifc) < 0) {
-                               perror("SIOCGIFCONF");
+                               perror("listdevip: SIOCGIFCONF");
                                ret = -1;
                                break;
                        }
@@ -99,7 +104,7 @@ static int devlist_read2_2()
        return ret;
 }
 
-int main (int argc, char *argv[])
+int main (int UNUSED argc, char UNUSED *argv[])
 {
        devlist_read2_2();
        return 0;
diff --git a/src/lockfile.c b/src/lockfile.c
new file mode 100644 (file)
index 0000000..df2e6b0
--- /dev/null
@@ -0,0 +1,143 @@
+// $Id: lockfile.c,v 1.4 2004/04/13 08:27:50 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "util.h"
+
+#include <unistd.h>
+#include <errno.h>
+#include <string.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <stdio.h>
+#include <time.h>
+#include <sys/file.h>
+#include <sys/param.h>
+
+static void
+showHelp(char const *cmd)
+{
+  WRITE_MSG(1, "Usage:  ");
+  WRITE_STR(1, cmd);
+  WRITE_MSG(1,
+           " [--] <lockfile> <syncpipe> [<timeout>]\n\n"
+           "Protocol:\n"
+           "  1.  parent (shell) creates a named <syncpipe>\n"
+           "  2.  'lockfile' will be called\n"
+           "  3a. 'lockfile' waits until somebody opens the <syncpipe> for reading\n"
+           "  3b. parent (shell) opens the pipe for reading and blocks\n"
+           "  4.  'lockfile' calls flock() on the <lockfile>\n"
+           "  5.  'lockfile' closes the <syncpipe>\n"
+           "  6.  parent (shell) unlocks since <syncpipe> is closed\n"
+           "  7.  'lockfile' goes into infinite loop\n"
+           "  8.  parent sends SIGHUP (or other signal) to 'lockfile\n"
+           "\n"
+           "Sample code:\n"
+           "  tmp=$(mktemp /tmp/lock.XXXXXX)\n"
+           "  rm -f $tmp    # safe since mknod(2) does not follow symlinks\n"
+           "  mkfifo -m700 $tmp || exit 1\n"
+           "  lockfile $lock $tmp &\n"
+           "  $tmp\n"
+           "  ... <actions> ...\n"
+           "  kill -HUP $!  # (implicated by shell-exit)\n"
+           "\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+  exit(0);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "lockfile " VERSION " -- locks a file"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2004 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+static void
+alarmFunc(int UNUSED sig)
+{
+  signal(SIGALRM, alarmFunc);
+}
+
+static void
+quitFunc(int UNUSED sig)
+{
+  _exit(0);
+}
+
+int main(int argc, char *argv[])
+{
+  int                  fd, sync_fd = -1;
+  int                  idx = 1;
+  time_t               end_time;
+  pid_t const          ppid = getppid();
+
+  if (argc>=2) {
+    if (strcmp(argv[1], "--help")   ==0) showHelp(argv[0]);
+    if (strcmp(argv[1], "--version")==0) showVersion();
+    if (strcmp(argv[1], "--")       ==0) ++idx;
+  }
+
+  if (argc<idx+2) {
+    WRITE_MSG(2, "Not enough parameters; use '--help' for more information\n");
+    return EXIT_FAILURE;
+  }
+
+  end_time = time(0);
+  if (argc==idx+3) end_time += atoi(argv[idx+2]);
+  else             end_time += 300;
+                  
+  if ((sync_fd=open(argv[idx+1], O_WRONLY))==-1)
+    perror("lockfile: open(<syncpipe>)");
+  else if ((fd=open(argv[idx], O_CREAT|O_RDONLY|O_NOFOLLOW|O_NONBLOCK, 0644))==-1)
+    perror("lockfile: open(<lockfile>)");
+  else if (unlink(argv[idx+1])==-1)
+    perror("lockfile: unlink(<syncpipe>)");
+  else if (siginterrupt(SIGALRM, 1)==-1)
+    perror("lockfile: siginterrupt()");
+  else if (signal(SIGALRM, alarmFunc)==SIG_ERR ||
+          signal(SIGHUP,  quitFunc) ==SIG_ERR)
+    perror("lockfile: signal()");
+  else while (time(0)<end_time && getppid()==ppid) {
+    int                duration = end_time-time(0);
+    alarm(MIN(10, MAX(duration,1)));
+    
+    if (flock(fd,LOCK_EX)==-1) {
+      if (errno==EINTR) continue;
+      perror("lockfile: flock()");
+      break;
+    }
+    signal(SIGALRM, SIG_IGN);
+
+    WRITE_MSG(sync_fd, "#!/bin/true\n");
+    close(sync_fd);
+    while (getppid()==ppid) sleep(10);
+          
+    return EXIT_SUCCESS;
+  }
+
+  if (sync_fd!=-1)
+    WRITE_MSG(sync_fd, "#!/bin/false\n");
+  return EXIT_FAILURE;
+}
diff --git a/src/lsxid.c b/src/lsxid.c
new file mode 100644 (file)
index 0000000..2ab1ada
--- /dev/null
@@ -0,0 +1,182 @@
+// $Id: lsxid.c,v 1.9 2005/03/24 12:44:17 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "fstool.h"
+#include "util.h"
+
+#include <ensc_vector/vector.h>
+#include <lib/vserver.h>
+#include <lib/vserver-internal.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <assert.h>
+
+#define ENSC_WRAPPERS_STDLIB   1
+#include <wrappers.h>
+
+struct option const
+CMDLINE_OPTIONS[] = {
+  { "help",     no_argument,  0, CMD_HELP },
+  { "version",  no_argument,  0, CMD_VERSION },
+  { 0,0,0,0 }
+};
+
+char const             CMDLINE_OPTIONS_SHORT[] = "Radnx";
+
+struct XidNameMapping {
+    xid_t              xid;
+    char const *       name;
+};
+
+static struct Vector   xid_name_mapping;
+
+void
+showHelp(int fd, char const *cmd, int res)
+{
+  WRITE_MSG(fd, "Usage:  ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " [-Radnx] [--] <file>*\n\n"
+           " Options:\n"
+           "   -R  ...  recurse through directories\n"
+           "   -a  ...  display files starting with '.' also\n"
+           "   -d  ...  list directories like other files instead of\n"
+           "            listing their content\n"
+           "   -n  ...  do not try to do xid -> vserver-name mapping\n"
+           "   -x  ...  do not cross filesystems\n\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+  exit(res);
+}
+
+void
+showVersion()
+{
+  WRITE_MSG(1,
+           "lsxid " VERSION " -- shows the context which is associated to a file\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2004 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+void
+fixupParams(struct Arguments UNUSED * args, int UNUSED argc)
+{
+  Vector_init(&xid_name_mapping, sizeof (struct XidNameMapping));
+}
+
+static int
+cmpMap(void const *xid_v, void const *map_v)
+{
+  xid_t const * const                  xid = xid_v;
+  struct XidNameMapping const * const  map = map_v;
+
+  return *xid - map->xid;
+}
+
+static char const *
+lookupContext(xid_t xid)
+{
+  struct XidNameMapping        *res;
+
+  res = Vector_search(&xid_name_mapping, &xid, cmpMap);
+
+  if (res==0) {
+    vcCfgStyle         style = vcCFG_AUTO;
+    char const *       vcfg  = vc_getVserverByCtx(xid, &style, 0);
+
+    res = Vector_insert(&xid_name_mapping, &xid, cmpMap);
+    if (vcfg) res->name = vc_getVserverName(vcfg, style);
+    else      res->name = 0;
+    res->xid = xid;
+
+    free(const_cast(char *)(vcfg));
+  }
+
+  assert(res!=0);
+  
+  return res->name;
+}
+
+static xid_t
+getFileContext(char const *name)
+{
+  xid_t                res;
+  uint32_t     mask = VC_IATTR_XID;
+  
+  if (vc_get_iattr(name, &res, 0, &mask)==-1)
+    perror("vc_get_iattr()");
+
+  return (mask&VC_IATTR_XID) ? res : VC_NOCTX;
+}
+
+bool
+handleFile(char const *name, char const *display_name)
+{
+  xid_t                ctx = 0;
+  char         buf[MAX(sizeof(ctx)*3+1, 20)];
+  bool         need_write = true;
+
+  memset(buf, ' ', sizeof buf);
+
+#if 1
+  ctx = getFileContext(name);
+#else
+#  warning Compiling in debug-code
+  ctx = random() % 10 + 49213;
+#endif
+  
+  if (ctx==VC_NOCTX) {
+    memcpy(buf, "!!ERR!!", 7);
+    Vwrite(1, buf, sizeof buf);
+    need_write = false;
+  }
+  else if (global_args->do_mapping) {
+    char const *       vname = lookupContext(ctx);
+    if (!vname) buf[0] = '\0';
+    else {
+      size_t           l = strlen(vname);
+      if (l<sizeof(buf)) Vwrite(1, buf, sizeof(buf)-l);
+      Vwrite(1, vname, l);
+
+      need_write = false;
+    }
+  }
+
+  if (need_write) {
+    size_t     l = utilvserver_fmt_ulong(buf, ctx);
+    if (l<sizeof(buf)) Vwrite(1, buf+l, sizeof(buf)-l);
+    Vwrite(1, buf, l);
+  }
+
+  Vwrite(1, "  ", 2);
+  Vwrite(1, display_name, strlen(display_name));
+  Vwrite(1, "\n", 1);
+
+  return ctx!=VC_NOCTX;
+}
diff --git a/src/mask2prefix.c b/src/mask2prefix.c
new file mode 100644 (file)
index 0000000..21ffba7
--- /dev/null
@@ -0,0 +1,70 @@
+// $Id: mask2prefix.c,v 1.1 2003/10/09 01:41:06 ensc Exp $    --*- c++ -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "util.h"
+#include <stdlib.h>
+
+static inline void
+showHelp(int fd, int exit_code)
+{
+  WRITE_MSG(fd,
+           "Usage:  mask2prefix <mask>\n");
+  exit(exit_code);
+}
+
+int main(int argc, char *argv[])
+{
+  char         *err_ptr, *ptr;
+  int          len = 0;
+  size_t       i;
+  
+  if (argc!=2) showHelp(2,255);
+
+  ptr = argv[1];
+  for (i=0; i<4; ++i) {
+    unsigned int       val = strtol(ptr, &err_ptr, 10);
+
+    switch (*err_ptr) {
+      case '.' :
+      case '\0'        :  break;
+      default  :
+       WRITE_MSG(2, "Invalid mask specified\n");
+       return 255;
+    }
+    
+    if (val>=0x100) {
+      WRITE_MSG(2, "Invalid mask specified\n");
+      return 255;
+    }
+
+    while (val&0x80) {
+      ++len;
+      val <<= 1;
+    }
+
+    if (val!=0xff00) break;
+
+    ptr = err_ptr+1;
+  }
+
+  return len;
+}
index 77c8314..277f0f6 100644 (file)
@@ -1,7 +1,6 @@
-// $Id: readlink.c,v 1.1 2003/09/29 22:01:57 ensc Exp $
+// $Id: readlink.c,v 1.4 2005/03/24 12:44:17 ensc Exp $
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
-// based on readlink.cc by Jacques Gelinas
 //  
 // 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
 // along with this program; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
-/*
-       Copyright Jacques Gelinas jack@solucorp.qc.ca
-       Distributed under the Gnu Public License, see the License file
-       in this package.
-*/
-#include <stdio.h>
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "util.h"
+
 #include <string.h>
 #include <errno.h>
 #include <limits.h>
 #include <unistd.h>
+#include <stdio.h>
+
+static void
+showHelp(char const *cmd)
+{
+  WRITE_MSG(1, "Usage:  ");
+  WRITE_STR(1, cmd);
+  WRITE_MSG(1,
+           " [--] <filename>\n"
+           "\n"
+           "Display value of a symbolic link on standard output.\n"
+           "\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+  exit(0);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "readlink " VERSION " -- display value of symlink\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2004 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
 
 int main (int argc, char *argv[])
 {
-       int ret = -1;
-       if (argc != 2){
-               fprintf (stderr,"readlink symlink-file\n");
-               fprintf (stderr,"Prints the contents of a symlink\n");
-       }else{
-               char buf[PATH_MAX];
-               int len = readlink (argv[1],buf,sizeof(buf)-1);
-               if (len > 0){
-                       buf[len] = '\0';
-                       printf ("%s\n",buf);
-                       ret = 0;
-               }else{
-                       fprintf (stderr,"readlink failed for file %s (%s)\n"
-                               ,argv[1],strerror(errno));
-               }
-       }
-       return ret;
+  char                 buf[PATH_MAX + 2];
+  int                  idx = 1;
+  int                  len;
+  
+  if (argc>=2) {
+    if (strcmp(argv[1], "--help")   ==0) showHelp(argv[0]);
+    if (strcmp(argv[1], "--version")==0) showVersion();
+    if (strcmp(argv[1], "--")       ==0) ++idx;
+  }
+  if (argc<idx+1)
+    WRITE_MSG(2, "No filename specified; use '--help' for more information\n");
+  else if ((len=readlink(argv[idx], buf, sizeof(buf)-2))==-1)
+    PERROR_Q("readlink: readlink", argv[idx]);
+  else {
+    buf[len++] = '\n';
+    Vwrite(1, buf, len);
+    return EXIT_SUCCESS;
+  }
+
+  return EXIT_FAILURE;
 }
 
index 81abf4c..d18822a 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: rebootmgr.c,v 1.1.2.1.2.3 2003/10/30 15:16:30 ensc Exp $
+// $Id: rebootmgr.c,v 1.8 2004/02/17 19:55:54 ensc Exp $
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 // based on rebootmgr.cc by Jacques Gelinas
 #ifdef HAVE_CONFIG_H
 #  include <config.h>
 #endif
-#include "compat.h"
+#include "pathconfig.h"
 
 #include <stdio.h>
 #include <unistd.h>
 #include <stdlib.h>
 #include <sys/types.h>
+#include <limits.h>
 #include <errno.h>
 #include <syslog.h>
 #include <sys/stat.h>
@@ -66,7 +67,7 @@ static int rebootmgr_opensocket (const char *vname)
        int ret = -1;
        char sockn[PATH_MAX];
        int fd =  socket (AF_UNIX,SOCK_STREAM,0);
-       sprintf (sockn,"%s/%s/dev/reboot",VROOTDIR, vname);
+       sprintf (sockn, DEFAULT_VSERVERDIR "/%s/dev/reboot",vname);
        unlink (sockn);
        if (fd == -1){
                fprintf (stderr,"Can't create a unix domain socket (%s)\n"
@@ -104,13 +105,13 @@ static int rebootmgr_process (int fd, const char *vname)
                if (strcmp(buf,"reboot\n")==0){
                        char cmd[1000];
                        syslog (LOG_NOTICE,"reboot vserver %s\n",vname);
-                       snprintf (cmd,sizeof(cmd)-1,"%s/vserver %s restart >>/var/log/boot.log 2>&1",SBINDIR, vname);
+                       snprintf (cmd,sizeof(cmd)-1, SBINDIR "/vserver %s restart >>/var/log/boot.log 2>&1", vname);
                        system (cmd);
                        ret = 0;
                }else if (strcmp(buf,"halt\n")==0){
                        char cmd[1000];
                        syslog (LOG_NOTICE,"halt vserver %s\n",vname);
-                       snprintf (cmd,sizeof(cmd)-1,"%s/vserver %s stop >>/var/log/boot.log 2>&1",SBINDIR, vname);
+                       snprintf (cmd,sizeof(cmd)-1, SBINDIR "/vserver %s stop >>/var/log/boot.log 2>&1", vname);
                        system (cmd);
                        ret = 0;
                }else{
index 6b8cf6c..932cc06 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: reducecap.c,v 1.1.4.4 2004/03/05 04:59:36 ensc Exp $
+// $Id: reducecap.c,v 1.18 2005/03/24 12:44:17 ensc Exp $
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 // based on reducecap.cc by Jacques Gelinas
 #ifdef HAVE_CONFIG_H
 #  include <config.h>
 #endif
-#include "compat.h"
+
+#include "util.h"
+#include "vserver.h"
 
 #include <stdio.h>
 #include <errno.h>
 #include <unistd.h>
 #include <stdlib.h>
 #include <string.h>
-#include <strings.h>
+#include <getopt.h>
+#include <sys/param.h>
 
-#include "linuxcaps.h"
-#include "vserver.h"
+#define ENSC_WRAPPERS_PREFIX   "reducecap: "
+#define ENSC_WRAPPERS_VSERVER  1
+#define ENSC_WRAPPERS_UNISTD   1
+#include <wrappers.h>
+
+
+#undef _POSIX_SOURCE
+#include "capability-compat.h"
+
+
+#define CMD_HELP       0x1000
+#define CMD_VERSION    0x1001
+
+#define CMD_SHOW       0x2000
+#define CMD_PID                0x2001
 
-#ifndef CAP_QUOTACTL
-#  define CAP_QUOTACTL 29
+#define CMD_CAP                0x4000
+#define CMD_FLAG       0x4004
+#define CMD_SECURE     0x4006
+
+#ifdef VC_ENABLE_API_LEGACY
+#  define CMD_OBSOLETE_CHOWN                   0x8000
+#  define CMD_OBSOLETE_DAC_OVERRIDE            0x8001
+#  define CMD_OBSOLETE_DAC_READ_SEARCH         0x8002
+#  define CMD_OBSOLETE_FOWNER                  0x8003
+#  define CMD_OBSOLETE_FSETID                  0x8004
+#  define CMD_OBSOLETE_KILL                    0x8005
+#  define CMD_OBSOLETE_SETGID                  0x8006
+#  define CMD_OBSOLETE_SETUID                  0x8007
+#  define CMD_OBSOLETE_SETPCAP                 0x8008
+#  define CMD_OBSOLETE_SYS_TTY_CONFIG          0x8009
+#  define CMD_OBSOLETE_LEASE                   0x800a
+#  define CMD_OBSOLETE_SYS_CHROOT              0x800b
+#  define CMD_OBSOLETE_X_LINUX_IMMUTABLE       0x800c
+#  define CMD_OBSOLETE_X_NET_BIND_SERVICE      0x800d
+#  define CMD_OBSOLETE_X_NET_BROADCAST         0x800e
+#  define CMD_OBSOLETE_X_NET_ADMIN             0x800f
+#  define CMD_OBSOLETE_X_NET_RAW               0x8010
+#  define CMD_OBSOLETE_X_IPC_LOCK              0x8011
+#  define CMD_OBSOLETE_X_IPC_OWNER             0x8012
+#  define CMD_OBSOLETE_X_SYS_MODULE            0x8013
+#  define CMD_OBSOLETE_X_SYS_RAWIO             0x8014
+#  define CMD_OBSOLETE_X_SYS_PACCT             0x8015
+#  define CMD_OBSOLETE_X_SYS_ADMIN             0x8016
+#  define CMD_OBSOLETE_X_SYS_BOOT              0x8017
+#  define CMD_OBSOLETE_X_SYS_NICE              0x8018
+#  define CMD_OBSOLETE_X_SYS_RESOURCE          0x8019
+#  define CMD_OBSOLETE_X_SYS_TIME              0x801a
+#  define CMD_OBSOLETE_X_MKNOD                 0x801b
+#  define CMD_OBSOLETE_X_QUOTACTL              0x801c
+
+static char const * const      OBSOLETE_MAPPING[] = {
+  // 0                  1                  2                  3
+  "CHOWN",           "DAC_OVERRIDE",     "DAC_READ_SEARCH", "FOWNER",
+  "FSETID",          "KILL",             "SETGID",          "SETUID",
+  "SETPCAP",         "SYS_TTY_CONFIG",   "LEASE",           "SYS_CHROOT",
+  "LINUX_IMMUTABLE", "NET_BIND_SERVICE", "NET_BROADCAST",   "NET_ADMIN",
+  "NET_RAW",         "IPC_LOCK",         "IPC_OWNER",       "SYS_MODULE",
+  "SYS_RAWIO",       "SYS_PACCT",        "SYS_ADMIN",       "SYS_BOOT",
+  "SYS_NICE",        "SYS_RESOURCE",     "SYS_TIME",        "MKNOD",
+  "QUOTACTL" };
+#endif
+
+struct option const
+CMDLINE_OPTIONS[] = {
+  { "help",     no_argument,  0, CMD_HELP },
+  { "version",  no_argument,  0, CMD_VERSION },
+  { "cap",        required_argument,  0, CMD_CAP },
+  { "flag",       required_argument,  0, CMD_FLAG },
+  { "secure",     no_argument,        0, CMD_SECURE },
+  { "show",       no_argument,        0, CMD_SHOW },
+  { "pid",        required_argument,  0, CMD_PID },
+#ifdef VC_ENABLE_API_LEGACY
+  { "CAP_CHOWN",              no_argument,  0, CMD_OBSOLETE_CHOWN },
+  { "CAP_DAC_OVERRIDE",       no_argument,  0, CMD_OBSOLETE_DAC_OVERRIDE },
+  { "CAP_DAC_READ_SEARCH",    no_argument,  0, CMD_OBSOLETE_DAC_READ_SEARCH },
+  { "CAP_FOWNER",             no_argument,  0, CMD_OBSOLETE_FOWNER },
+  { "CAP_FSETID",             no_argument,  0, CMD_OBSOLETE_FSETID },
+  { "CAP_KILL",               no_argument,  0, CMD_OBSOLETE_KILL },
+  { "CAP_SETGID",             no_argument,  0, CMD_OBSOLETE_SETGID },
+  { "CAP_SETUID",             no_argument,  0, CMD_OBSOLETE_SETUID },
+  { "CAP_SETPCAP",            no_argument,  0, CMD_OBSOLETE_SETPCAP },
+  { "CAP_SYS_TTY_CONFIG",     no_argument,  0, CMD_OBSOLETE_SYS_TTY_CONFIG },
+  { "CAP_LEASE",              no_argument,  0, CMD_OBSOLETE_LEASE },
+  { "CAP_SYS_CHROOT",         no_argument,  0, CMD_OBSOLETE_SYS_CHROOT },
+  { "--CAP_LINUX_IMMUTABLE",  no_argument,  0, CMD_OBSOLETE_X_LINUX_IMMUTABLE },
+  { "--CAP_NET_BIND_SERVICE", no_argument,  0, CMD_OBSOLETE_X_NET_BIND_SERVICE },
+  { "--CAP_NET_BROADCAST",    no_argument,  0, CMD_OBSOLETE_X_NET_BROADCAST },
+  { "--CAP_NET_ADMIN",        no_argument,  0, CMD_OBSOLETE_X_NET_ADMIN },
+  { "--CAP_NET_RAW",          no_argument,  0, CMD_OBSOLETE_X_NET_RAW },
+  { "--CAP_IPC_LOCK",         no_argument,  0, CMD_OBSOLETE_X_IPC_LOCK },
+  { "--CAP_IPC_OWNER",        no_argument,  0, CMD_OBSOLETE_X_IPC_OWNER },
+  { "--CAP_SYS_MODULE",       no_argument,  0, CMD_OBSOLETE_X_SYS_MODULE },
+  { "--CAP_SYS_RAWIO",        no_argument,  0, CMD_OBSOLETE_X_SYS_RAWIO },
+  { "--CAP_SYS_PACCT",        no_argument,  0, CMD_OBSOLETE_X_SYS_PACCT },
+  { "--CAP_SYS_ADMIN",        no_argument,  0, CMD_OBSOLETE_X_SYS_ADMIN },
+  { "--CAP_SYS_BOOT",         no_argument,  0, CMD_OBSOLETE_X_SYS_BOOT },
+  { "--CAP_SYS_NICE",         no_argument,  0, CMD_OBSOLETE_X_SYS_NICE },
+  { "--CAP_SYS_RESOURCE",     no_argument,  0, CMD_OBSOLETE_X_SYS_RESOURCE },
+  { "--CAP_SYS_TIME",         no_argument,  0, CMD_OBSOLETE_X_SYS_TIME },
+  { "--CAP_MKNOD",            no_argument,  0, CMD_OBSOLETE_X_MKNOD },
+  { "--CAP_QUOTACTL",         no_argument,  0, CMD_OBSOLETE_X_QUOTACTL }, 
 #endif
+  { 0,0,0,0 }
+};
 
-extern int capget (struct __user_cap_header_struct *, struct __user_cap_data_struct *);
-extern int capset (struct __user_cap_header_struct *, struct __user_cap_data_struct *);
+int wrapper_exit_code  = 255;
 
-static void usage()
+static void
+showHelp(int fd, char const *cmd, int res)
 {
-       fprintf (stderr,"reducecap version %s\n",VERSION);
-       fprintf (stderr,"reducecap [ options ] command argument\n");
-       exit (-1);
+  WRITE_MSG(fd, "Usage:\n  ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " [--show] [--secure] [--flag <flag>] [--cap <capability>] [--] <cmd> <args>*\n  ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " --show [--pid <pid>]\n\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+
+  exit(res);
 }
 
-static void reducecap_print(struct __user_cap_data_struct *user)
+static void
+showVersion()
 {
-       static const char *tb[]={
-               "CAP_CHOWN",
-               "CAP_DAC_OVERRIDE",
-               "CAP_DAC_READ_SEARCH",
-               "CAP_FOWNER",
-               "CAP_FSETID",
-               "CAP_KILL",
-               "CAP_SETGID",
-               "CAP_SETUID",
-               "CAP_SETPCAP",
-               "CAP_LINUX_IMMUTABLE",
-               "CAP_NET_BIND_SERVICE",
-               "CAP_NET_BROADCAST",
-               "CAP_NET_ADMIN",
-               "CAP_NET_RAW",
-               "CAP_IPC_LOCK",
-               "CAP_IPC_OWNER",
-               "CAP_SYS_MODULE",
-               "CAP_SYS_RAWIO",
-               "CAP_SYS_CHROOT",
-               "CAP_SYS_PTRACE",
-               "CAP_SYS_PACCT",
-               "CAP_SYS_ADMIN",
-               "CAP_SYS_BOOT",
-               "CAP_SYS_NICE",
-               "CAP_SYS_RESOURCE",
-               "CAP_SYS_TIME",
-               "CAP_SYS_TTY_CONFIG",
-               "CAP_MKNOD",
-               "CAP_LEASE",
-               "CAP_QUOTACTL",
-               NULL
-       };
-       int i;
-       printf ("%22s %9s %9s %9s\n","Capability","Effective","Permitted"
-               ,"Inheritable");
-       for (i=0; tb[i] != NULL; i++){
-               int bit = (1 << i);
-               printf ("%22s %9s %9s %9s\n"
-                       ,tb[i]
-                       ,(user->effective & bit) ? "X    " : " "
-                       ,(user->permitted & bit) ? "X    " : " "
-                       ,(user->inheritable & bit) ? "X    " : " ");
-       }
+  WRITE_MSG(1,
+           "reducecap " VERSION " -- starts programs with reduced capabilities\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2003,2004 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
 }
 
-static void reducecap_show()
+static void
+printReducecap(struct __user_cap_data_struct *user)
 {
-       struct __user_cap_header_struct header;
-       struct __user_cap_data_struct user;
-       header.version = _LINUX_CAPABILITY_VERSION;
-       header.pid = getpid();
-       if (capget(&header,&user)==-1){
-               perror ("capget");
-       }else{
-               reducecap_print (&user);
-       }
+  int i;
+  WRITE_MSG(1, "            Capability Effective  Permitted  Inheritable\n");
+
+  for (i=0;; ++i) {
+    size_t const       len  = 23 + 10*2 + 4+2;
+    char const *       text = vc_cap2text(i);
+    int                        bit  = 1<<i;
+    size_t             l;
+    char               buf[len];
+    if (text==0) break;
+
+    memset(buf, ' ', sizeof buf);
+    buf[len-1] = '\n';
+    l = MIN(strlen(text), 22);
+    memcpy(buf, text, l);
+    buf[23 + 10*0 + 4] = (user->effective   & bit) ? 'X' : ' ';
+    buf[23 + 10*1 + 4] = (user->permitted   & bit) ? 'X' : ' ';
+    buf[23 + 10*2 + 4] = (user->inheritable & bit) ? 'X' : ' ';
+    Vwrite(1, buf, len);
+  }
+}
+
+static void
+show(pid_t pid)
+{
+  struct __user_cap_header_struct header;
+  struct __user_cap_data_struct user;
+  header.version = _LINUX_CAPABILITY_VERSION;
+  header.pid     = pid;
+  if (capget(&header,&user)==-1){
+    perror ("reducecap: capget()");
+    exit(wrapper_exit_code);
+  }
+  
+  printReducecap(&user);
 }
 
+static uint32_t
+getCap(char const *cap)
+{
+  int          bit = vc_text2cap(cap);
+  if (bit!=0) {
+    WRITE_MSG(2, "Unknown capability '");
+    WRITE_STR(2, optarg);
+    WRITE_MSG(2, "'; try '--help' for more information\n");
+    exit(wrapper_exit_code);
+  }
 
+  return (1<<bit);
+}
 
 int main (int argc, char *argv[])
 {
-       int ret = -1;
-       unsigned long remove = 0;
-       int show = 0;
-       int flags = 0;
-       unsigned long secure = (1<<CAP_LINUX_IMMUTABLE)
-               |(1<<CAP_NET_BROADCAST)
-               |(1<<CAP_NET_ADMIN)
-               |(1<<CAP_NET_RAW)
-               |(1<<CAP_IPC_LOCK)
-               |(1<<CAP_IPC_OWNER)
-               |(1<<CAP_SYS_MODULE)
-               |(1<<CAP_SYS_RAWIO)
-               |(1<<CAP_SYS_PACCT)
-               |(1<<CAP_SYS_ADMIN)
-               |(1<<CAP_SYS_BOOT)
-               |(1<<CAP_SYS_NICE)
-               |(1<<CAP_SYS_RESOURCE)
-               |(1<<CAP_SYS_TIME)
-               |(1<<CAP_MKNOD)
-               |(1<<CAP_QUOTACTL);
-       int i;
-       for (i=1; i<argc; i++){
-               const char *arg = argv[i];
-               const char *opt = argv[i+1];
-               if (strcmp(arg,"--secure")==0){
-                       remove = secure;
-               }else if (strcmp(arg,"--show")==0){
-                       show = 1;
-               }else if (strcmp(arg,"--flag")==0){
-                       if (strcmp(opt,"lock")==0){
-                               flags |= 1;
-                       }else if (strcmp(opt,"sched")==0){
-                               flags |= 2;
-                       }else if (strcmp(opt,"nproc")==0){
-                               flags |= 4;
-                       }else if (strcmp(opt,"private")==0){
-                               flags |= 8;
-                       }else if (strcmp(opt,"hideinfo")==0){
-                               flags |= 32;
-                       }else{
-                               fprintf (stderr,"Unknown flag %s\n",opt);
-                       }
-                       i++;
-               }else if (arg[0] == '-' && arg[1] == '-'){
-                       static struct {
-                               const char *option;
-                               int bit;
-                       }tbcap[]={
-                               // The following capabilities are normally available
-                               // to vservers administrator, but are place for
-                               // completeness
-                               {"CHOWN",CAP_CHOWN},
-                               {"DAC_OVERRIDE",CAP_DAC_OVERRIDE},
-                               {"DAC_READ_SEARCH",CAP_DAC_READ_SEARCH},
-                               {"FOWNER",CAP_FOWNER},
-                               {"FSETID",CAP_FSETID},
-                               {"KILL",CAP_KILL},
-                               {"SETGID",CAP_SETGID},
-                               {"SETUID",CAP_SETUID},
-                               {"SETPCAP",CAP_SETPCAP},
-                               {"SYS_TTY_CONFIG",CAP_SYS_TTY_CONFIG},
-                               {"LEASE",CAP_LEASE},
-                               {"SYS_CHROOT",CAP_SYS_CHROOT},
-
-                               // Those capabilities are not normally available
-                               // to vservers because they are not needed and
-                               // may represent a security risk
-                               {"LINUX_IMMUTABLE",CAP_LINUX_IMMUTABLE},
-                               {"NET_BIND_SERVICE",CAP_NET_BIND_SERVICE},
-                               {"NET_BROADCAST",CAP_NET_BROADCAST},
-                               {"NET_ADMIN",   CAP_NET_ADMIN},
-                               {"NET_RAW",     CAP_NET_RAW},
-                               {"IPC_LOCK",    CAP_IPC_LOCK},
-                               {"IPC_OWNER",   CAP_IPC_OWNER},
-                               {"SYS_MODULE",CAP_SYS_MODULE},
-                               {"SYS_RAWIO",   CAP_SYS_RAWIO},
-                               {"SYS_PACCT",   CAP_SYS_PACCT},
-                               {"SYS_ADMIN",   CAP_SYS_ADMIN},
-                               {"SYS_BOOT",    CAP_SYS_BOOT},
-                               {"SYS_NICE",    CAP_SYS_NICE},
-                               {"SYS_RESOURCE",CAP_SYS_RESOURCE},
-                               {"SYS_TIME",    CAP_SYS_TIME},
-                               {"MKNOD",               CAP_MKNOD},
-                               {"QUOTACTL",          CAP_QUOTACTL},
-                               {NULL,0}
-                       };
-                       int j;
-                       arg += 2;
-                       if (*arg=='\0') {
-                         ++i;
-                         break;
-                       }
-                       if (strncasecmp(arg, "CAP_", 4)==0) arg += 4;
-                       for (j=0; tbcap[j].option != NULL; j++){
-                               if (strcasecmp(tbcap[j].option,arg)==0){
-                                       remove |= (1<<tbcap[j].bit);
-                                       break;
-                               }
-                       }
-                       if (tbcap[j].option == NULL){
-                               usage();
-                       }
-               }else{
-                       break;
-               }
-       }
-       if (i == argc){
-               if (show){
-                       reducecap_show();
-               }else{
-                       usage();
-               }
-       }else{
-               struct __user_cap_header_struct header;
-               struct __user_cap_data_struct user;
-               header.version = _LINUX_CAPABILITY_VERSION;
-               header.pid = 0;
-               if (capget(&header,&user)==-1){
-                       perror ("capget");
-               }else{
-                       if (show){
-                               reducecap_print (&user);
-                       }
-                       if (vc_new_s_context(-2,remove,flags)==-1){
-                               perror ("new_s_context -2");
-                       }else{
-                               fprintf (stderr,"Executing\n");
-                               execvp (argv[i],argv+i);
-                               fprintf (stderr,"Can't execute command %s\n",argv[i]);
-                       }
-               }
+  uint32_t             remove  = 0;
+  bool                 do_show = false;
+  uint32_t             flags   = 0;
+  pid_t                        pid     = 0;
+#ifdef VC_ENABLE_API_LEGACY
+  bool                 show_obsolete_warning = true;
+#endif    
+
+  while (1) {
+    int                c = getopt_long(argc, argv, "+", CMDLINE_OPTIONS, 0);
+    if (c==-1) break;
+
+#ifdef VC_ENABLE_API_LEGACY
+    if (c>=CMD_OBSOLETE_CHOWN && c<=CMD_OBSOLETE_X_QUOTACTL) {
+      if (show_obsolete_warning) {
+       WRITE_MSG(2, "reducecap: warning, obsolete CLI used\n");
+       show_obsolete_warning = false;
+      }
+
+      remove = getCap(OBSOLETE_MAPPING[c-CMD_OBSOLETE_CHOWN]);
+      continue;
+    }
+#endif    
+    switch (c) {
+      case CMD_HELP            :  showHelp(1, argv[0], 0);
+      case CMD_VERSION         :  showVersion();
+      case CMD_SECURE          :  remove  = vc_get_insecurebcaps(); break;
+      case CMD_SHOW            :  do_show = true;  break; 
+      case CMD_PID             :  pid     = atoi(optarg);   break;
+      case CMD_CAP             :  remove  = getCap(optarg); break;
+      case CMD_FLAG            : {
+       struct vc_err_listparser        err;
+       
+       flags = vc_list2cflag_compat(optarg, 0, &err);
+       if (err.ptr!=0) {
+         WRITE_MSG(2, "Unknown flag '");
+         Vwrite(2, err.ptr, err.len);
+         WRITE_MSG(2, "'\n");
+         exit(wrapper_exit_code);
        }
-       return ret;
-}
+       break;
+      }
+    }
+  }
+
+  if (!do_show && optind==argc) {
+    WRITE_MSG(2, "No command given; use '--help' for more information\n");
+    exit(wrapper_exit_code);
+  }
 
+  if (!do_show && pid!=0) {
+    WRITE_MSG(2, "A pid can be specified in '--show' mode only; use '--help' for more information\n");
+    exit(wrapper_exit_code);
+  }  
+
+  if (do_show && optind==argc)
+    show(pid);
+  else {
+    Evc_new_s_context(VC_SAMECTX, remove, flags);
+    if (do_show) show(pid);
+
+    WRITE_MSG(2, "Executing\n");
+    Eexecvp(argv[optind], argv+optind);
+  }
+
+  return EXIT_SUCCESS;
+}
diff --git a/src/rpm-fake-resolver.c b/src/rpm-fake-resolver.c
new file mode 100644 (file)
index 0000000..5420d5e
--- /dev/null
@@ -0,0 +1,311 @@
+// $Id: rpm-fake-resolver.c,v 1.15 2005/07/03 13:16:34 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+// Protocol:
+// 1. startup
+// 2. initialize (setuid, ctx-migrate, chroot, ...)
+// 3. send "." token to fd 3
+// 4. wait one character on fd 1
+// 5. process this character and consume further characters from fd 1 as far
+//    as needed
+// 6. go to 3) (or exit)
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "internal.h"
+#include "vserver.h"
+#include "util.h"
+
+#include <getopt.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <grp.h>
+#include <pwd.h>
+#include <fcntl.h>
+#include <errno.h>
+
+#define ENSC_WRAPPERS_PREFIX   "rpm-fake-resolver: "
+#define ENSC_WRAPPERS_VSERVER  1
+#define ENSC_WRAPPERS_UNISTD   1
+#define ENSC_WRAPPERS_IO       1
+#define ENSC_WRAPPERS_FCNTL    1
+#include <wrappers.h>
+
+#define MAX_RQSIZE     0x1000
+
+int wrapper_exit_code = 1;
+
+struct ArgInfo {
+    xid_t              ctx;
+    uid_t              uid;
+    gid_t              gid;
+    bool               do_fork;
+    bool               in_ctx;
+    char const *       pid_file;
+    char const *       chroot;
+    uint32_t           caps;
+    int                        flags;
+};
+
+static struct option const
+CMDLINE_OPTIONS[] = {
+  { "help",     no_argument,  0, 'h' },
+  { "version",  no_argument,  0, 'v' },
+  { 0,0,0,0 }
+};
+
+static void
+showHelp(int fd, char const *cmd, int res)
+{
+  WRITE_MSG(fd, "Usage:  ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " [-c <ctx>] [-u <uid>] [-g <gid>] [-r <chroot>] [-s] [-n]\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+  exit(res);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "rpm-fake-resolver " VERSION " -- NSS resovler for rpm-fake\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2003 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+
+inline static void
+parseArgs(struct ArgInfo *args, int argc, char *argv[])
+{
+  while (1) {
+    int                c = getopt_long(argc, argv, "F:C:c:u:g:r:ns", CMDLINE_OPTIONS, 0);
+    if (c==-1) break;
+
+    switch (c) {
+      case 'h'         :  showHelp(1, argv[0], 0);
+      case 'v'         :  showVersion();
+
+      case 'c'         :  args->ctx     = atoi(optarg); break;
+      case 'u'         :  args->uid     = atoi(optarg); break;
+      case 'g'         :  args->gid     = atoi(optarg); break;
+      case 'F'         :  args->flags   = atoi(optarg); break;
+      case 'C'         :  args->caps    = atoi(optarg); break;
+      case 'r'         :  args->chroot  = optarg;   break;
+      case 'n'         :  args->do_fork = false;    break;
+      case 's'         :  args->in_ctx  = true;     break;
+      default          :
+       WRITE_MSG(2, "Try '");
+       WRITE_STR(2, argv[0]);
+       WRITE_MSG(2, " --help\" for more information.\n");
+       exit(1);
+       break;
+    }
+  }
+
+  if (optind!=argc) {
+    WRITE_MSG(2, "No further options allowed; aborting ...\n");
+    exit(1);
+  }
+  
+  if (args->chroot==0) {
+    WRITE_MSG(2, "No chroot specified; aborting...\n");
+    exit(1);
+  }
+}
+
+static void
+sendResult(bool state, uint32_t res)
+{
+  if (state) {
+    static uint8_t     ONE = 1;
+    Ewrite(1, &ONE, sizeof ONE);
+  }
+  else {
+    static uint8_t     ZERO = 0;
+    Ewrite(1, &ZERO, sizeof ZERO);
+  }
+
+  Ewrite(1, &res, sizeof res);
+}
+
+static void
+do_getpwnam()
+{
+  uint32_t     len;
+
+  if (EreadAll(0, &len, sizeof len) &&
+      len<MAX_RQSIZE) {
+    char               buf[len+1];
+    struct passwd *    res = 0;
+    
+    if (EreadAll(0, buf, len)) {
+      buf[len] = '\0';
+      res = getpwnam(buf);
+    }
+    
+    if (res!=0) sendResult(true,  res->pw_uid);
+    else        sendResult(false, -1);
+  }
+  // TODO: logging
+}
+
+static void
+do_getgrnam()
+{
+  uint32_t     len;
+
+  if (EreadAll(0, &len, sizeof len) &&
+      len<MAX_RQSIZE) {
+    char               buf[len+1];
+    struct group *     res = 0;
+    
+    if (EreadAll(0, buf, len)) {
+      buf[len] = '\0';
+      res = getgrnam(buf);
+    }
+    
+    if (res!=0) sendResult(true,  res->gr_gid);
+    else        sendResult(false, -1);
+  }
+  // TODO: logging
+}
+
+static void
+do_closenss()
+{
+  uint8_t      what;
+
+  if (EreadAll(0, &what, sizeof what)) {
+    switch (what) {
+      case 'p' :  endpwent(); break;
+      case 'g' :  endgrent(); break;
+      default  :  break;
+    }
+  }
+}
+
+static void
+run()
+{
+  uint8_t      c;
+
+  while (EwriteAll(3, ".", 1),
+        EreadAll (0, &c, sizeof c)) {
+    switch (c) {
+      case 'P' :  do_getpwnam(); break;
+      case 'G' :  do_getgrnam(); break;
+      case 'Q' :  exit(0);
+      case 'C' :  do_closenss(); break;
+      case '.' :  Ewrite(1, ".", 1); break;
+      default  :  Ewrite(1, "?", 1); break;
+    }
+  }
+}
+
+static void
+daemonize(struct ArgInfo const UNUSED * args, int pid_fd)
+{
+  int          p[2];
+  pid_t                pid;
+  char         c;
+  
+  Epipe(p);
+  pid = Efork();
+  
+  if (pid!=0) {
+    if (pid_fd!=-1) {
+      char     buf[sizeof(id_t)*3 + 2];
+      size_t   l;
+
+      l = utilvserver_fmt_uint(buf, pid);
+      Ewrite(pid_fd, buf, l);
+      Ewrite(pid_fd, "\n", 1);
+    }
+    _exit(0);
+  }
+  Eclose(p[1]);
+  TEMP_FAILURE_RETRY(read(p[0], &c, 1));
+  Eclose(p[0]);
+}
+
+static void
+activateContext(xid_t xid, bool in_ctx,
+               uint32_t xid_caps, int xid_flags)
+{
+  if (in_ctx) {
+    struct vc_ctx_flags                flags = {
+      .flagword = 0,
+      .mask     = VC_VXF_STATE_SETUP,
+    };
+
+    Evc_set_cflags(xid, &flags);
+  }
+  else if (vc_isSupported(vcFEATURE_MIGRATE))
+      Evc_ctx_migrate(xid);
+  else {
+#ifdef VC_ENABLE_API_COMPAT
+    Evc_new_s_context(xid, xid_caps, xid_flags);
+#else
+    WRITE_MSG(2, ENSC_WRAPPERS_PREFIX "can not change context: migrate kernel feature missing and 'compat' API disabled\n");
+    exit(wrapper_exit_code);
+#endif
+  }
+}
+
+int main(int argc, char * argv[])
+{
+  struct ArgInfo       args = {
+    .ctx      = VC_DYNAMIC_XID,
+    .uid      = 99,
+    .gid      = 99,
+    .do_fork  = true,
+    .pid_file = 0,
+    .chroot   = 0,
+    .in_ctx   = false,
+    .flags    = S_CTX_INFO_LOCK,
+  };
+  int                  pid_fd = -1;
+
+#ifndef __dietlibc__
+#  warning  *** rpm-fake-resolver is built against glibc; please do not report errors before trying a dietlibc version ***
+  WRITE_MSG(2,
+           "***  rpm-fake-resolver was built with glibc;  please do  ***\n"
+           "***  not report errors before trying a dietlibc version. ***\n");
+#endif
+
+  parseArgs(&args, argc, argv);
+  if (args.pid_file && args.do_fork)
+    pid_fd = EopenD(args.pid_file, O_CREAT|O_WRONLY, 0644);
+  
+  if (args.chroot) Echroot(args.chroot);
+  Echdir("/");
+
+  activateContext(args.ctx, args.in_ctx, args.caps, args.flags);
+  Esetgroups(0, &args.gid);
+  Esetgid(args.gid);
+  Esetuid(args.uid);
+
+  if (args.do_fork) daemonize(&args, pid_fd);
+  if (pid_fd!=-1)   close(pid_fd);
+  run();
+}
diff --git a/src/rpm-fake.c b/src/rpm-fake.c
new file mode 100644 (file)
index 0000000..619dfad
--- /dev/null
@@ -0,0 +1,726 @@
+// $Id: rpm-fake.c,v 1.32 2005/07/03 12:26:28 ensc Exp $    --*- c++ -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+//  
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "pathconfig.h"
+#include "util.h"
+
+#include <lib/vserver.h>
+#include <lib/internal.h>
+#include <lib_internal/sys_clone.h>
+
+#include <sys/socket.h>
+#include <dlfcn.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <asm/unistd.h>
+#include <string.h>
+#include <stdbool.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdarg.h>
+#include <sys/mount.h>
+#include <linux/fs.h>
+#include <sched.h>
+#include <signal.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <sys/un.h>
+#include <fcntl.h>
+#include <pwd.h>
+#include <grp.h>
+
+
+  // from selinux.h
+  // FIXME: add configure autodetection and include <selinux.h> directly
+int rpm_execcon(unsigned int verified,
+               const char *filename,
+               char *const argv[], char *const envp[]);
+
+
+#define ENSC_WRAPPERS_PREFIX   "rpm-fake.so: "
+#define ENSC_WRAPPERS_VSERVER  1
+#define ENSC_WRAPPERS_UNISTD   1
+#include <wrappers.h>
+
+#undef _POSIX_SOURCE
+#include "capability-compat.h"
+
+#ifndef CLONE_NEWNS
+#  define CLONE_NEWNS  0x00020000
+#endif
+
+#define LIBNAME                "rpm-fake.so"
+#define PLATFORM_FILE  "/etc/rpm/platform"
+
+#define INIT(FILE,FUNC)        FUNC##_func = ((__typeof__(FUNC) *) (xdlsym(FILE, #FUNC)))
+#define DECLARE(FUNC)  static __typeof__(FUNC) *       FUNC##_func = 0
+
+#define DEBUG 1
+
+#define DBG_INIT       0x0001
+#define DBG_VARIABLES  0x0002
+#define DBG_RESOLVER   0x0004
+#define DBG_EXECV      0x0008
+#define DBG_ENV                0x0010
+#define DBG_VERBOSE0   0x8000
+#define DBG_VERBOSE1   (0x4000 | DBG_VERBOSE0)
+#define DBG_VERBOSE2   (0x2000 | DBG_VERBOSE1)
+
+int                    wrapper_exit_code = 255;
+
+static xid_t           ctx   = VC_NOCTX;
+static uint32_t                caps  = ~0;
+static int             flags = 0;
+static char const *    mnts  = 0;
+static char const *    root  = 0;
+static int             pw_sock   = -1;
+static int             sync_sock = -1;
+static unsigned int    debug_level = 0;
+
+static bool            is_initialized = false;
+
+  //DECLARE(rpm_execcon);
+  //DECLARE(execv);
+DECLARE(getpwnam);
+DECLARE(getgrnam);
+DECLARE(endpwent);
+DECLARE(endgrent);
+
+static void            initRPMFake() __attribute__((__constructor__));
+static void            exitRPMFake() __attribute__((__destructor__));
+
+static inline bool
+isDbgLevel(unsigned int level)
+{
+  return ((debug_level&level)==level);
+}
+
+static void *
+xdlsym(void *handle, const char *symbol)
+{
+  void *res = dlsym(handle, symbol);
+  if (res==0) {
+    char const *error = dlerror();
+    Vwrite(2, symbol, strlen(symbol));
+    Vwrite(2, ": ", 2);
+    Vwrite(2, error, strlen(error));
+    Vwrite(2, "\n", 2);
+
+    _exit(255);
+  }
+
+  return res;
+}
+
+static void
+showHelp()
+{
+  WRITE_MSG(1,
+           "Usage: LD_PRELOAD=" LIBNAME " <executable> <args>*\n\n"
+           LIBNAME " unterstands the following environment variables:\n"
+           "  $RPM_FAKE_RESOLVER     ...  program which does the NSS resolving (defaults\n"
+           "                              to " RESOLVER_PROG ")\n"
+           "  $RPM_FAKE_RESOLVER_UID ...  uid of the resolver program\n"
+           "  $RPM_FAKE_RESOLVER_GID ...  gid of the resolver program\n"
+           "  $RPM_FAKE_CTX          ...  vserver context which shall be used for resolver\n"
+           "                              and scriptlets\n"
+           "  $RPM_FAKE_CAP          ...  linux capability remove-mask for the context\n"
+           "  $RPM_FAKE_FLAGS        ...  vserver flags of the context\n"
+           "  $RPM_FAKE_CHROOT       ...  directory of the chroot environment\n"
+           "  $RPM_FAKE_NAMESPACE_MOUNTS\n"
+           "                          ... colon separated list of directories which will\n"
+            "                              umounted before scriptlet execution\n\n"
+           "  $RPM_FAKE_HELP          ... shows this message\n"
+           "  $RPM_FAKE_VERSION       ... shows the version of this program\n\n"
+           "  $RPM_FAKE_DEBUG         ... sets the debuglevel bitmask\n\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+  exit(0);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           LIBNAME " " VERSION " -- wrapper around rpm\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2003 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+static void
+unsetPreloadEnv()
+{
+  char                 *env = getenv("LD_PRELOAD");
+  char                 *pos;
+
+    // the const <-> non-const assignment is not an issue since the following
+    // modifying operations will not be executed in the const-case
+  env = env ? env : "";
+  pos = strstr(env, LIBNAME);
+
+  if (pos!=0) {
+    char       *end_pos = pos + sizeof(LIBNAME);
+    bool       is_end = (end_pos[-1]=='\0');
+    char       *start_pos;
+
+    end_pos[-1] = '\0';
+    start_pos   = strrchr(env, ':');
+    if (start_pos==0) start_pos = env;
+    else if (!is_end) ++start_pos;
+
+    if (is_end) *start_pos = '\0';
+    else        memmove(start_pos, end_pos, strlen(end_pos)+1);
+  }
+
+#ifdef DEBUG
+  if (isDbgLevel(DBG_VERBOSE1|DBG_VARIABLES)) {
+    WRITE_MSG(2, "env='");
+    WRITE_STR(2, env);
+    WRITE_MSG(2, "'\n");
+  }
+#endif
+
+  if (*env=='\0') unsetenv("LD_PRELOAD");
+}
+
+static void
+clearEnv()
+{
+  if (isDbgLevel(DBG_ENV)) WRITE_MSG(2, "clearEnv()\n");
+  
+  unsetenv("RPM_FAKE_S_CONTEXT_REV");
+  unsetenv("RPM_FAKE_S_CONTEXT_NR");
+  unsetenv("RPM_FAKE_CTX");
+  unsetenv("RPM_FAKE_FLAGS");
+  unsetenv("RPM_FAKE_CHROOT");
+  unsetenv("RPM_FAKE_NAMESPACE_MOUNTS");
+
+  unsetenv("RPM_FAKE_RESOLVER_GID");
+  unsetenv("RPM_FAKE_RESOLVER_UID");
+  unsetenv("RPM_FAKE_RESOLVER");    
+  unsetenv("RPM_FAKE_PWSOCKET");
+
+  unsetenv("RPM_FAKE_DEBUG");
+
+  unsetPreloadEnv();
+}
+
+static int
+getDefaultEnv(char const *key, int dflt)
+{
+  char         *env = getenv(key);
+  int          res;
+
+  if (env==0 || env[0]=='\0') res = dflt;
+  else                        res = atoi(env);
+
+  return res;
+}
+
+  /// \returns true iff we are in ctx after leaving this function
+static bool
+setupContext(xid_t xid, char const **xid_str)
+{
+  bool         res = false;
+  
+  if (vc_isSupported(vcFEATURE_MIGRATE)) {
+    xid_t      rc=VC_NOCTX;
+
+    if ((xid==VC_DYNAMIC_XID || !vc_is_dynamic_xid(xid)) &&
+       (rc=vc_ctx_create(xid))==VC_NOCTX &&
+       errno!=EEXIST) {
+      perror(ENSC_WRAPPERS_PREFIX "vc_create_context()");
+      exit(255);
+    }
+
+    if (rc!=VC_NOCTX) {
+      char                     buf[sizeof(xid_t)*3 + 128];
+      size_t                   l;
+      struct vc_ctx_caps       caps;
+      
+      strcpy(buf, "rpm-fake.so #");
+      l = utilvserver_fmt_uint(buf+sizeof("rpm-fake.so #")-1, getppid());
+      Evc_set_vhi_name(rc, vcVHI_CONTEXT, buf, sizeof("rpm-fake.so #")+l-1);
+
+      caps.ccaps =  0ull;
+      caps.cmask = ~0ull;
+      caps.bcaps = ~vc_get_insecurebcaps();
+      caps.bmask = ~0ull;
+      Evc_set_ccaps(rc, &caps);
+      
+       // context will be activated later...
+
+      xid = rc;
+      res = true;
+    }
+  }
+
+  if (xid==VC_DYNAMIC_XID)
+    *xid_str = 0;
+  else {
+    char               buf[sizeof(xid_t)*3 + 2];
+    size_t             l;
+    
+    l        = utilvserver_fmt_uint(buf, xid); buf[l] = '\0';
+    *xid_str = strdup(buf);
+  }
+  Ewrite(3, &xid, sizeof xid);
+  return res;
+}
+
+#if 0
+static void
+initPwSocket()
+{
+  char const * sock_name = getenv("RPM_FAKE_PWSOCKET");
+  if (sock_name!=0) {
+    int flag;
+    struct sockaddr_un addr = {
+      .sun_family = AF_UNIX,
+    };
+
+    strncpy(addr.sun_path, sock_name, sizeof(addr.sun_path)-1);
+    addr.sun_path[sizeof(addr.sun_path)-1]='\0';
+    
+    if ((pw_sock=socket(AF_UNIX, SOCK_STREAM, 0))==-1 ||
+       connect(pw_sock, (struct sockaddr *)(&addr), sizeof addr)==-1 ||
+       (flag=fcntl(pw_sock, F_GETFD))==-1 ||
+       fcntl(pw_sock, F_SETFD, flag | FD_CLOEXEC)==-1) {
+      perror(ENSC_WRAPPERS_PREFIX "error while initializing pw-socket");
+      exit(255);
+    }
+  }
+}
+#else
+static void
+initPwSocket()
+{
+  char const * resolver = getenv("RPM_FAKE_RESOLVER");
+  if (resolver==0) resolver=RESOLVER_PROG;
+  
+  if (resolver!=0 && *resolver!='\0') {
+    int                        res_sock[2];
+    int                        sync_pipe[2];
+    pid_t              pid;
+    char const *       uid=0;
+    char const *       gid=0;
+
+    uid=getenv("RPM_FAKE_RESOLVER_UID");
+    gid=getenv("RPM_FAKE_RESOLVER_GID");
+
+    if (socketpair(AF_UNIX, SOCK_STREAM, 0, res_sock)==-1 ||
+       pipe(sync_pipe)==-1 ||
+       fcntl(res_sock[0],  F_SETFD, FD_CLOEXEC)==-1 ||
+       fcntl(sync_pipe[0], F_SETFD, FD_CLOEXEC)==-1) {
+      perror(ENSC_WRAPPERS_PREFIX "failed to create/initialize resolver-socket or pipe");
+      exit(255);
+    }
+
+    pid = fork();
+    if (pid==-1) {
+      perror(ENSC_WRAPPERS_PREFIX "fork()");
+      exit(255);
+    }
+
+    if (pid==0) {
+      char const       *args[20];
+      char const       **ptr  = args;
+      char const       *env[] = { "HOME=/", "PATH=/bin:/usr/bin", 0 };
+      char const       *xid_str;
+      char             flag_str[ sizeof(flags)*3 + 2];
+      char             caps_str[ sizeof(caps)*3  + 2];
+
+      clearEnv();
+      
+      setsid();
+      dup2(res_sock[1],  0);
+      dup2(res_sock[1],  1);
+      if (sync_pipe[1]!=3) {
+       close(3);
+       dup2(sync_pipe[1], 3);
+       close(sync_pipe[1]);
+      }
+      close(res_sock[1]);
+       /* ... *socket[0] are marked as close-on-exec ...*/
+
+      flag_str[utilvserver_fmt_uint(flag_str, flags)] = '\0';
+      caps_str[utilvserver_fmt_uint(caps_str, caps)]  = '\0';
+
+      *ptr++ = resolver;
+      *ptr++ = "-F"; *ptr++ = flag_str;
+      *ptr++ = "-C"; *ptr++ = caps_str;
+      if (root)  { *ptr++ = "-r"; *ptr++ = ".";   }
+      if (uid)   { *ptr++ = "-u"; *ptr++ = uid;   }
+      if (gid)   { *ptr++ = "-g"; *ptr++ = gid;   }
+
+      if (root) Echdir(root);
+
+      if (setupContext(ctx, &xid_str)) { *ptr++ = "-s"; }
+      else if (xid_str)                { *ptr++ = "-c"; *ptr++ = xid_str; }
+      
+      *ptr++ = 0;
+      execve(resolver, (char **)args, (char **)env);
+      perror(ENSC_WRAPPERS_PREFIX "failed to exec resolver");
+      exit(255);
+    }
+    else {
+      uint8_t          c;
+
+      close(res_sock[1]);
+      close(sync_pipe[1]);
+      pw_sock   = res_sock[0];
+      sync_sock = sync_pipe[0];
+
+      if (read(sync_sock, &ctx, sizeof ctx)!=sizeof(ctx) ||
+         read(sync_sock, &c, 1)!=1 ||
+         write(pw_sock, ".", 1)!=1 ||
+         read(pw_sock, &c,   1)!=1 ||
+         c!='.') {
+       WRITE_MSG(2, ENSC_WRAPPERS_PREFIX "failed to initialize communication with resolver\n");
+       exit(255);
+      }
+
+      if (wait4(pid, 0, WNOHANG,0)==-1) {
+       WRITE_MSG(2, ENSC_WRAPPERS_PREFIX" unexpected initialization-error of resolver\n");
+       exit(255);
+      }
+    }
+  }
+}
+#endif
+
+static void
+reduceCapabilities()
+{
+  struct __user_cap_header_struct header;
+  struct __user_cap_data_struct user;
+  
+  header.version = _LINUX_CAPABILITY_VERSION;
+  header.pid     = 0;
+
+  if (capget(&header, &user)==-1) {
+    perror("capget()");
+    exit(wrapper_exit_code);
+  }
+
+  user.effective   &= ~(1<<CAP_MKNOD);
+  user.permitted   &= ~(1<<CAP_MKNOD);
+  user.inheritable &= ~(1<<CAP_MKNOD);
+
+  if (capset(&header, &user)==-1) {
+    perror("capset()");
+    exit(wrapper_exit_code);
+  }
+}
+
+static void
+initEnvironment()
+{
+  int          syscall_rev;
+  int          syscall_nr;
+  
+  if (is_initialized) return;
+
+  syscall_rev = getDefaultEnv("RPM_FAKE_S_CONTEXT_REV", 0);
+  syscall_nr  = getDefaultEnv("RPM_FAKE_S_CONTEXT_NR",  273);
+  
+#ifdef VC_ENABLE_API_LEGACY
+  {
+    extern void vc_init_internal_legacy(int ctx_rev, int ctx_number,
+                                       int ipv4_rev, int ipv4_number);
+  
+    vc_init_internal_legacy(syscall_rev, syscall_nr, 3, 274);
+  }
+#endif
+
+  ctx       = getDefaultEnv("RPM_FAKE_CTX",  VC_DYNAMIC_XID);
+  caps      = getDefaultEnv("RPM_FAKE_CAP",  ~0x3404040f);
+  flags     = getDefaultEnv("RPM_FAKE_FLAGS", 0);
+  root      = getenv("RPM_FAKE_CHROOT");
+  mnts      = getenv("RPM_FAKE_NAMESPACE_MOUNTS");
+  if (mnts && *mnts) mnts = strdup(mnts);
+  else               mnts = 0;
+
+#if DEBUG
+  if (isDbgLevel(DBG_VERBOSE1))
+    dprintf(2, "ctx=%u, caps=%016x, flags=%016x,\nroot='%s',\nmnts='%s'\n",
+           ctx, caps, flags, root, mnts);
+#endif
+  
+  is_initialized = true;
+}
+
+static void
+initSymbols()
+{
+    //INIT(RTLD_NEXT, rpm_execcon);
+    //INIT(RTLD_NEXT, execv);
+  INIT(RTLD_NEXT, getgrnam);
+  INIT(RTLD_NEXT, getpwnam);
+  INIT(RTLD_NEXT, endpwent);
+  INIT(RTLD_NEXT, endgrent);
+}
+
+void
+initRPMFake()
+{
+  if (getenv("RPM_FAKE_VERSION")) showVersion();
+  if (getenv("RPM_FAKE_HELP"))    showHelp();
+  
+  debug_level = getDefaultEnv("RPM_FAKE_DEBUG", 0);
+
+  if (isDbgLevel(DBG_INIT)) WRITE_MSG(2, ">>>>> initRPMFake <<<<<\n");
+  
+  reduceCapabilities();
+  initSymbols();
+  initEnvironment();
+  initPwSocket();
+
+#if 0
+  if (isDbgLevel(DBG_VARIABLES|DBG_VERBOSE2)) {
+    
+  }
+#endif
+}
+
+void
+exitRPMFake()
+{ 
+  if (isDbgLevel(DBG_INIT)) WRITE_MSG(2, ">>>>> exitRPMFake <<<<<\n");
+  if (pw_sock!=-1) {
+    uint8_t    c;
+    if (read(sync_sock, &c, 1)!=1) { /*...*/ }
+    if (write(pw_sock, "Q", 1)!=1) { /*...*/ }
+  }
+}
+
+
+  //============   the worker part   ===========
+
+
+static bool
+doPwStringRequest(uint32_t *result, char style, char const *name)
+{
+  uint32_t     len = strlen(name);
+  uint8_t      code;
+  uint8_t      c;
+
+  return (TEMP_FAILURE_RETRY(read (sync_sock, &c, 1))==1 &&
+         TEMP_FAILURE_RETRY(write(pw_sock, &style, 1))==1 &&
+         TEMP_FAILURE_RETRY(write(pw_sock, &len,   sizeof len))==sizeof(len) &&
+         TEMP_FAILURE_RETRY(write(pw_sock, name,   len))==(ssize_t)(len) &&
+         TEMP_FAILURE_RETRY(read (pw_sock, &code,  sizeof code))==sizeof(code) &&
+         TEMP_FAILURE_RETRY(read (pw_sock, result, sizeof *result))==sizeof(*result) &&
+         code!=0);
+}
+
+struct passwd *
+getpwnam(const char * name)
+{
+  if (pw_sock==-1) return getpwnam_func(name);
+  else {
+    uint32_t                   id;
+    static struct passwd       res = {
+      .pw_passwd = "*",
+      .pw_gid    = -1,
+      .pw_gecos  = "",
+      .pw_dir    = "/",
+      .pw_shell  = "/bin/false"
+    };
+
+    res.pw_name = (char *)(name);
+    if (!doPwStringRequest(&id, 'P', name)) return 0;
+    res.pw_uid = id;
+    
+    return &res;
+  }
+}
+
+struct group *
+getgrnam(const char * name)
+{
+  if (pw_sock==-1) return getgrnam_func(name);
+  else {
+    uint32_t                   id;
+    static struct group                res = {
+      .gr_passwd = "*",
+      .gr_mem    = 0
+    };
+
+    res.gr_name = (char *)(name);
+    if (!doPwStringRequest(&id, 'G', name)) return 0;
+    res.gr_gid = id;
+
+    return &res;
+  }
+}
+
+void
+endgrent()
+{
+  if (pw_sock==-1) endgrent_func();
+  TEMP_FAILURE_RETRY(write(pw_sock, "Cg", 2));
+}
+
+void
+endpwent()
+{
+  if (pw_sock==-1) endpwent_func();
+  TEMP_FAILURE_RETRY(write(pw_sock, "Cp", 2));
+}
+
+
+static int
+execvWorker(char const *path, char * const argv[], char * const envp[])
+{
+  int          res = -1;
+
+  if (vc_isSupported(vcFEATURE_MIGRATE))
+    res = vc_ctx_migrate(ctx);
+  else {
+#ifdef VC_ENABLE_API_COMPAT  
+    res = vc_new_s_context(ctx,caps,flags);
+#else
+    WRITE_MSG(2, ENSC_WRAPPERS_PREFIX "can not change context: migrate kernel feature missing and 'compat' API disabled\n");
+#endif
+  }
+
+  clearEnv();    
+    
+  if (res!=-1)
+    res=execve(path, argv, envp);
+
+  return res;
+}
+
+struct ExecvParams
+{
+    char const *       path;
+    char * const *     argv;
+    char * const *     envp;
+    char const *       mnts;
+};
+
+static int
+removeNamespaceMountsChild(struct ExecvParams const *params)
+{
+  char                 buf[strlen(params->mnts)+1], *ptr;
+
+  strcpy(buf, params->mnts);
+  ptr = strtok(buf, ":");
+  while (ptr) {
+    if (umount2(ptr, 0)==-1) {
+       // FIXME: What is the semantic for CLONE_NEWNS? Is it ok that mounts in
+       // chroots are visible only, when chroot is on /dev/root?
+       //
+       // For now, ignore any errors, but future versions should handle them.
+
+       //return -1;
+    }
+    ptr = strtok(0, ":");
+  }
+
+  return execvWorker(params->path, params->argv, params->envp);
+}
+
+static int
+removeNamespaceMounts(char const *path,
+                     char * const argv[], char * const envp[])
+{
+  if (mnts==0) return execvWorker(path, argv, envp);
+
+  {
+    int                                status;
+    pid_t                      p, pid;
+    struct ExecvParams         params;
+
+    params.path = path;
+    params.argv = argv;
+    params.envp = envp;
+    params.mnts = mnts;
+
+      // the rpmlib signal-handler is still active; use the default one to
+      // make wait4() working...
+    signal(SIGCHLD, SIG_DFL);
+
+#ifdef NDEBUG
+    pid = sys_clone(CLONE_NEWNS|SIGCHLD|CLONE_VFORK, 0);
+#else
+    pid = sys_clone(CLONE_NEWNS|SIGCHLD, 0);
+#endif
+
+    switch (pid) {
+      case -1  :  return -1;
+      case 0   :  _exit(removeNamespaceMountsChild(&params));
+      default  :  break;
+    }
+       
+    while ((p=wait4(pid, &status, 0,0))==-1 &&
+          (errno==EINTR || errno==EAGAIN)) ;
+
+    if (p==-1)   return -1;
+
+    if (WIFEXITED(status))   _exit(WEXITSTATUS(status));
+    if (WIFSIGNALED(status)) kill(getpid(), WTERMSIG(status));
+
+    return -1;
+  }
+}
+
+
+int
+execv(char const *path, char * const argv[])
+{
+  extern char **environ;
+
+  if (isDbgLevel(DBG_EXECV)) {
+    WRITE_MSG(2, "execv('");
+    WRITE_STR(2, path);
+    WRITE_MSG(2, "', ...)\n");
+  }
+
+  return removeNamespaceMounts(path, argv, environ);
+}
+
+int
+rpm_execcon(unsigned int UNUSED verified,
+           const char *filename,
+           char *const argv[], char *const envp[])
+{
+  if (isDbgLevel(DBG_EXECV)) {
+    WRITE_MSG(2, "rpm_execcon(..., '");
+    WRITE_STR(2, filename);
+    WRITE_MSG(2, "', ...)\n");
+  }
+
+  return removeNamespaceMounts(filename, argv, envp);
+}
+
+int
+is_selinux_enabled()
+{
+  return 0;
+}
diff --git a/src/save_ctxinfo.c b/src/save_ctxinfo.c
new file mode 100644 (file)
index 0000000..ed60c94
--- /dev/null
@@ -0,0 +1,97 @@
+// $Id: save_ctxinfo.c,v 1.16 2005/02/15 18:04:11 ensc Exp $    --*- c++ -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+// Saves current ctx + vserver-info into 'argv[1] + /run' which must be a dead
+// symlink
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "pathconfig.h"
+#include "vserver.h"
+#include "internal.h"
+#include "util.h"
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <limits.h>
+#include <errno.h>
+
+#define ENSC_WRAPPERS_PREFIX   "save_ctxinfo: "
+#define ENSC_WRAPPERS_VSERVER  1
+#define ENSC_WRAPPERS_UNISTD   1
+#define ENSC_WRAPPERS_FCNTL    1
+#include <wrappers.h>
+
+int    wrapper_exit_code = 255;
+
+inline static void
+checkParams(int argc, char UNUSED * argv[])
+{
+  if (argc<3) {
+    WRITE_MSG(2, "Usage:  save_ctxinfo <VSERVER_DIR> <cmd> <args>*\n");
+    exit(255);
+  }
+}
+
+int main(int argc, char *argv[])
+{
+  char         runfile[(checkParams(argc,argv),strlen(argv[1])) + sizeof(DEFAULT_PKGSTATEREVDIR "/99999")];
+  char         dstfile[PATH_MAX];
+  int          fd;
+  char         buf[sizeof(int)*3+2];
+  xid_t                ctx;
+  ssize_t      len;
+  ssize_t      len1 = strlen(argv[1]);
+
+  strcpy(runfile,      argv[1]);
+  strcpy(runfile+len1, "/run");
+
+  ctx=Evc_get_task_xid(0);
+
+  if (ctx==0) {
+    WRITE_MSG(2, "save_ctxinfo: Can not operate in context 0\n");
+    return 255;
+  }
+
+  if (reinterpret_cast(unsigned int)(ctx)>99999) {
+    WRITE_MSG(2, "save_ctxinfo: unexpected context\n");
+    return 255;
+  }
+
+  len          = EreadlinkD(runfile, dstfile, sizeof(dstfile)-1);
+  dstfile[len] = '\0';
+  len          = utilvserver_fmt_uint(buf, ctx);
+
+  fd = EopenD(dstfile, O_EXCL|O_CREAT|O_WRONLY, 0644);
+  if (write(fd, buf,     len) !=len  ||
+      write(fd, "\n",    1)   !=1) {
+    perror("save_ctxinfo: write()");
+    return -1;
+  }
+  Eclose(fd);
+
+  strcpy(runfile, DEFAULT_PKGSTATEREVDIR "/");
+  strncat(runfile, buf, len);
+  unlink(runfile);
+  EsymlinkD(argv[1], runfile);
+
+  Eexecv(argv[2], argv+2);
+}
diff --git a/src/secure-mount.c b/src/secure-mount.c
new file mode 100644 (file)
index 0000000..520a085
--- /dev/null
@@ -0,0 +1,706 @@
+// $Id: secure-mount.c,v 1.24 2005/03/24 12:45:06 ensc Exp $    --*- c++ -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+  // secure-mount <general mount(8) options> [--chroot]
+  //              [--mtab <mtabfile>] [--fstab <fstabfile>]
+  //
+  // Executes mount-operations under the current directory: it assumes sources
+  // in the current root-dir while destinations are expected in the chroot
+  // environment.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "util.h"
+#include "pathconfig.h"
+
+#include <lib/internal.h>
+
+#include <getopt.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <strings.h>
+#include <unistd.h>
+#include <stdbool.h>
+#include <sys/mount.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <sys/file.h>
+#include <linux/fs.h>
+#include <assert.h>
+#include <ctype.h>
+#include <sys/wait.h>
+#include <libgen.h>
+#include <signal.h>
+
+#define ENSC_WRAPPERS_FCNTL    1
+#define ENSC_WRAPPERS_UNISTD   1
+#include <wrappers.h>
+
+#define MNTPOINT       "/etc"
+
+typedef enum { rfsYES, rfsNO, rfsONLY }                RootFsOption;
+
+struct MountInfo {
+    char const *       src;
+    char const *       dst;
+    char const *       type;
+    unsigned long      flag;
+    unsigned long      xflag;
+    unsigned long      mask;
+    char *             data;
+};
+
+struct Options {
+    char const *       mtab;
+    char const *       fstab;
+    bool               do_chroot;
+    bool               ignore_mtab;
+    bool               mount_all;
+    RootFsOption       rootfs;
+
+    int                        cur_dir_fd;
+    int                        cur_rootdir_fd;
+};
+
+#define OPTION_BIND    1024
+#define OPTION_MOVE    1025
+#define OPTION_MTAB    1026
+#define OPTION_FSTAB   1027
+#define OPTION_CHROOT  1028
+#define OPTION_SECURE  1029
+#define OPTION_RBIND   1030
+#define OPTION_ROOTFS  1031
+
+#define XFLAG_NOAUTO   0x01
+
+static struct option const
+CMDLINE_OPTIONS[] = {
+  { "help",    no_argument,       0, 'h' },
+  { "version", no_argument,       0, 'v' },
+  { "bind",    no_argument,       0, OPTION_BIND },
+  { "move",    no_argument,       0, OPTION_MOVE },
+  { "mtab",    required_argument, 0, OPTION_MTAB },
+  { "fstab",   required_argument, 0, OPTION_FSTAB },
+  { "rootfs",  required_argument, 0, OPTION_ROOTFS },
+  { "chroot",  no_argument,      0, OPTION_CHROOT },
+  { "secure",  no_argument,       0, OPTION_SECURE },
+  { "rbind",   no_argument,       0, OPTION_RBIND },
+  { 0, 0, 0, 0 }
+};
+
+#ifndef MS_REC
+#  define MS_REC       0x4000
+#endif
+
+static struct FstabOption {
+    char const * const opt;
+    unsigned long const                flag;
+    unsigned long const                mask;
+    unsigned long const        xflag;
+    bool const                 is_dflt;
+} const FSTAB_OPTIONS[] = {
+  { "defaults",   0,             (MS_RDONLY|MS_NOSUID|MS_NODEV|MS_NOEXEC|
+                                 MS_SYNCHRONOUS), 0, false },
+  { "rbind",      MS_BIND|MS_REC, MS_BIND|MS_REC,  0, false },
+  { "bind",       MS_BIND,        MS_BIND,         0, false },
+  { "move",       MS_MOVE,        MS_MOVE,         0, false },
+  { "async",      0,              MS_SYNCHRONOUS,  0, false },
+  { "sync",       MS_SYNCHRONOUS, MS_SYNCHRONOUS,  0, false },
+  { "atime",      0,              MS_NOATIME,      0, false },
+  { "noatime",    MS_NOATIME,     MS_NOATIME,      0, false },
+  { "dev",        0,              MS_NODEV,        0, false },
+  { "nodev",      MS_NODEV,       MS_NODEV,        0, false },
+  { "exec",       0,              MS_NOEXEC,       0, false },
+  { "noexec",     MS_NOEXEC,      MS_NOEXEC,       0, false },
+  { "suid",       0,              MS_NOSUID,       0, false },
+  { "nosuid",     MS_NOSUID,      MS_NOSUID,       0, false },
+  { "ro",         MS_RDONLY,      MS_RDONLY,       0, false },
+  { "rw",         0,              MS_RDONLY,       0, false },
+  
+  { "remount",    MS_REMOUNT,     MS_REMOUNT,      0, false },
+  { "users",      MS_NOEXEC|MS_NOSUID|MS_NODEV,
+                  MS_NOEXEC|MS_NOSUID|MS_NODEV,    0, false },
+  { "mandlock",   MS_MANDLOCK,    MS_MANDLOCK,     0, false },
+  { "nodiratime", MS_NODIRATIME,  MS_NODIRATIME,   0, false },
+#ifdef MS_DIRSYNC  
+  { "dirsync",    MS_DIRSYNC,     MS_DIRSYNC,      0, false },
+#endif
+  { "_netdev",    0,              0,               0, false },
+  { "auto",       0,              0,               0, false },
+  { "noauto",     0,              0,               XFLAG_NOAUTO, false },
+  { "user",       0,              0,               0, false },
+  { "nouser",     0,              0,               0, false },
+};
+
+int                    wrapper_exit_code = 1;
+
+static void
+showHelp(int fd, char const *cmd, int res)
+{
+  VSERVER_DECLARE_CMD(cmd);
+  
+  WRITE_MSG(fd, "Usage:  ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " [--help] [--version] [--bind] [--move] [--rbind] [-t <type>] [--chroot]\n"
+           "            [--mtab <filename>] [--fstab <filename>] [--rootfs yes|no|only]\n"
+           "            [-n] -a|([-o <options>] [--] <src> <dst>)\n\n"
+           "Executes mount-operations under the current directory: it assumes sources in\n"
+           "the current root-dir while destinations are expected in the chroot environment.\n\n"
+           "For non-trivial mount-operations it uses the external 'mount' program which\n"
+           "can be overridden by the $MOUNT environment variable.\n\n"
+           "Options:\n"
+            "  --bind|move|rbind        ...  set the correspond flags; with this options\n"
+            "                                the mount will be executed internally without\n"
+            "                                calling an external mount program.\n"
+            "  -t <type>                ...  assume the given filesystem type\n"
+            "  -o <options>             ...  set additional options; see mount(2) for details\n"
+            "  -n                       ...  do not update the mtab-file\n"
+            "  --mtab <filename>        ...  use <filename> as an alternative mtab file\n"
+            "                                [default: /etc/mtab]\n"
+            "  --chroot                 ...  chroot into the current directory before\n"
+            "                                mounting the filesystem\n"
+            "  --fstab <filename>       ...  use <filename> as an alternative fstab file;\n"
+            "                                this option has an effect only with the '-a'\n"
+            "                                option [default: /etc/fstab]\n"
+           "  --rootfs yes|no|only     ...  specifies how to handle an entry for a rootfs\n"
+           "                                ('/') when processing an fstab file. 'yes' will\n"
+           "                                mount it among the other entries, 'only' will\n"
+           "                                mount only the rootfs entry, and 'no' will ignore\n"
+           "                                it and mount only the other entries [default: yes]\n"
+            "  -a                       ...  mount everything listed in the fstab-file\n\n"
+            "  <src>                    ...  the source-filesystem; this path is absolute\n"
+            "                                to the current root-filesystem. Only valid\n"
+            "                                without the '-a' option.\n"
+            "  <dst>                    ...  the destination mount-point; when used with\n"
+            "                                '--chroot', this path is relative to the current\n"
+            "                                directory. Only valid without the '-a' option\n\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+
+  exit(res);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "secure-mount " VERSION " -- secure mounting of directories\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2003 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+inline static bool
+isSameObject(struct stat const *lhs,
+            struct stat const *rhs)
+{
+  return (lhs->st_dev==rhs->st_dev &&
+         lhs->st_ino==rhs->st_ino);
+}
+
+static int
+fchroot(int fd)
+{
+  if (fchdir(fd)==-1 || chroot(".")==-1) return -1;
+  return 0;
+}
+
+static int
+writeX(int fd, void const *buf, size_t len)
+{
+  if ((size_t)(write(fd, buf, len))!=len) return -1;
+  return 0;
+}
+
+static int
+writeStrX(int fd, char const *str)
+{
+  return writeX(fd, str, strlen(str));
+}
+
+static inline char const *
+getType(struct MountInfo const *mnt)
+{
+  if (mnt->type==0)                         return "none";
+  else if (strncmp(mnt->type, "ext", 3)==0) return "ufs";
+  else                                      return mnt->type;
+}
+
+inline static void
+restoreRoot(struct Options const *opt)
+{
+  if (opt->do_chroot!=0 && fchroot(opt->cur_rootdir_fd)==-1) {
+    perror("secure-mount: fchdir(\"/\")");
+    WRITE_MSG(2, "Failed to restore root-directory; aborting\n");
+    exit(1);
+  }
+}
+
+static int
+updateMtab(struct MountInfo const *mnt, struct Options const *opt)
+{
+  int          res = -1;
+  int          fd;
+  assert(opt->mtab!=0);
+
+  if (opt->do_chroot && fchroot(opt->cur_dir_fd)==-1) {
+      perror("secure-mount: fchroot(\".\")");
+      return -1;
+  }
+
+  fd=open(opt->mtab, O_CREAT|O_APPEND|O_WRONLY, 0644);
+  
+  if (fd==-1) {
+    perror("secure-mount: open(<mtab>)");
+    goto err0;
+  }
+
+  if (flock(fd, LOCK_EX)==-1) {
+    perror("secure-mount: flock()");
+    goto err1;
+  }
+
+  if (writeStrX(fd, mnt->src)==-1 ||
+      writeStrX(fd, " ")==-1 ||
+      writeStrX(fd, mnt->dst)==-1 ||
+      writeStrX(fd, " ")==-1 ||
+      writeStrX(fd, getType(mnt))==-1 ||
+      writeStrX(fd, " ")==-1 ||
+      writeStrX(fd, mnt->data ? mnt->data : "defaults")==-1 ||
+      writeStrX(fd, " 0 0\n")==-1) {
+    perror("secure-mount: write()");
+    goto err1;
+  }
+
+  res = 0;
+
+  err1:        close(fd);
+  err0:
+  restoreRoot(opt);
+  return res;
+}
+
+static bool
+callExternalMount(struct MountInfo const *mnt)
+{
+  char const *         argv[10];
+  size_t       idx = 0;
+  pid_t                pid;
+  int          status;
+  char const * mount_prog = getenv("MOUNT");
+
+  if (mount_prog==0) mount_prog = MOUNT_PROG;
+
+  argv[idx++] = mount_prog;
+  argv[idx++] = "-n";
+  if      (mnt->flag & MS_BIND) argv[idx++] = "--bind";
+  else if (mnt->flag & MS_MOVE) argv[idx++] = "--move";
+
+  argv[idx++] = "-o";
+  if (mnt->data && *mnt->data &&
+      strcmp(mnt->data, "defaults")!=0) {
+    if (mnt->mask & MS_NODEV)
+      argv[idx++] = mnt->data;
+    else {
+      char *   tmp = alloca(strlen(mnt->data) + sizeof("nodev,"));
+      strcpy(tmp, "nodev,");
+      strcat(tmp, mnt->data);
+      argv[idx++] = tmp;
+    }
+  }
+  else
+    argv[idx++] = "nodev";
+
+  if (mnt->type) {
+    argv[idx++] = "-t";
+    argv[idx++] = mnt->type;
+  }
+
+  argv[idx++] = mnt->src;
+  argv[idx++] = ".";
+  argv[idx]   = 0;
+
+  pid = fork();
+  if (pid==-1) {
+    perror("secure-mount: fork()");
+    return false;
+  }
+
+  if (pid==0) {
+    execv(mount_prog, const_cast(char **)(argv));
+    PERROR_Q("secure-mount: execv", mount_prog);
+    exit(1);
+  }
+
+  if (wait4(pid, &status, 0, 0)==-1) {
+    perror("secure-mount: wait4()");
+    return false;
+  }
+
+  return (WIFEXITED(status)) && (WEXITSTATUS(status)==0);
+}
+
+inline static bool
+secureChdir(char const *dir, struct Options const *opt)
+{
+  int          dir_fd;
+  bool         res = false;
+  
+  if (opt->do_chroot!=0 && fchroot(opt->cur_dir_fd)==-1) {
+    perror("secure-mount: fchroot(\".\")");
+    return false;
+  }
+
+  if (chdir(dir)==-1) {
+    PERROR_Q("secure-mount: chdir", dir);
+    goto err;
+  }
+
+  dir_fd = open(".", O_RDONLY|O_DIRECTORY);
+  if (dir_fd==-1) {
+    perror("secure-mount: open(\".\")");
+    goto err;
+  }
+
+  restoreRoot(opt);
+  if (fchdir(dir_fd)==-1)
+    PERROR_Q("secure-mount: fchdir", dir);
+  else
+    res = true;
+  
+  close(dir_fd);
+  return res;
+
+  err:
+  restoreRoot(opt);
+  return false;
+}
+
+static bool
+mountSingle(struct MountInfo const *mnt, struct Options const *opt)
+{
+  assert(mnt->dst!=0);
+  
+  if (!secureChdir(mnt->dst, opt))
+    return false;
+
+  if (mnt->flag & (MS_BIND|MS_MOVE)) {
+    unsigned long      flag = mnt->flag;
+    if ((flag & MS_NODEV)==0) flag |= MS_NODEV;
+    
+    if (mount(mnt->src, ".",
+             mnt->type ? mnt->type : "",
+             flag,  mnt->data)==-1) {
+      perror("secure-mount: mount()");
+      return false;
+    }
+  }
+  else if (!callExternalMount(mnt))
+    return false;
+
+  if (!opt->ignore_mtab &&
+      updateMtab(mnt, opt)==-1) {
+    WRITE_MSG(2, "Failed to update mtab-file\n");
+      // no error
+  }
+  
+  return true;
+}
+
+static struct FstabOption const *
+searchOption(char const *opt, size_t len)
+{
+  struct FstabOption const *           i;
+  for (i=FSTAB_OPTIONS+0; i<FSTAB_OPTIONS+DIM_OF(FSTAB_OPTIONS); ++i)
+    if (strncmp(i->opt, opt, len)==0) return i;
+
+  return 0;
+}
+
+static bool
+transformOptionList(struct MountInfo *info, size_t UNUSED *col)
+{
+  char const *                 ptr = info->data;
+
+  do {
+    char const *               pos = strchr(ptr, ',');
+    struct FstabOption const * opt;
+    
+    if (pos==0) pos = ptr+strlen(ptr);
+    opt = searchOption(ptr, pos-ptr);
+
+    if (opt!=0) {
+      info->flag  &= ~opt->mask;
+      info->flag  |=  opt->flag;
+      info->mask  |=  opt->mask;
+      info->xflag |=  opt->xflag;
+    }
+
+    if (*pos!='\0')
+      ptr = pos+1;
+    else
+      ptr = pos;
+
+  } while (*ptr!='\0');
+
+  return true;
+}
+
+#define MOVE_TO_NEXT_FIELD(PTR,ALLOW_EOL)              \
+  while (!isspace(*PTR) && *PTR!='\0') ++PTR;          \
+  if (col) *col = buf-start_buf+1;                     \
+  if (!(ALLOW_EOL) && *PTR=='\0') return prFAIL;       \
+  *PTR++ = '\0';                                       \
+  while (isspace(*PTR)) ++PTR
+
+static enum {prDOIT, prFAIL, prIGNORE}
+  parseFstabLine(struct MountInfo *info, char *buf, size_t *col)
+{
+  char const * const   start_buf = buf;
+  size_t               err_col;
+
+  while (isspace(*buf)) ++buf;
+  if (*buf=='#' || *buf=='\0')  return prIGNORE;
+
+  info->src  = buf;
+  MOVE_TO_NEXT_FIELD(buf, false);
+  info->dst  = buf;
+  MOVE_TO_NEXT_FIELD(buf, false);
+  info->type = buf;
+  MOVE_TO_NEXT_FIELD(buf, false);
+  err_col    = buf-start_buf+1;
+  info->data = buf;
+  MOVE_TO_NEXT_FIELD(buf, true);
+
+  info->flag  = MS_NODEV;
+  info->mask  = 0;
+  info->xflag = 0;
+
+  if      (strcmp(info->type, "swap")  ==0) return prIGNORE;
+  else if (strcmp(info->type, "none")  ==0) info->type  = 0;
+  else if (strcmp(info->type, "devpts")==0) info->mask |= MS_NODEV;
+
+  if (col) *col = err_col;
+  if (!transformOptionList(info,col)) return prFAIL;
+  if (info->xflag & XFLAG_NOAUTO)     return prIGNORE;
+
+  return prDOIT;
+}
+
+#undef MOVE_TO_NEXT_FIELD
+
+static void
+showFstabPosition(int fd, char const *fname, size_t line_nr, size_t col_nr)
+{
+  char         buf[3*sizeof(line_nr)*2 + 4];
+  size_t       len = utilvserver_fmt_uint(buf+1, line_nr)+1;
+  
+  buf[0]     = ':';
+  buf[len++] = ':';
+  len += utilvserver_fmt_uint(buf+len, col_nr);
+  WRITE_STR(fd, fname);
+  Vwrite(fd, buf, len);
+}
+
+
+static bool
+mountFstab(struct Options const *opt)
+{
+  bool         res = false;
+  int          fd;
+  off_t                len;
+
+  assert(opt->fstab!=0);
+  fd = open(opt->fstab, O_RDONLY);
+  if (fd==-1) {
+    perror("secure-mount: open(<fstab>)");
+    goto err0;
+  }
+
+  len = lseek(fd, 0, SEEK_END); 
+  if (len==-1 ||
+      lseek(fd, 0, SEEK_SET)==-1) {
+    perror("secure-mount: lseek(<fstab>)");
+    goto err1;
+  }
+
+  {
+    char       buf[len+2];
+    char       *ptr, *ptrptr;
+    size_t     line_nr=0, col_nr;
+
+    if (read(fd, buf, len+1)!=len) {
+      perror("secure-mount: read()");
+      goto err1;
+    }
+    buf[len]   = '#';  // workaround for broken dietlibc strtok_r()
+                       // implementation
+    buf[len+1] = '\0';
+    ptrptr     = buf;
+
+    while ((ptr=strsep(&ptrptr, "\n")) != 0) {
+      struct MountInfo mnt;
+      ++line_nr;
+
+      switch (parseFstabLine(&mnt, ptr, &col_nr)) {
+       case prFAIL     :
+         showFstabPosition(2, opt->fstab, line_nr, col_nr);
+         WRITE_MSG(2, ": syntax error\n");
+         goto err1;
+
+       case prIGNORE   :  break;
+       case prDOIT     : {
+         bool          is_rootfs = (strcmp(mnt.dst, "/")==0);
+         Echdir("/");
+         if (( is_rootfs && opt->rootfs==rfsNO) ||
+             (!is_rootfs && opt->rootfs==rfsONLY)) { /* ignore the entry */ }
+         else if (!mountSingle(&mnt, opt)) {
+           showFstabPosition(2, opt->fstab, line_nr, 1);
+           WRITE_MSG(2, ": failed to mount fstab-entry\n");
+         }
+         break;
+       }
+       default         :
+         assert(false);
+      }
+    }
+  }
+
+  res = true;
+
+  err1: close(fd);
+  err0: return res;
+}
+
+static void
+initFDs(struct Options *opt)
+{
+  opt->cur_dir_fd     = Eopen(".", O_RDONLY|O_DIRECTORY, 0);
+  opt->cur_rootdir_fd = Eopen("/", O_RDONLY|O_DIRECTORY, 0);
+
+  Efcntl(opt->cur_dir_fd,     F_SETFD, FD_CLOEXEC);
+  Efcntl(opt->cur_rootdir_fd, F_SETFD, FD_CLOEXEC);
+}
+
+static RootFsOption
+parseRootFS(char const *str)
+{
+  if      (strcasecmp(str, "yes")==0)  return rfsYES;
+  else if (strcasecmp(str, "no")==0)   return rfsNO;
+  else if (strcasecmp(str, "only")==0) return rfsONLY;
+  else {
+    WRITE_MSG(2, "secure-mount: invalid option for '--rootfs': '");
+    WRITE_STR(2, str);
+    WRITE_MSG(2, "'\n");
+    exit(wrapper_exit_code);
+  }
+}
+
+int main(int argc, char *argv[])
+{
+  struct MountInfo     mnt = {
+    .src         = 0,
+    .dst         = 0,
+    .type        = 0,
+    .flag        = 0,
+    .xflag      = 0,
+    .data        = 0,
+  };
+
+  struct Options       opt = {
+    .mtab           = "/etc/mtab",
+    .fstab          = "/etc/fstab",
+    .do_chroot      = 0,
+    .ignore_mtab    = false,
+    .mount_all      = false,
+    .cur_dir_fd     = -1,
+    .cur_rootdir_fd = -1,
+    .rootfs         = rfsYES
+  };
+
+  while (1) {
+    int                c = getopt_long(argc, argv, "ht:nao:", CMDLINE_OPTIONS, 0);
+    if (c==-1) break;
+    
+    switch (c) {
+      case 'h'         :  showHelp(1, argv[0], 0);
+      case 'v'         :  showVersion();
+      case 't'         :  mnt.type = optarg;         break;
+      case 'n'         :  opt.ignore_mtab = true;    break;
+      case 'a'         :  opt.mount_all   = true;    break;
+      case 'o'         :  mnt.data        = optarg;  break;
+      case OPTION_RBIND        :  mnt.flag       |= MS_REC;  /*@fallthrough@*/
+      case OPTION_BIND :  mnt.flag       |= MS_BIND; break;
+      case OPTION_MOVE :  mnt.flag       |= MS_MOVE; break;
+      case OPTION_MTAB :  opt.mtab        = optarg;  break;
+      case OPTION_FSTAB        :  opt.fstab       = optarg;  break;
+      case OPTION_CHROOT:  opt.do_chroot   = true;    break;
+      case OPTION_ROOTFS:  opt.rootfs      = parseRootFS(optarg); break;
+      case OPTION_SECURE:
+       WRITE_MSG(2, "secure-mount: The '--secure' option is deprecated...\n");
+       break;
+      default          :
+       WRITE_MSG(2, "Try '");
+       WRITE_STR(2, argv[0]);
+       WRITE_MSG(2, " --help\" for more information.\n");
+       return EXIT_FAILURE;
+       break;
+    }
+  }
+
+
+  if (opt.mount_all && optind<argc) {
+    WRITE_MSG(2, "Can not specify <src> and '-a' at the same time\n");
+    return EXIT_FAILURE;
+  }
+
+  initFDs(&opt);
+  signal(SIGCHLD, SIG_DFL);
+  
+  if (opt.mount_all) {
+    if (!mountFstab(&opt)) return EXIT_FAILURE;
+    else                   return EXIT_SUCCESS;
+  }
+
+  if (optind+2!=argc) {
+    WRITE_MSG(2, "Invalid <src> <dst> pair specified\n");
+    return EXIT_FAILURE;
+  }
+
+  if (mnt.data) {
+    mnt.data = strdup(mnt.data);
+    if (!transformOptionList(&mnt, 0)) {
+      WRITE_MSG(2, "Invalid options specified\n");
+      return EXIT_FAILURE;
+    }
+  }
+    
+  mnt.src  = argv[optind++];
+  mnt.dst  = argv[optind++];
+
+  if (!mountSingle(&mnt, &opt)) return EXIT_FAILURE;
+    
+  return EXIT_SUCCESS;
+}
diff --git a/src/setattr.c b/src/setattr.c
new file mode 100644 (file)
index 0000000..9fadca3
--- /dev/null
@@ -0,0 +1,117 @@
+// $Id: setattr.c,v 1.11 2004/03/05 19:50:45 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "fstool.h"
+#include "util.h"
+
+#include <lib/fmt.h>
+#include <lib/vserver.h>
+#include <lib/vserver-internal.h>
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+
+struct option const
+CMDLINE_OPTIONS[] = {
+  { "help",     no_argument,  0, CMD_HELP },
+  { "version",  no_argument,  0, CMD_VERSION },
+  { "immu",        no_argument, 0, CMD_IMMU  },
+  { "iunlink",     no_argument, 0, CMD_IMMU  },
+  { "admin",       no_argument, 0, CMD_ADMIN },
+  { "watch",       no_argument, 0, CMD_WATCH },
+  { "hide",        no_argument, 0, CMD_HIDE  },
+  { "barrier",     no_argument, 0, CMD_BARRIER },
+  { "~iunlink",    no_argument, 0, CMD_UNSET_IMMU  },
+  { "!iunlink",    no_argument, 0, CMD_UNSET_IMMU  },
+  { "~immu",       no_argument, 0, CMD_UNSET_IMMU  },
+  { "!immu",       no_argument, 0, CMD_UNSET_IMMU  },
+  { "~admin",      no_argument, 0, CMD_UNSET_ADMIN },
+  { "!admin",      no_argument, 0, CMD_UNSET_ADMIN },
+  { "~watch",      no_argument, 0, CMD_UNSET_WATCH },
+  { "!watch",      no_argument, 0, CMD_UNSET_WATCH },
+  { "~hide",       no_argument, 0, CMD_UNSET_HIDE  },
+  { "!hide",       no_argument, 0, CMD_UNSET_HIDE  },
+  { "~barrier",    no_argument, 0, CMD_UNSET_BARRIER },
+  { "!barrier",    no_argument, 0, CMD_UNSET_BARRIER },
+  { "iunlink-but-not-immutable",   no_argument, 0, CMD_IMMUX },
+  { "~iunlink-but-not-immutable",  no_argument, 0, CMD_UNSET_IMMUX },
+  { "!iunlink-but-not-immutable",  no_argument, 0, CMD_UNSET_IMMUX },
+  { 0,0,0,0 }
+};
+
+char const             CMDLINE_OPTIONS_SHORT[] = "Rx";
+
+void
+showHelp(int fd, char const *cmd, int res)
+{
+  WRITE_MSG(fd, "Usage:  ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " [-Rx] [--[~](iunlink|admin|watch|hide|barrier|iunlink-but-not-immutable)]* [--] <file>+\n\n"
+           " Options:\n"
+           "   -R  ...  recurse through directories\n"
+           "   -x  ...  do not cross filesystems\n\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+  exit(res);
+}
+
+void
+showVersion()
+{
+  WRITE_MSG(1,
+           "setattr " VERSION " -- sets vserver specific file attributes\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2004 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+void
+fixupParams(struct Arguments * args, int argc)
+{
+  if (optind==argc) {
+    WRITE_MSG(2, "No filename given; use '--help' for more information\n");
+    exit(1);
+  }
+
+  args->do_display_dir = !args->do_recurse;
+  args->do_display_dot = true;
+}
+
+bool
+handleFile(char const *name, char const * display_name)
+{
+  int rc = vc_set_iattr(name,
+                       0,
+                       global_args->set_mask & ~global_args->del_mask,
+                       global_args->set_mask |  global_args->del_mask);
+
+  if (rc==-1) {
+    perror(display_name);
+    return false;
+  }
+  
+  return true;
+}
index c9d1055..94437dc 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: showattr.c,v 1.1.4.1 2003/11/18 22:31:10 ensc Exp $
+// $Id: showattr.c,v 1.11 2005/03/24 12:44:17 ensc Exp $
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 // based on showattr.cc by Jacques Gelinas
 #ifdef HAVE_CONFIG_H
 #  include <config.h>
 #endif
-#include "compat.h"
 
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
+#include "fstool.h"
+#include "util.h"
 
-#include "ext2fs.h"
+#include <lib/fmt.h>
+#include <lib/vserver.h>
+#include <lib/vserver-internal.h>
 
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <ctype.h>
 
-// Patch to help compile this utility on unpatched kernel source
-#ifndef EXT2_IMMUTABLE_FILE_FL
-       #define EXT2_IMMUTABLE_FILE_FL  0x00000010
-       #define EXT2_IMMUTABLE_LINK_FL  0x00008000
+struct option const
+CMDLINE_OPTIONS[] = {
+  { "help",     no_argument,  0, CMD_HELP },
+  { "version",  no_argument,  0, CMD_VERSION },
+#ifdef VC_ENABLE_API_LEGACY
+  { "legacy",    no_argument, 0, CMD_LEGACY },
 #endif
+  { 0,0,0,0 }
+};
 
-/*
-       Get the extended attributes of a file
-*/
-static int getext2flags (const char *fname, long *flags)
+char const             CMDLINE_OPTIONS_SHORT[] = "Radx";
+
+void
+showHelp(int fd, char const *cmd, int res)
 {
-       int ret = -1;
-       int fd = open (fname,O_RDONLY);
-       if (fd == -1){
-               fprintf (stderr,"Can't open file %s (%s)\n",fname,strerror(errno));
-       }else{
-               *flags = 0;
-               ret = ioctl (fd,EXT2_IOC_GETFLAGS,flags);
-               close (fd);
-               if (ret == -1){
-                       fprintf (stderr,"Can't get ext2 flags on file %s (%s)\n"
-                               ,fname,strerror(errno));
-               }
-       }
-       return ret;
+  WRITE_MSG(fd, "Usage:  ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " [-Radx] [--] <file>*\n\n"
+           " Options:\n"
+           "   -R  ...  recurse through directories\n"
+           "   -a  ...  display files starting with '.' also\n"
+           "   -d  ...  list directories like other files instead of listing\n"
+           "            their content\n"
+           "   -x  ...  do not cross filesystems\n\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+  exit(res);
 }
 
-/*
-       Set the extended attributes of a file
-*/
-static int setext2flags (const char *fname, long flags)
+void
+showVersion()
 {
-       int ret = -1;
-       int fd = open (fname,O_RDONLY);
-       if (fd == -1){
-               fprintf (stderr,"Can't open file %s (%s)\n",fname,strerror(errno));
-       }else{
-               ret = ioctl (fd,EXT2_IOC_SETFLAGS,&flags);
-               close (fd);
-               if (ret == -1){
-                       fprintf (stderr,"Can't set ext2 flags on file %s (%s)\n"
-                               ,fname,strerror(errno));
-               }
-       }
-       return ret;
+  WRITE_MSG(1,
+           "showattr " VERSION " -- shows vserver specific file attributes\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2004 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
 }
 
+void
+fixupParams(struct Arguments UNUSED * args, int UNUSED argc)
+{
+}
 
-int main (int argc, char *argv[])
+static bool
+getFlags(char const *name, uint32_t *flags, uint32_t *mask)
 {
-       int ret = -1;
-       if (argc <= 1){
-               fprintf (stderr
-                       ,"showattr file ...\n"
-                        "\n"
-                        "Presents extended file attribute.\n"
-                        "\n"
-                        "setattr --immutable --immulink file ...\n"
-                        "\n"
-                        "Sets the extended file attributes.\n"
-                        "\n"
-                        "These utilities exist as an interim until lsattr and\n"
-                        "chattr are updated.\n"
-                       );
-       }else if (strstr(argv[0],"showattr")!=NULL){
-               int i;
-               for (i=1; i<argc; i++){
-                       long flags;
-                       ret = getext2flags (argv[i],&flags);
-                       if (ret == -1){
-                               break;
-                       }else{
-                               printf ("%s\t%08lx\n",argv[i],flags);
-                       }
-               }
-       }else if (strstr(argv[0],"setattr")!=NULL){
-               long flags = 0;
-               int  i;
-               ret = 0;
-               for (i=1; i<argc; i++){
-                       const char *arg = argv[i];
-                       if (strncmp(arg,"--",2)==0){
-                               if (strcmp(arg,"--immutable")==0){
-                                       flags |= EXT2_IMMUTABLE_FILE_FL;
-                               }else if (strcmp(arg,"--immulink")==0){
-                                       flags |= EXT2_IMMUTABLE_LINK_FL;
-                               }else{
-                                       fprintf (stderr,"Invalid option %s\n",arg);
-                                       ret = -1;
-                                       break;
-                               }
-                       }else{
-                               ret = setext2flags (arg,flags);
-                               if (ret == -1){
-                                       break;
-                               }
-                       }
-               }
-       }
-       return ret;
+  xid_t                xid;
+  *mask = ~0;
+  
+  if (vc_get_iattr(name, &xid, flags, mask)==-1) {
+    perror("vc_get_iattr()");
+    return false;
+  }
+
+  return true;
 }
 
+bool
+handleFile(char const *name, char const *display_name)
+{
+  bool                 res = true;
+  char                 buf[40];
+  char                 *ptr = buf;
+  uint32_t             flags;
+  uint32_t             mask;
+
+  memset(buf, ' ', sizeof buf);
+
+  if (getFlags(name, &flags, &mask)) {
+      //                                     1       1       0       0
+      //                              fedcba9876543210fedcba9876543210
+    static char const  MARKER[33] = ".......x.....iub.............hwa";
+    int                i;
+    uint32_t           used_flags = (VC_IATTR_XID|VC_IATTR_ADMIN|
+                                     VC_IATTR_WATCH|VC_IATTR_HIDE|
+                                     VC_IATTR_BARRIER|VC_IATTR_IUNLINK|
+                                     VC_IATTR_IMMUTABLE);
+
+    for (i=0; i<32; ++i) {
+      if (used_flags & 1) {
+       if (!   (mask  & 1) ) *ptr++ = '-';
+       else if (flags & 1)   *ptr++ = toupper(MARKER[31-i]);
+       else                  *ptr++ = MARKER[31-i];
+      }
+
+      used_flags >>= 1;
+      flags      >>= 1;
+      mask       >>= 1;
+    }
+  }      
+  else {
+    memcpy(buf, "ERR   ", 7);
+    res = false;
+  }
+
+  Vwrite(1, buf, 8);
+  Vwrite(1, display_name, strlen(display_name));
+  Vwrite(1, "\n", 1);
+
+  return res;
+}
index df11f73..d2e11d0 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: showperm.c,v 1.1 2003/09/29 22:01:57 ensc Exp $
+// $Id: showperm.c,v 1.2 2003/09/30 20:16:53 ensc Exp $
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 // based on showperm.cc by Jacques Gelinas
 // along with this program; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
 #include <stdio.h>
 #include <string.h>
 #include <errno.h>
diff --git a/src/sigexec.c b/src/sigexec.c
new file mode 100644 (file)
index 0000000..2d4f082
--- /dev/null
@@ -0,0 +1,75 @@
+// $Id: sigexec.c,v 1.1 2004/05/11 18:32:58 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "util.h"
+#include <signal.h>
+#include <unistd.h>
+#include <errno.h>
+
+#define ENSC_WRAPPERS_PREFIX   "sigexec: "
+#define ENSC_WRAPPERS_UNISTD   1
+#include <wrappers.h>
+
+int    wrapper_exit_code = 255;
+
+static void
+showHelp(int fd, char const *cmd, int res)
+{
+  WRITE_MSG(fd, "Usage:  ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " [--] <cmd> <args>*\n\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+  exit(res);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "sigexec " VERSION " -- executes commands with defined sigmasks\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2004 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+
+int main(int argc, char *argv[])
+{
+  int          idx = 1;
+  
+  if (argc>=2) {
+    if (strcmp(argv[1], "--help")   ==0) showHelp(1, argv[0], 0);
+    if (strcmp(argv[1], "--version")==0) showVersion();
+    if (strcmp(argv[1], "--")       ==0) ++idx;
+  }
+
+  if (argc<idx+1) {
+    WRITE_MSG(2, "Not enough parameters; use '--help' for more information\n");
+   return wrapper_exit_code;
+  }
+
+  signal(SIGCHLD, SIG_DFL);
+
+  Eexecv(argv[idx], argv+idx);
+}
diff --git a/src/stack-start.h b/src/stack-start.h
new file mode 100644 (file)
index 0000000..c6a7253
--- /dev/null
@@ -0,0 +1,28 @@
+// $Id: stack-start.h,v 1.2 2004/02/20 17:02:20 ensc Exp $    --*- c++ -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_SRC_STACK_START_H
+#define H_UTIL_VSERVER_SRC_STACK_START_H
+
+#ifdef HAVE_GROWING_STACK
+#  define STACK_START(PTR)             (PTR)
+#else
+#  define STACK_START(PTR)             ((PTR)+sizeof(PTR)/sizeof(PTR[0])-1)
+#endif
+
+#endif //  H_UTIL_VSERVER_SRC_STACK_START_H
diff --git a/src/testsuite/Makefile-files b/src/testsuite/Makefile-files
new file mode 100644 (file)
index 0000000..bd6854e
--- /dev/null
@@ -0,0 +1,67 @@
+## $Id: Makefile-files,v 1.9 2005/03/17 14:54:18 ensc Exp $            --*- makefile -*--
+
+## Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+##  
+## 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; version 2 of the License.
+##  
+## 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.
+
+src_testsuite_check_active_PRGS =      src/testsuite/vunify-functest \
+                                       src/testsuite/chcontext-test \
+                                       src/testsuite/chbind-test
+src_testsuite_check_passive_PRGS =     src/testsuite/rpm-fake-test
+
+
+check_PROGRAMS +=                      $(src_testsuite_check_passive_PRGS) \
+                                       $(src_testsuite_check_active_PRGS)
+
+if ENSC_HAVE_C99_COMPILER
+src_testsuite_check_src_C99_SCRPTS =   src/testsuite/vunify-test.sh
+else
+src_testsuite_check_src_C99_SCRPTS =
+endif
+
+src_testsuite_check_src_SCRPTS =       $(src_testsuite_check_src_C99_SCRPTS)
+src_testsuite_check_gen_SCRPTS =
+
+check_SCRIPTS +=                       $(src_testsuite_check_src_SCRPTS) \
+                                       $(src_testsuite_check_gen_SCRPTS)
+
+TESTS +=                               $(src_testsuite_check_active_PRGS) \
+                                       $(src_testsuite_check_src_SCRPTS) \
+                                       $(src_testsuite_check_gen_SCRPTS)
+
+EXTRA_DIST +=                          $(src_testsuite_check_src_SCRPTS)
+
+
+src_testsuite_rpm_fake_test_SOURCES =  src/testsuite/rpm-fake-test.c
+
+src_testsuite_vunify_functest_SOURCES =        src/testsuite/vunify-functest.c
+src_testsuite_vunify_functest_LDADD =  $(LIBINTERNAL)
+src_testsuite_vunify_functest_CPPFLAGS=        $(AM_CPPFLAGS) $(src_testsuite_CPPFLAGS)
+
+
+src_testsuite_chcontext_test_SOURCES = src/testsuite/chcontext-test.c
+src_testsuite_chcontext_test_LDADD =   lib/libvserver.la $(LIBINTERNAL)
+
+
+src_testsuite_chbind_test_SOURCES =    src/testsuite/chbind-test.c
+src_testsuite_chbind_test_LDADD =      lib/libvserver.la
+
+
+src_testsuite_CPPFLAGS =               -I $(top_srcdir)/src -D ENSC_TESTSUITE
+
+
+clean-local:           clean-testsuite
+
+clean-testsuite:
+                       rm -rf src/testsuite/.libs src/testsuite/_libs
diff --git a/src/testsuite/chbind-test.c b/src/testsuite/chbind-test.c
new file mode 100644 (file)
index 0000000..187ad2e
--- /dev/null
@@ -0,0 +1,34 @@
+// $Id: chbind-test.c,v 1.1 2004/02/09 23:30:20 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#define ENSC_TESTSUITE 1
+#define main           fake_main
+#include "src/chbind.c"
+#undef main
+
+int main()
+{
+  if (0) fake_main(0,0);
+  test();
+
+  return EXIT_SUCCESS;
+}
diff --git a/src/testsuite/chcontext-test.c b/src/testsuite/chcontext-test.c
new file mode 100644 (file)
index 0000000..4a2db2c
--- /dev/null
@@ -0,0 +1,34 @@
+// $Id: chcontext-test.c,v 1.2 2004/02/09 23:40:45 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#define ENSC_TESTSUITE 1
+#define main           fake_main
+#include "src/chcontext.c"
+#undef main
+
+int main()
+{
+  if (0) fake_main(0,0);
+  test();
+
+  return EXIT_SUCCESS;
+}
diff --git a/src/testsuite/rpm-fake-test.c b/src/testsuite/rpm-fake-test.c
new file mode 100644 (file)
index 0000000..57054e1
--- /dev/null
@@ -0,0 +1,92 @@
+// $Id: rpm-fake-test.c,v 1.4 2004/02/27 18:57:28 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+
+#include <grp.h>
+#include <pwd.h>
+#include <unistd.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#define ENSC_WRAPPERS_UNISTD   1
+#include <wrappers.h>
+
+int wrapper_exit_code = 1;
+
+int main(/*int argc, char *argv[]*/)
+{
+  char         buf[1000];
+
+  while (true) {
+    char       *ptr = buf;
+    char       c;
+    do {
+      if (read(0, &c, 1)==0) break;
+      if (c=='\n') break;
+      *ptr++ = c;
+    } while (ptr<buf+sizeof(buf));
+    *ptr = '\0';
+    if (ptr==buf) break;
+
+    switch (buf[0]) {
+      case 'P'         : {
+       struct passwd   *pw;
+       
+       pw = getpwnam(buf+1);
+       printf("P(%s) = ", buf+1);
+       if (pw) printf("%u\n", pw->pw_uid);
+       else    printf("(null)\n");
+       
+       break;
+      }
+
+      case 'G'         : {
+       struct group    *gr;
+       
+       gr = getgrnam(buf+1);
+       printf("G(%s) = ", buf+1);
+       if (gr) printf("%u\n", gr->gr_gid);
+       else    printf("(null)\n");
+       
+       break;
+      }
+
+      case 'C'         :
+       switch (buf[1]) {
+         case 'g'      :  endgrent(); break;
+         case 'p'      :  endpwent(); break;
+         default       :  abort(); break;
+       }
+       break;
+
+      default          :
+       abort();
+    }
+  }
+
+  {
+    char *     cmd[] = { "/bin/grep", "^s_context", "/proc/self/status", 0 };
+    Eexecv(cmd[0], cmd);
+  }
+}
diff --git a/src/testsuite/vunify-functest.c b/src/testsuite/vunify-functest.c
new file mode 100644 (file)
index 0000000..965bb6f
--- /dev/null
@@ -0,0 +1,32 @@
+// $Id: vunify-functest.c,v 1.4 2004/02/17 19:51:21 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "lib_internal/matchlist.h"
+
+int wrapper_exit_code = 1;
+extern void    PathInfo_test();
+
+int main()
+{
+  PathInfo_test();
+  return 0;
+}
diff --git a/src/testsuite/vunify-test.sh b/src/testsuite/vunify-test.sh
new file mode 100755 (executable)
index 0000000..2392a74
--- /dev/null
@@ -0,0 +1,53 @@
+#! /bin/bash
+
+: ${srcdir=.}
+: ${tmptopdir=/var/tmp}
+
+set -e
+
+tmpdir=$(mktemp -d /var/tmp/vunify-test.XXXXXX)
+trap "rm -rf $tmpdir" EXIT
+
+function createFiles
+{
+    local base=$1
+    shift
+
+    local idx=0
+    local i
+    for i; do
+       echo $i >$base$idx
+       let ++idx
+    done
+}
+
+function createSet
+{
+    local base=$1
+
+    createFiles a/$base    a  b  c d
+    createFiles b/$base    a  b  c
+    createFiles c/$base    XX XX
+
+    ln a/${base}3  b/${base}3
+}
+
+pushd $tmpdir &>/dev/null
+    mkdir -p {a,b,c}{/etc/sysconfig,/usr/lib,/usr/local/lib/foobar,/var/run}
+
+    createSet etc/CFG
+    createSet etc/sysconfig/CFG
+
+    createSet usr/PROG
+    createSet usr/lib/PROG
+
+    createSet usr/local/lib/LOCAL
+    createSet usr/local/lib/foobar/LOCAL
+
+    createSet var/TEMP
+    createSet var/run/TEMP
+popd &>/dev/null
+
+
+$D ./src/vunify -n --manually $tmpdir/a '' $tmpdir/b '' >/dev/null
+$D ./src/vunify -n --manually $tmpdir/a '' $tmpdir/c '' >/dev/null
diff --git a/src/util.h b/src/util.h
new file mode 100644 (file)
index 0000000..b72d212
--- /dev/null
@@ -0,0 +1,24 @@
+// $Id: util.h,v 1.11 2004/02/26 13:10:15 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTILVSERVER_SRC_UTIL_H
+#define H_UTILVSERVER_SRC_UTIL_H
+
+#include <lib_internal/util.h>
+
+#endif //  H_UTILVSERVER_SRC_UTIL_H
diff --git a/src/vattribute.c b/src/vattribute.c
new file mode 100644 (file)
index 0000000..e06bf60
--- /dev/null
@@ -0,0 +1,198 @@
+// $Id: vattribute.c,v 1.14 2005/03/24 12:44:17 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "util.h"
+#include <lib/vserver.h>
+
+#include <getopt.h>
+#include <stdint.h>
+#include <errno.h>
+
+#define ENSC_WRAPPERS_PREFIX   "vattribute: "
+#define ENSC_WRAPPERS_VSERVER  1
+#define ENSC_WRAPPERS_UNISTD   1
+#include <wrappers.h>
+
+#define CMD_HELP               0x1000
+#define CMD_VERSION            0x1001
+#define CMD_XID                        0x2000
+#define CMD_SET                        0x2001
+#define CMD_CCAP               0x2002
+#define CMD_FLAG               0x2003
+#define CMD_SECURE             0x2004
+#define CMD_BCAP               0x2005
+
+int                    wrapper_exit_code = 1;
+
+struct option const
+CMDLINE_OPTIONS[] = {
+  { "help",       no_argument,       0, CMD_HELP },
+  { "version",    no_argument,       0, CMD_VERSION },
+  { "xid",        required_argument, 0, CMD_XID },
+  { "set",        no_argument,       0, CMD_SET },
+  { "ccap",       required_argument, 0, CMD_CCAP },
+  { "bcap",       required_argument, 0, CMD_BCAP },
+  { "flag",       required_argument, 0, CMD_FLAG },
+  { "secure",     no_argument,       0, CMD_SECURE },
+  {0,0,0,0}
+};
+
+struct Arguments {
+    xid_t              xid;
+    struct vc_ctx_flags flags;
+    struct vc_ctx_caps  caps;
+};
+
+static void
+showHelp(int fd, char const *cmd, int res)
+{
+  WRITE_MSG(fd, "Usage:\n    ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " --set [--xid <xid>] [--bcap [~!]<cap>] [--ccap [~!]<cap>] [--flag [~!]<flag>] [--secure] -- [<program> <args>*]\n"
+           "\n"
+           " --bcap <cap>   ...  system  capability to be added\n"
+           " --cap  <cap>   ...  context capability to be added\n"
+           "\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+
+  exit(res);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "vattribute " VERSION " -- sets attributes of vservers\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2004 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+static void
+parseFlags(char const *str, struct vc_ctx_flags *flags)
+{
+  struct vc_err_listparser     err;
+  int                          rc;
+
+  rc = vc_list2cflag(str,0, &err, flags);
+  
+  if (rc==-1) {
+    WRITE_MSG(2, "Unknown flag '");
+    Vwrite(2, err.ptr, err.len);
+    WRITE_MSG(2, "'\n");
+    exit(wrapper_exit_code);
+  }
+}
+
+static void
+parseBCaps(char const *str, struct vc_ctx_caps *caps)
+{
+  struct vc_err_listparser     err;
+  int                          rc;
+
+  rc = vc_list2bcap(str,0, &err, caps);
+  
+  if (rc==-1) {
+    WRITE_MSG(2, "Unknown bcap '");
+    Vwrite(2, err.ptr, err.len);
+    WRITE_MSG(2, "'\n");
+    exit(wrapper_exit_code);
+  }
+}
+
+static void
+parseCCaps(char const *str, struct vc_ctx_caps *caps)
+{
+  struct vc_err_listparser     err;
+  int                          rc;
+
+  rc = vc_list2ccap(str,0, &err, caps);
+  
+  if (rc==-1) {
+    WRITE_MSG(2, "Unknown ccap '");
+    Vwrite(2, err.ptr, err.len);
+    WRITE_MSG(2, "'\n");
+    exit(wrapper_exit_code);
+  }
+}
+
+static void
+parseSecure(struct vc_ctx_flags UNUSED * flags,
+           struct vc_ctx_caps  UNUSED * caps)
+{
+  caps->ccaps = ~vc_get_insecureccaps();
+  caps->cmask = ~0ull;
+  caps->bcaps = ~vc_get_insecurebcaps();
+  caps->bmask = ~0ull;
+
+    // TODO: generalize this
+  flags->flagword = VC_VXF_HIDE_NETIF;
+  flags->mask     = VC_VXF_HIDE_NETIF;
+}
+
+int main(int argc, char *argv[])
+{
+  struct Arguments             args = {
+    .xid   = VC_NOCTX,
+    .flags = { .flagword = 0, .mask = 0 },
+    .caps  = { .bcaps = 0, .bmask = 0,.ccaps = 0, .cmask = 0 },
+  };
+  
+  while (1) {
+    int                c = getopt_long(argc, argv, "+", CMDLINE_OPTIONS, 0);
+    if (c==-1) break;
+
+    switch (c) {
+      case CMD_HELP    :  showHelp(1, argv[0], 0);
+      case CMD_VERSION :  showVersion();
+      case CMD_SET     :  break; // default op currently
+      case CMD_XID     :  args.xid = Evc_xidopt2xid(optarg,true); break;
+      case CMD_FLAG    :  parseFlags(optarg, &args.flags);        break;
+      case CMD_CCAP    :  parseCCaps(optarg, &args.caps);         break;
+      case CMD_BCAP    :  parseBCaps(optarg, &args.caps);         break;
+      case CMD_SECURE  :  parseSecure(&args.flags, &args.caps);   break;
+      default          :
+       WRITE_MSG(2, "Try '");
+       WRITE_STR(2, argv[0]);
+       WRITE_MSG(2, " --help\" for more information.\n");
+       return 255;
+       break;
+    }
+  }
+
+  if (args.xid==VC_NOCTX) args.xid = Evc_get_task_xid(0);
+
+  if ((args.caps.cmask || args.caps.bmask) &&
+      vc_set_ccaps(args.xid, &args.caps)==-1)
+    perror(ENSC_WRAPPERS_PREFIX "vc_set_ccaps()");
+  else if (args.flags.mask &&
+          vc_set_cflags(args.xid, &args.flags)==-1)
+    perror(ENSC_WRAPPERS_PREFIX "vc_set_flags()");
+  else if (optind<argc)
+    EexecvpD(argv[optind], argv+optind);
+  else
+    return EXIT_SUCCESS;
+
+  return EXIT_FAILURE;
+}
diff --git a/src/vcontext.c b/src/vcontext.c
new file mode 100644 (file)
index 0000000..6d04174
--- /dev/null
@@ -0,0 +1,414 @@
+// $Id: vcontext.c,v 1.18 2005/04/28 18:08:12 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "util.h"
+#include "lib/internal.h"
+#include "lib_internal/jail.h"
+#include "lib_internal/sys_personality.h"
+
+#include <vserver.h>
+#include <getopt.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <assert.h>
+#include <signal.h>
+
+#include <linux/personality.h>
+
+#define ENSC_WRAPPERS_PREFIX   "vcontext: "
+#define ENSC_WRAPPERS_UNISTD   1
+#define ENSC_WRAPPERS_VSERVER  1
+#define ENSC_WRAPPERS_FCNTL    1
+#define ENSC_WRAPPERS_SOCKET   1
+#define ENSC_WRAPPERS_IOSOCK   1
+#include <wrappers.h>
+
+#define CMD_HELP               0x1000
+#define CMD_VERSION            0x1001
+#define CMD_XID                        0x4000
+#define CMD_CREATE             0x4001
+#define CMD_MIGRATE            0x4003
+#define CMD_INITPID            0x4002
+#define CMD_DISCONNECT         0x4004
+#define CMD_UID                        0x4005
+#define CMD_CHROOT             0x4006
+#define CMD_SILENT             0x4007
+#define CMD_SYNCSOCK           0x4008
+#define CMD_SYNCMSG            0x4009
+#define CMD_MIGRATESELF                0x400a
+#define CMD_ENDSETUP           0x400b
+#define CMD_SILENTEXIST                0x400c
+#define CMD_NAMESPACE          0x400d
+#define CMD_PERSTYPE           0x400e
+#define CMD_PERSFLAG           0x400f
+
+
+struct option const
+CMDLINE_OPTIONS[] = {
+  { "help",       no_argument,       0, CMD_HELP },
+  { "version",    no_argument,       0, CMD_VERSION },
+  { "ctx",        required_argument, 0, CMD_XID },
+  { "xid",        required_argument, 0, CMD_XID },
+  { "create",     no_argument,       0, CMD_CREATE },
+  { "migrate",    no_argument,       0, CMD_MIGRATE },
+  { "migrate-self", no_argument,               0, CMD_MIGRATESELF },
+  { "initpid",      no_argument,               0, CMD_INITPID },
+  { "endsetup",     no_argument,        0, CMD_ENDSETUP },
+  { "disconnect",   no_argument,       0, CMD_DISCONNECT },
+  { "silent",       no_argument,               0, CMD_SILENT },
+  { "silentexist",  no_argument,               0, CMD_SILENTEXIST },
+  { "uid",          required_argument,  0, CMD_UID },
+  { "chroot",       no_argument,               0, CMD_CHROOT },
+  { "namespace",    no_argument,               0, CMD_NAMESPACE },
+  { "syncsock",     required_argument,         0, CMD_SYNCSOCK },
+  { "syncmsg",      required_argument,         0, CMD_SYNCMSG },
+  { "personality-type",  required_argument, 0, CMD_PERSTYPE },
+  { "personality-flags", required_argument, 0, CMD_PERSFLAG },
+#if 1  
+  { "fakeinit",     no_argument,               0, CMD_INITPID },       // compatibility
+#endif  
+  { 0,0,0,0 },
+};
+
+struct Arguments {
+    bool               do_create;
+    bool               do_migrate;
+    bool               do_migrateself;
+    bool               do_disconnect;
+    bool               do_endsetup;
+    bool               is_initpid;
+    bool               is_silentexist;
+    bool               set_namespace;
+    uint_least32_t     personality_flags;
+    uint_least32_t     personality_type;
+    int                        verbosity;
+    bool               do_chroot;
+    uid_t              uid;
+    xid_t              xid;
+    char const *       sync_sock;
+    char const *       sync_msg;
+};
+
+int            wrapper_exit_code = 255;
+
+static void
+showHelp(int fd, char const *cmd, int res)
+{
+  WRITE_MSG(fd, "Usage:\n    ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " --create [--xid <xid>] <opts>* [--] <program> <args>*\n    ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " [(--migrate --xid <xid>)|--migrate-self]  <opts>* [--] <program> <args>*\n"
+           "\n"
+           "<opts> can be:\n"
+           "    --chroot        ...  chroot into current directory\n"
+           "    --namespace     ...  execute namespace management operations\n"
+           "    --uid <uid>     ...  change uid\n"
+           "    --initpid       ...  set current process as general process reaper\n"
+           "                         for ctx (possible for --migrate only)\n"
+           "    --endsetup      ...  clear the setup flag; usefully for migrate only\n"
+           "    --disconnect    ...  start program in background\n"
+           "    --personality-type <type>\n"
+           "                    ...  execute <program> in the given execution domain\n"
+           "    --personality-flags <flags>+\n"
+           "                    ...  set special flags for the given execution domain\n"
+           "    --silent        ...  be silent\n"
+           "    --silentexist   ...  be silent when context exists already; usefully\n"
+           "                         for '--create' only\n"
+           "    --syncsock <file-name>\n"
+           "                    ...  before executing the program, send a message\n"
+           "                         to the socket and wait until it closes.\n"
+           "                         <file-name> must be a SOCK_STREAM unix socket\n"
+           "    --syncmsg <message>\n"
+           "                    ...  use <message> as synchronization message; by\n"
+           "                         default, 'ok' will be used\n"
+           "\n"
+           "'vcontext --create' exits with code 254 iff the context exists already.\n"
+           "\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+
+  exit(res);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "vcontext " VERSION " -- manages the creation of security contexts\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2004 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+#include "context-sync.hc"
+
+static inline ALWAYSINLINE void
+tellContext(xid_t ctx, bool do_it)
+{
+  char         buf[sizeof(xid_t)*3+2];
+  size_t       l;
+
+  if (!do_it) return;
+
+  l = utilvserver_fmt_long(buf,ctx);
+
+  WRITE_MSG(1, "New security context is ");
+  Vwrite   (1, buf, l);
+  WRITE_MSG(1, "\n");
+}
+
+static int
+connectExternalSync(char const *filename)
+{
+  int                  fd;
+  struct sockaddr_un   addr;
+  
+  if (filename==0) return -1;
+
+  ENSC_INIT_UNIX_SOCK(addr, filename);
+
+  fd = Esocket(PF_UNIX, SOCK_STREAM, 0);
+  Econnect(fd, &addr, sizeof(addr));
+
+  return fd;
+}
+
+static void
+setFlags(struct Arguments const *args, xid_t xid)
+{
+  struct vc_ctx_flags  flags = { 0,0 };
+
+  if (args->is_initpid)
+    flags.mask |=  VC_VXF_STATE_INIT;
+
+  if (args->do_endsetup)
+    flags.mask |=  VC_VXF_STATE_SETUP;
+
+  if (flags.mask!=0) {
+    DPRINTF("set_flags: mask=%08llx, flag=%08llx\n", flags.mask, flags.flagword);
+    Evc_set_cflags(xid, &flags);
+  }
+}
+
+static void
+doExternalSync(int fd, char const *msg)
+{
+  char         c;
+  
+  if (fd==-1) return;
+
+  if (msg) EsendAll(fd, msg, strlen(msg));
+  Eshutdown(fd, SHUT_WR);
+
+  if (TEMP_FAILURE_RETRY(recv(fd, &c, 1, MSG_NOSIGNAL))!=0) {
+    WRITE_MSG(2, ENSC_WRAPPERS_PREFIX "unexpected external synchronization event\n");
+    exit(wrapper_exit_code);
+  }
+
+  Eclose(fd);
+}
+
+static inline ALWAYSINLINE int
+doit(struct Arguments const *args, char *argv[])
+{
+  int                  p[2][2];
+  pid_t                        pid = initSync(p, args->do_disconnect);
+  
+  if (pid==0) {
+    xid_t                      xid;
+    int                                ext_sync_fd = connectExternalSync(args->sync_sock);
+
+    doSyncStage0(p, args->do_disconnect);  
+    
+    if (args->do_create) {
+      xid = vc_ctx_create(args->xid);
+      if (xid==VC_NOCTX) {
+       switch (errno) {
+         case EEXIST   :
+           if (!args->is_silentexist)
+             perror(ENSC_WRAPPERS_PREFIX "vc_create_context()");
+           return 254;
+         default       :
+           perror(ENSC_WRAPPERS_PREFIX "vc_create_context()");
+           return wrapper_exit_code;
+       }
+      }
+      tellContext(xid, args->verbosity>=1);
+    }
+    else
+      xid = args->xid;
+
+    if (args->do_chroot) {
+      Echroot(".");
+      if (args->set_namespace) {
+       if (args->do_migrateself)  Evc_set_namespace();
+       else if (args->do_migrate) Evc_enter_namespace(xid);
+      }
+    }
+
+    setFlags(args, xid);
+
+    if (args->do_migrate && !args->do_migrateself)
+      Evc_ctx_migrate(xid);
+
+    if (args->uid!=(uid_t)(-1) && getuid()!=args->uid) {
+      Esetuid(args->uid);
+      if (getuid()!=args->uid) {
+       WRITE_MSG(2, ENSC_WRAPPERS_PREFIX "Something went wrong while changing the UID\n");
+       exit(wrapper_exit_code);
+      }
+    }
+
+    if (args->personality_type!=VC_BAD_PERSONALITY &&
+       sys_personality(args->personality_type | args->personality_flags)==-1) {
+      perror(ENSC_WRAPPERS_PREFIX "personality()");
+      exit(wrapper_exit_code);
+    }  
+
+    doExternalSync(ext_sync_fd, args->sync_msg);
+    doSyncStage1(p, args->do_disconnect);
+    DPRINTF("doit: pid=%u, ppid=%u\n", getpid(), getppid());
+    execvp (argv[optind],argv+optind);
+    doSyncStage2(p, args->do_disconnect);
+
+    PERROR_Q(ENSC_WRAPPERS_PREFIX "execvp", argv[optind]);
+    exit(wrapper_exit_code);
+  }
+
+  assert(args->do_disconnect);
+    
+  waitOnSync(pid, p, args->xid!=VC_DYNAMIC_XID && args->do_migrate);
+  return EXIT_SUCCESS;
+}
+
+static uint_least32_t
+parsePersonalityType(char const *str)
+{
+  uint_least32_t       res = vc_str2personalitytype(str, 0);
+  if (res==VC_BAD_PERSONALITY) {
+    WRITE_MSG(2, ENSC_WRAPPERS_PREFIX "bad personality type\n");
+    exit(wrapper_exit_code);
+  }
+
+  return res;
+}
+
+static uint_least32_t
+parsePersonalityFlags(char const *str)
+{
+  struct vc_err_listparser     err;
+  uint_least32_t               res;
+
+  if (vc_list2personalityflag(str, 0, &res, &err)==-1) {
+    WRITE_MSG(2, ENSC_WRAPPERS_PREFIX "bad personality flag '");
+    Vwrite(2, err.ptr, err.len);
+    WRITE_MSG(2, "'\n");
+    exit(wrapper_exit_code);
+  }
+
+  return res;
+}
+
+int main (int argc, char *argv[])
+{
+  struct Arguments             args = {
+    .do_create         = false,
+    .do_migrate        = false,
+    .do_migrateself    = false,
+    .do_disconnect     = false,
+    .do_endsetup       = false,
+    .is_initpid        = false,
+    .is_silentexist    = false,
+    .set_namespace     = false,
+    .verbosity         = 1,
+    .uid               = -1,
+    .xid               = VC_DYNAMIC_XID,
+    .personality_type  = VC_BAD_PERSONALITY,
+    .personality_flags = 0,
+    .sync_msg          = "ok",
+  };
+  
+  while (1) {
+    int                c = getopt_long(argc, argv, "+", CMDLINE_OPTIONS, 0);
+    if (c==-1) break;
+    
+    switch (c) {
+      case CMD_HELP            :  showHelp(1, argv[0], 0);
+      case CMD_VERSION         :  showVersion();
+      case CMD_CREATE          :  args.do_create      = true;   break;
+      case CMD_MIGRATE         :  args.do_migrate     = true;   break;
+      case CMD_DISCONNECT      :  args.do_disconnect  = true;   break;
+      case CMD_ENDSETUP                :  args.do_endsetup    = true;   break;
+      case CMD_INITPID         :  args.is_initpid     = true;   break;
+      case CMD_CHROOT          :  args.do_chroot      = true;   break;
+      case CMD_NAMESPACE       :  args.set_namespace  = true;   break;
+      case CMD_SILENTEXIST     :  args.is_silentexist = true;   break;
+      case CMD_SYNCSOCK                :  args.sync_sock      = optarg; break;
+      case CMD_SYNCMSG         :  args.sync_msg       = optarg; break;
+      case CMD_UID             :  args.uid = atol(optarg);      break;
+      case CMD_XID             :  args.xid = Evc_xidopt2xid(optarg,true); break;
+      case CMD_SILENT          :  --args.verbosity; break;
+      case CMD_PERSTYPE                :
+       args.personality_type   = parsePersonalityType(optarg);
+       break;
+      case CMD_PERSFLAG                :
+       args.personality_flags |= parsePersonalityFlags(optarg);
+       break;
+      case CMD_MIGRATESELF     :
+       args.do_migrate     = true;
+       args.do_migrateself = true;
+       break;
+
+      default          :
+       WRITE_MSG(2, "Try '");
+       WRITE_STR(2, argv[0]);
+       WRITE_MSG(2, " --help\" for more information.\n");
+       return wrapper_exit_code;
+       break;
+    }
+  }
+
+  signal(SIGCHLD, SIG_DFL);
+  
+  if (args.do_migrateself)
+    args.xid = Evc_get_task_xid(0);
+  
+  if (!args.do_create && !args.do_migrate)
+    WRITE_MSG(2, "Neither '--create' nor '--migrate specified; try '--help' for more information\n");
+  else if (args.do_create  &&  args.do_migrate)
+    WRITE_MSG(2, "Can not specify '--create' and '--migrate' at the same time; try '--help' for more information\n");
+  else if (!args.do_migrate && args.is_initpid)
+    WRITE_MSG(2, "'--initpid' is possible in combination with '--migrate' only\n");
+  else if (!args.do_create && args.xid==VC_DYNAMIC_XID)
+    WRITE_MSG(2, ENSC_WRAPPERS_PREFIX "Can not migrate to an unknown context\n");
+  else if (optind>=argc)
+    WRITE_MSG(2, "No command given; use '--help' for more information.\n");
+  else
+    return doit(&args, argv);
+
+  return wrapper_exit_code;
+}
diff --git a/src/vcopy-init.hc b/src/vcopy-init.hc
new file mode 100644 (file)
index 0000000..51db03a
--- /dev/null
@@ -0,0 +1,115 @@
+// $Id: vcopy-init.hc,v 1.3 2005/03/18 00:24:27 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+static void
+createSkeleton(char const *name)
+{
+  char const * app_dir;
+
+  app_dir = vc_getVserverAppDir(name, vcCFG_AUTO, "vunify");
+  if (app_dir==0 &&
+      vc_createSkeleton(name, vcCFG_AUTO, vcSKEL_FILESYSTEM|vcSKEL_PKGMGMT)==-1) {
+    perror("vc_createSkeleton()");
+    exit(1);
+  }
+
+  if (app_dir==0) {
+    app_dir = vc_getVserverAppDir(name, vcCFG_AUTO, "");
+      
+    PathInfo           path = {
+      .d = app_dir,
+      .l = strlen(app_dir),
+    };
+    PathInfo           rhs_path = {
+      .d = "vunify",
+      .l = sizeof("vunify")-1
+    };
+      
+    char               p_buf[ENSC_PI_APPSZ(path, rhs_path)];
+    PathInfo_append(&path, &rhs_path, p_buf);
+
+    Emkdir(path.d, 0755);
+  }
+
+  free(const_cast(char *)(app_dir));
+}
+
+
+static void
+initModeManually(int argc, char *argv[])
+{
+  int          count=argc/2;
+
+  if (count!=2) {
+    WRITE_MSG(2, "Bad arguments; try '--help' for more information\n");
+    exit(1);
+  }
+
+  MatchList_initManually(&global_info.dst_list, 0, strdup(argv[0]), argv[1]);
+  MatchList_initManually(&global_info.src_list, 0, strdup(argv[2]), argv[3]);
+}
+
+
+static void
+initModeVserver(int argc, char *argv[])
+{
+  int                                  count       = argc;
+  struct MatchVserverInfo              src_vserver = {
+    .name        = argv[1],
+    .use_pkgmgmt = true
+  };
+
+  if (!MatchVserverInfo_init(&src_vserver)) {
+    WRITE_MSG(2, "Failed to initialize unification for source-vserver\n");
+    exit(1);
+  }
+
+  if (count!=2) {
+    WRITE_MSG(2, "Bad arguments; try '--help' for more information\n");
+    exit(1);
+  }
+
+  if (!MatchList_initByVserver(&global_info.src_list, &src_vserver)) {
+    WRITE_MSG(2, "unification not configured for source vserver\n");
+    exit(1);
+  }
+
+  MatchVserverInfo_free(&src_vserver);
+
+
+  
+  struct MatchVserverInfo              dst_vserver = {
+    .name        = argv[0],
+    .use_pkgmgmt = false
+  };
+  
+  if (!global_args->is_strict)
+    createSkeleton(dst_vserver.name);
+  
+  if (!MatchVserverInfo_init(&dst_vserver)) {
+    WRITE_MSG(2, "Failed to initialize unification for destination-vserver\n");
+    exit(1);
+  }
+  
+  if (!MatchList_initByVserver(&global_info.dst_list, &dst_vserver)) {
+    WRITE_MSG(2, "unification not configured for destination vserver\n");
+    exit(1);
+  }
+
+  MatchVserverInfo_free(&dst_vserver);
+}
diff --git a/src/vcopy.c b/src/vcopy.c
new file mode 100644 (file)
index 0000000..5fd8638
--- /dev/null
@@ -0,0 +1,308 @@
+// $Id: vcopy.c,v 1.5 2005/03/24 12:44:17 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "util.h"
+#include "vserver.h"
+
+#include "lib_internal/matchlist.h"
+#include "lib_internal/unify.h"
+
+#include <unistd.h>
+#include <getopt.h>
+#include <fcntl.h>
+#include <dirent.h>
+#include <errno.h>
+#include <assert.h>
+#include <utime.h>
+#include <libgen.h>
+#include <sys/param.h>
+
+#define ENSC_WRAPPERS_UNISTD   1
+#define ENSC_WRAPPERS_FCNTL    1
+#define ENSC_WRAPPERS_DIRENT   1
+#include <wrappers.h>
+
+#define CMD_HELP               0x8000
+#define CMD_VERSION            0x8001
+#define CMD_MANUALLY           0x8002
+#define CMD_STRICT             0x8003
+
+struct WalkdownInfo
+{
+    PathInfo                           state;
+    struct MatchList                   dst_list;
+    struct MatchList                   src_list;
+};
+
+struct Arguments {
+    enum {mdMANUALLY, mdVSERVER}       mode;
+    bool                               do_dry_run;
+    unsigned int                       verbosity;
+    bool                               local_fs;
+    bool                               is_strict;
+};
+
+static struct WalkdownInfo             global_info;
+static struct Arguments const *                global_args;
+
+int wrapper_exit_code = 1;
+
+struct option const
+CMDLINE_OPTIONS[] = {
+  { "help",     no_argument,  0, CMD_HELP },
+  { "version",  no_argument,  0, CMD_VERSION },
+  { "manually", no_argument,  0, CMD_MANUALLY },
+  { "strict",   no_argument,  0, CMD_STRICT },
+  { 0,0,0,0 }
+};
+
+typedef enum { opUNIFY, opCOPY, opDIR, opSKIP }        Operation;
+
+static void
+showHelp(int fd, char const *cmd, int res)
+{
+  VSERVER_DECLARE_CMD(cmd);
+  
+  WRITE_MSG(fd, "Usage:\n  ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " [-nv] [--strict] <dst-vserver> <src-vserver>\n    or\n  ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " --manually [-nvx] [--] <dst-path> <dst-excludelist> <src-path> <src-excludelist>\n\n"
+           "  --manually      ...  unify generic paths; excludelists must be generated\n"
+           "                       manually\n"
+           "  --strict        ...  require an existing vserver configuration for dst-vserver;\n"
+           "                       by default, a base skeleton will be created but manual\n"
+           "                       configuration wil be still needed to make the new vserver work\n"
+           "  -n              ...  do not modify anything; just show what there will be\n"
+           "                       done (in combination with '-v')\n"
+           "  -v              ...  verbose mode\n"
+           "  -x              ...  do not cross filesystems; this is valid in manual\n"
+           "                       mode only and will be ignored for vserver unification\n\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+  exit(res);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "vcopy " VERSION " -- copies directories and vserver files\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2003,2004 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+int Global_getVerbosity() {
+  return global_args->verbosity;
+}
+
+bool Global_doRenew() {
+  return true;
+}
+
+#include "vserver-visitdir.hc"
+
+static Operation
+checkDirEntry(PathInfo const *path, struct stat const *st)
+{
+  struct WalkdownInfo const * const    info = &global_info;
+  MatchType                            res;
+
+  // when marked as 'skip' in the first excludelist already, we do not need to
+  // visit the second one since it could not change that.
+  res=MatchList_compare(&info->dst_list, path->d);
+  if (res!=stSKIP) {
+    MatchType          tmp = MatchList_compare(&info->src_list, path->d);
+
+    // stINCLUDE gets overridden by stEXCLUDE+stSKIP, and stEXCLUDE by stSKIP.
+    // Using the MAX() macro is a hack but it works
+    res=MAX(res,tmp);
+  }
+
+  // non-skipped directories are marked as opDIR
+  if (res!=stSKIP && S_ISDIR(st->st_mode))
+    return opDIR;
+
+  // non-skipped symlinks will be copied always
+  if (res!=stSKIP && S_ISLNK(st->st_mode))
+    return opCOPY;
+
+  // skipped files or non regular files (character/block devices) will be skipped
+  // always
+  if (res==stSKIP || !S_ISREG(st->st_mode))
+    return opSKIP;
+
+  switch (res) {
+    case stINCLUDE     :  return opUNIFY;
+    case stEXCLUDE     :  return opCOPY;
+    case stSKIP                :  assert(false); // already handled above
+    default            :  assert(false); abort();
+  }
+}
+
+static bool
+doit(Operation op,
+     PathInfo const *dst_path,
+     PathInfo const *src_path, struct stat const *exp_stat,
+     PathInfo const *show_path)
+{
+#if 0
+  struct stat          st;
+
+  if (lstat(dst_path->d, &st)!=-1) {
+    if (global_args->do_keep &&
+       (!S_ISDIR(exp_stat->st_mode) || S_ISDIR(st.st_mode))) {
+      // when keep-mode is enable and, do nothing
+      if (global_args->do_dry_run || global_args->verbosity>1) {
+       WRITE_MSG(1, "keeping  '");
+       write(1, show_path->d, show_path->l);
+       WRITE_MSG(1, "'\n");
+      }
+      return true;
+    }
+    
+  }
+#endif
+  
+  if (global_args->do_dry_run || global_args->verbosity>1) {
+    if      (op==opUNIFY)   WRITE_MSG(1, "linking  '");
+    else if (op==opCOPY)    WRITE_MSG(1, "copying  '");
+    else if (op==opDIR)     WRITE_MSG(1, "creating '");
+    else if (op==opSKIP)    WRITE_MSG(1, "skipping '");
+    else { assert(false); abort(); }
+
+    Vwrite(1, show_path->d, show_path->l);
+    WRITE_MSG(1, "'\n");
+  }
+
+  return (global_args->do_dry_run ||
+         ( op==opSKIP) ||
+         ( op==opUNIFY && Unify_unify(src_path->d, exp_stat, dst_path->d, false)) ||
+         ((op==opCOPY  ||
+           op==opDIR)  && Unify_copy (src_path->d, exp_stat, dst_path->d)));
+}
+     
+static uint64_t
+visitDirEntry(struct dirent const *ent)
+{
+  char const *                 dirname  = ent->d_name;
+  if (isDotfile(dirname)) return 0;
+
+  uint64_t                     res      = 1;
+  PathInfo                     src_path = global_info.state;
+  PathInfo                     src_d_path = {
+    .d = dirname,
+    .l = strlen(dirname)
+  };
+  char                         path_buf[ENSC_PI_APPSZ(src_path, src_d_path)];
+  struct stat                  f_stat = { .st_dev = 0 };
+
+  PathInfo_append(&src_path, &src_d_path, path_buf);
+
+  
+  if (lstat(dirname, &f_stat)==-1)
+    perror("lstat()");
+  else {
+    Operation          op       = checkDirEntry(&src_path, &f_stat);
+    PathInfo           dst_path = global_info.dst_list.root;
+    char               dst_path_buf[ENSC_PI_APPSZ(dst_path, src_path)];
+
+    PathInfo_append(&dst_path, &src_path, dst_path_buf);
+    if (!doit(op, &dst_path, &src_d_path, &f_stat, &src_path))
+      perror(src_path.d);
+    else if (op==opDIR) {
+      res = visitDir(dirname, &f_stat);
+      if (!global_args->do_dry_run &&
+         !Unify_setTime(dst_path.d, &f_stat))
+       perror("utime()");
+    }
+    else
+      res = 0;
+  }
+
+  return res;
+}
+
+#include "vcopy-init.hc"
+
+int main(int argc, char *argv[])
+{
+  struct Arguments     args = {
+    .mode              =  mdVSERVER,
+    .do_dry_run                =  false,
+    .verbosity         =  0,
+    .local_fs          =  false,
+  };
+  uint64_t             res;
+
+  global_args = &args;
+  while (1) {
+    int                c = getopt_long(argc, argv, "nvcx",
+                               CMDLINE_OPTIONS, 0);
+    if (c==-1) break;
+
+    switch (c) {
+      case CMD_HELP            :  showHelp(1, argv[0], 0);
+      case CMD_VERSION         :  showVersion();
+      case CMD_MANUALLY                :  args.mode       = mdMANUALLY; break;
+      case CMD_STRICT          :  args.is_strict  = true; break;
+      case 'n'                 :  args.do_dry_run = true; break;
+      case 'x'                 :  args.local_fs   = true; break;
+      case 'v'                 :  ++args.verbosity;       break;
+      default          :
+       WRITE_MSG(2, "Try '");
+       WRITE_STR(2, argv[0]);
+       WRITE_MSG(2, " --help\" for more information.\n");
+       return EXIT_FAILURE;
+       break;
+    }
+  }
+
+  if (argc==optind) {
+    WRITE_MSG(2, "No directory/vserver given\n");
+    return EXIT_FAILURE;
+  }
+
+  switch (args.mode) {
+    case mdMANUALLY    :  initModeManually(argc-optind, argv+optind); break;
+    case mdVSERVER     :  initModeVserver (argc-optind, argv+optind); break;
+    default            :  assert(false); return EXIT_FAILURE;
+  }
+
+  if (global_args->verbosity>3)
+    WRITE_MSG(1, "Starting to traverse directories...\n");
+
+  Echdir(global_info.src_list.root.d);
+  res = visitDir("/", 0);
+  
+#ifndef NDEBUG
+  {
+    MatchList_destroy(&global_info.dst_list);
+    MatchList_destroy(&global_info.src_list);
+  }
+#endif
+
+  return res>0 ? 1 : 0;
+}
index beea0c5..4e5b09e 100644 (file)
+// $Id: vdlimit.c,v 1.2 2005/03/24 12:44:17 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
 
-/*
-** (c) 2004 Herbert Poetzl
-**
-** V0.01       ioctls so far
-**
-*/
 
 #ifdef HAVE_CONFIG_H
 #  include <config.h>
 #endif
-#include "compat.h"
 
-#include <stdio.h>
-#include <stdlib.h>
+#include "util.h"
+#include <lib_internal/sys_clone.h>
+#include <lib/internal.h>
+
+#include <vserver.h>
+
+#include <getopt.h>
+#include <libgen.h>
 #include <errno.h>
-#include <string.h>
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <stdint.h>
-
-#include "vserver.h"
-#include "vserver-internal.h"
-#include "dlimit.h"
-#ifdef O_LARGEFILE
-#define OPEN_FLAGS (O_RDONLY|O_NONBLOCK|O_LARGEFILE)
-#else
-#define OPEN_FLAGS (O_RDONLY|O_NONBLOCK)
-#endif
+#include <signal.h>
+#include <sched.h>
 
-static char    err_flag = 0;
+#define ENSC_WRAPPERS_PREFIX   "vdlimit: "
+#define ENSC_WRAPPERS_UNISTD   1
+#define ENSC_WRAPPERS_VSERVER  1
+#include <wrappers.h>
 
-static char    opt_xid = 0;
-static char    opt_flag = 0;
-static char    opt_vers = 0;
-static char    opt_add = 0;
-static char    opt_rem = 0;
-static char    opt_set = 0;
+#define CMD_HELP               0x1000
+#define CMD_VERSION            0x1001
 
-static char *  cmd_name = NULL;
-static char *  set_arg = NULL;
+int            wrapper_exit_code  =  1;
 
-static int     num_xid = 0;
-static int     num_flag = 0;
+struct option const
+CMDLINE_OPTIONS[] = {
+  { "help",       no_argument,       0, CMD_HELP },
+  { "version",    no_argument,       0, CMD_VERSION },
+  { "xid",        required_argument, 0, 'x' },
+  { "set",        required_argument, 0, 's' },
+  { "remove",     no_argument,       0, 'd' },
+  { "flags",      required_argument, 0, 'f' },
+  {0,0,0,0}
+};
 
+static void
+showHelp(int fd, char const *cmd)
+{
+  WRITE_MSG(fd, "Usage: ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " --xid <xid> [--flags <flags>] (--set <limit>=<value>|--remove) <mount point>\n"
+           "\n"
+           "    --set|-s <limit>=<value>  ...  set <limit> to <value>, where limit is \n"
+           "                           one of: space_used, space_total, inodes_used,\n"
+           "                           inodes_total, reserved\n"
+           "    --remove|-d       ...  removes the disk limit for <xid> from <mount point>\n"
+           "\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
 
+  exit(0);
+}
 
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "vdlimit " VERSION " -- manages disk limits\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2005 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
 
-#define OPTIONS "+hadf:x:S:V"
+static void
+setDlimit(char const *filename, xid_t xid, uint32_t flags, struct vc_ctx_dlimit const *limit)
+{
+  if (vc_get_dlimit(filename, xid, flags, 0) == -1) {
+    if (vc_add_dlimit(filename, xid, flags) == -1) {
+      perror(ENSC_WRAPPERS_PREFIX "vc_add_dlimit()");
+      exit(wrapper_exit_code);
+    }
+  }
+  if (vc_set_dlimit(filename, xid, flags, limit) == -1) {
+    perror(ENSC_WRAPPERS_PREFIX "vc_set_dlimit()");
+    exit(wrapper_exit_code);
+  }
+}
 
-int    main(int argc, char *argv[])
+static void
+remDlimit(char const *filename, xid_t xid, uint32_t flags)
 {
-        extern int optind;
-        extern char *optarg;
-        char c, errflg = 0;
-       int r;
-
-
-        cmd_name = argv[0];
-        while ((c = getopt(argc, argv, OPTIONS)) != EOF) {
-            switch (c) {
-            case 'h':
-                fprintf(stderr,
-                    "This is %s " VERSION "\n"
-                    "options are:\n"
-                    "-h        print this help message\n"
-                    "-a        add dlimit entry\n"
-                    "-d        delete dlimit entry\n"
-                    "-f <num>  flag value in decimal\n"
-                    "-x <num>  context id\n"
-                    "-S <vals> current/limit values\n"
-                    "-V        verify interface version\n"
-                    "--        end of options\n"
-                    ,cmd_name);
-                exit(0);
-                break;
-            case 'a':
-                opt_add = 1;
-                break;
-            case 'd':
-                opt_rem = 1;
-                break;
-            case 'f':
-                num_flag = atol(optarg);
-                opt_flag = 1;
-                break;
-            case 'x':
-                num_xid = atol(optarg);
-                opt_xid = 1;
-                break;
-            case 'S':
-                set_arg = optarg;
-                opt_set = 1;
-                break;
-            case 'V':
-                opt_vers = 1;
-                break;
-            case '?':
-            default:
-                errflg++;
-                break;
-            }
-        }
-        if (errflg) {
-            fprintf(stderr, 
-                "Usage: %s -[" OPTIONS "] <path> ...\n"
-                "%s -h for help.\n",
-                cmd_name, cmd_name);
-            exit(2);
-        }
-
-       if (opt_vers) {
-           r = vc_get_version();
-           if (r<0)
-               perror("vc_get_version");
-           else 
-               printf("version: %04x:%04x\n", 
-                   (r>>16)&0xFFFF, r&0xFFFF);
-       }
+  if (vc_rem_dlimit(filename, xid, flags) == -1) {
+    perror(ENSC_WRAPPERS_PREFIX "vc_rem_dlimit()");
+    exit(wrapper_exit_code);
+  }
+}
 
-        for (; optind < argc; optind++) {
-           struct vcmd_ctx_dlimit_base_v0 init;
-           struct vcmd_ctx_dlimit_v0 data;
-
-           init.name = argv[optind];
-           init.flags = num_flag;
-
-           if (opt_rem) {
-               r = vserver(VCMD_rem_dlimit, num_xid, &init);
-               if (r<0)
-                   perror("vc_rem_dlimit");
-           } 
-           if (opt_add) {
-               r = vserver(VCMD_add_dlimit, num_xid, &init);
-               if (r<0)
-                   perror("vc_add_dlimit");
-           }
-                   
-           memset(&data, 0, sizeof(data));
-           data.name = argv[optind];
-           data.flags = num_flag;
-
-           if (opt_set) {
-               sscanf(set_arg, "%u,%u,%u,%u,%u",
-                   &data.space_used, &data.space_total,
-                   &data.inodes_used, &data.inodes_total,
-                   &data.reserved);
-
-               r = vserver(VCMD_set_dlimit, num_xid, &data);
-               if (r<0)
-                   perror("vc_set_dlimit");
-           }
-
-           memset(&data, 0, sizeof(data));
-           data.name = argv[optind];
-           data.flags = num_flag;
-
-           r = vserver(VCMD_get_dlimit, num_xid, &data);
-           if (r<0)
-               perror("vc_get_dlimit");
-
-           printf("%s: %u,%u,%u,%u,%u\n", argv[optind],
-               data.space_used, data.space_total,
-               data.inodes_used, data.inodes_total,
-               data.reserved);
-       }
-       
-       exit((err_flag)?1:0);
+static void
+writeInt(int fd, char const *prefix, int val)
+{
+  char         buf[sizeof(val)*3 + 2];
+  size_t       len = utilvserver_fmt_int(buf, val);
+
+  if (prefix)
+    WRITE_STR(fd, prefix);
+  Vwrite(fd, buf, len);
+}
+
+static void
+printDlimit(char const *filename, xid_t xid, uint32_t flags, bool formatted)
+{
+  struct vc_ctx_dlimit         limit;
+  
+  if (vc_get_dlimit(filename, xid, flags, &limit) == -1) {
+    perror(ENSC_WRAPPERS_PREFIX "vc_get_dlimit()");
+    exit(wrapper_exit_code);
+  }
+
+  if (formatted) {
+    writeInt (1, 0, xid);
+    WRITE_MSG(1, " ");
+    WRITE_STR(1, filename);
+    writeInt (1, "\nspace_used=",   limit.space_used);
+    writeInt (1, "\nspace_total=",  limit.space_total);
+    writeInt (1, "\ninodes_used=",  limit.inodes_used);
+    writeInt (1, "\ninodes_total=", limit.inodes_total);
+    writeInt (1, "\nreserved=",     limit.reserved);
+    WRITE_MSG(1, "\n");
+  }
+  else {
+    writeInt (1, 0,   xid);
+    writeInt (1, " ", limit.space_used);
+    writeInt (1, " ", limit.space_total);
+    writeInt (1, " ", limit.inodes_used);
+    writeInt (1, " ", limit.inodes_total);
+    writeInt (1, " ", limit.reserved);
+    WRITE_MSG(1, " ");
+    WRITE_STR(1, filename);
+    WRITE_MSG(1, "\n");
+  }
 }
 
+
+static bool
+setDLimitField(struct vc_ctx_dlimit *dst, char const *opt)
+{
+  uint_least32_t       *ptr;
+  char const * const   orig_opt = opt;
+
+#define GET_VAL_PTR(CMP, VAL)                                          \
+  (strncmp(opt, CMP "=", sizeof(CMP))==0) ?                            \
+  (opt+=sizeof(CMP), &VAL) : 0
+  
+  if      ((ptr=GET_VAL_PTR("space_used",   dst->space_used))!=0)   {}
+  else if ((ptr=GET_VAL_PTR("space_total",  dst->space_total))!=0)  {}
+  else if ((ptr=GET_VAL_PTR("inodes_used",  dst->inodes_used))!=0)  {}
+  else if ((ptr=GET_VAL_PTR("inodes_total", dst->inodes_total))!=0) {}
+  else if ((ptr=GET_VAL_PTR("reserved",     dst->reserved))!=0)     {}
+  else      ptr=0;
+
+#undef  GET_VAL_PTR  
+
+  if (ptr!=0 && *ptr==VC_CDLIM_KEEP) {
+    char       *endptr;
+    long       val = strtol(opt, &endptr, 0);
+
+    if (*opt==0 || *endptr!='\0') {
+      WRITE_MSG(2, ENSC_WRAPPERS_PREFIX "can not parse number in '");
+      WRITE_STR(2, orig_opt);
+      WRITE_MSG(2, "'\n");
+      return false;
+    }
+
+    *ptr = val;
+  }
+  else if (ptr!=0) {
+    WRITE_MSG(2, ENSC_WRAPPERS_PREFIX "value already set in '");
+    WRITE_STR(2, orig_opt);
+    WRITE_MSG(2, "'\n");
+    return false;
+  }
+  else {
+    WRITE_MSG(2, ENSC_WRAPPERS_PREFIX "unknown limit in '");
+    WRITE_STR(2, orig_opt);
+    WRITE_MSG(2, "'\n");
+    return false;
+  }
+
+  return true;
+}
+
+int main(int argc, char *argv[])
+{
+  bool         do_set       = false;
+  bool         do_remove    = false;
+  xid_t                xid          = VC_NOCTX;
+  uint32_t     flags        = 0;
+  char         *endptr;
+  int          sum          = 0;
+
+  struct vc_ctx_dlimit         limit = {
+    .space_used   = VC_CDLIM_KEEP,
+    .space_total  = VC_CDLIM_KEEP,
+    .inodes_used  = VC_CDLIM_KEEP,
+    .inodes_total = VC_CDLIM_KEEP,
+    .reserved     = VC_CDLIM_KEEP
+  };
+  
+  while (1) {
+    int                c = getopt_long(argc, argv, "+x:s:df:", CMDLINE_OPTIONS, 0);
+    if (c==-1) break;
+
+    switch (c) {
+      case CMD_HELP    :  showHelp(1, argv[0]);
+      case CMD_VERSION :  showVersion();
+      case 'x'         :  xid = Evc_xidopt2xid(optarg, true); break;
+      case 's'         :
+       if (!setDLimitField(&limit, optarg))
+         return EXIT_FAILURE;
+       else
+         do_set = true;
+       break;
+      case 'd'         :  do_remove = true; break;
+      case 'f'         :
+       {
+         flags = strtol(optarg, &endptr, 0);
+         if ((flags == 0 && errno != 0) || *endptr != '\0') {
+           WRITE_MSG(2, "Invalid flags argument: '");
+           WRITE_STR(2, optarg);
+           WRITE_MSG(2, "'; try '--help' for more information\n");
+           return EXIT_FAILURE;
+         }
+       }
+       break;
+
+      default          :
+       WRITE_MSG(2, "Try '");
+       WRITE_STR(2, argv[0]);
+       WRITE_MSG(2, " --help' for more information.\n");
+       return EXIT_FAILURE;
+       break;
+    }
+  }
+
+  sum = ((do_set ? 1 : 0) + (do_remove ? 1 : 0));
+  
+  if (sum>1)
+    WRITE_MSG(2, "Can not specify multiple operations; try '--help' for more information\n");
+  else if (optind==argc)
+    WRITE_MSG(2, "No mount point specified; try '--help' for more information\n");
+  else if (xid==VC_NOCTX)
+    WRITE_MSG(2, "No xid specified; try '--help' for more information\n");
+  else {
+    for (; optind < argc; ++optind) {
+      if      (do_set)     setDlimit(argv[optind], xid, flags, &limit);
+      else if (do_remove)  remDlimit(argv[optind], xid, flags);
+      else                 printDlimit(argv[optind], xid, flags, true);
+    }
+
+    return EXIT_SUCCESS;
+  }
+
+  return EXIT_FAILURE;
+}
index 55f6082..5f473ff 100644 (file)
--- a/src/vdu.c
+++ b/src/vdu.c
@@ -1,4 +1,4 @@
-// $Id: vdu.c,v 1.1 2003/09/29 22:01:57 ensc Exp $
+// $Id: vdu.c,v 1.2 2003/09/30 20:16:53 ensc Exp $
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 // based on vdu.cc by Jacques Gelinas
 // along with this program; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
 #include <stdlib.h>
 #include <stdio.h>
 #include <sys/stat.h>
diff --git a/src/vhashify-init.hc b/src/vhashify-init.hc
new file mode 100644 (file)
index 0000000..e774c35
--- /dev/null
@@ -0,0 +1,349 @@
+// $Id: vhashify-init.hc,v 1.3 2005/03/23 02:10:23 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+#include "pathconfig.h"
+#include "lib_internal/util-dotfile.h"
+
+#include <sys/param.h>
+
+static UNUSED void
+freeHashList(HashDirCollection *hash_vec)
+{
+  for (struct HashDirInfo *itm = Vector_begin(hash_vec);
+       itm!=Vector_end(hash_vec);
+       ++itm) {
+    free(const_cast(char *)(itm->path.d));
+  }
+
+  Vector_free(hash_vec);
+}
+
+static size_t
+initHashList(HashDirCollection *hash_vec, char const *hashdir)
+{
+  int          cur_dir = Eopen(".", O_RDONLY|O_DIRECTORY, 0);
+  Echdir(hashdir);
+  
+  DIR          *d      = Eopendir(".");
+  struct dirent        *ep;
+  size_t       l   = strlen(hashdir);
+  size_t       res = 0;
+
+  while ((ep=readdir(d)) != 0) {
+    struct stat                st;
+
+    if (isDotfile(ep->d_name) ||
+       stat(ep->d_name, &st)==-1 || !S_ISDIR(st.st_mode))
+      continue;
+
+    if (HashDirInfo_findDevice(hash_vec, st.st_dev)!=0) {
+      WRITE_MSG(2, "Duplicate hash-dir entry '");
+      WRITE_STR(2, ep->d_name);
+      WRITE_MSG(2, "' found\n");
+      continue;
+    }
+
+    char               *full_path = Emalloc(l + strlen(ep->d_name) + 3);
+    char               *ptr       = full_path + l;
+
+    memcpy(full_path, hashdir, l);
+    while (ptr>full_path && ptr[-1]=='/') --ptr;
+    *ptr++ = '/';
+    strcpy(ptr, ep->d_name);
+    strcat(ptr, "/");  // append a trailing '/'
+
+
+    struct HashDirInfo tmp = {
+      .device  = st.st_dev,
+      .path    = { full_path, strlen(full_path) },
+    };
+
+    res = MAX(res, tmp.path.l);
+    
+    memcpy(Vector_pushback(hash_vec), &tmp, sizeof tmp);
+  }
+
+  if (Vector_count(hash_vec)==0) {
+    WRITE_MSG(2, "Could not find a place for the hashified files at '");
+    WRITE_STR(2, hashdir);
+    WRITE_MSG(2, "'.\n");
+    exit(wrapper_exit_code);
+  }
+
+  Eclosedir(d);
+  Efchdir(cur_dir);
+  Eclose(cur_dir);
+
+  return res;
+}
+
+static bool
+initHashMethod(struct HashDirConfiguration *conf, char const *filename)
+{
+  int          fd = open(filename, O_RDONLY);
+  if (fd==-1 && conf->method==0)
+    conf->method = hashFunctionDefault();
+
+  if (fd==-1) {
+    assert(conf->method!=0);
+    if (conf->method==0)      return false;
+    if (global_args->dry_run) return true;     // do not create the file
+    
+    fd = Eopen(filename, O_WRONLY|O_CREAT|O_EXCL|O_NOFOLLOW, 0644);
+    TEMP_FAILURE_RETRY(write(fd, conf->method->name, strlen(conf->method->name)));
+    TEMP_FAILURE_RETRY(write(fd, "\n", 1));
+  }
+  else {
+    off_t      s  = Elseek(fd, 0, SEEK_END);
+    char       buf[s + 1];
+    Elseek(fd, 0, SEEK_SET);
+
+    conf->method=0;
+
+    if (s>0 && read(fd, buf, s+1)==s) {
+      while (s>0 && (buf[s-1]=='\0' || buf[s-1]=='\n'))
+       --s;
+      buf[s] = '\0';
+
+      conf->method = hashFunctionFind(buf);
+      if (conf->method==0) {
+       WRITE_MSG(2, "Can not find hash-function '");
+       WRITE_STR(2, buf);
+       WRITE_MSG(2, "'\n");
+      }
+    }
+    else
+      WRITE_MSG(2, "Can not read configuration file for hash-method\n");
+  }
+
+  if (conf->method!=0 && conf->method->digestsize*8>HASH_MAXBITS) {
+    WRITE_MSG(2, "Wow... what an huge hash-function. I can not handle so much bits; giving up...\n");
+    conf->method=0;
+  }
+  
+  Eclose(fd);
+  return conf->method!=0;
+}
+
+static bool
+initHashBlocks(struct HashDirConfiguration *conf, char const *filename)
+{
+  int          fd = open(filename, O_RDONLY);
+
+  if (fd==-1) {
+    char               str[sizeof("all,start,middle,end,")] = { [0] = '\0' };
+
+    if (global_args->dry_run) return true;     // do not create the file
+    
+    fd = Eopen(filename, O_WRONLY|O_CREAT|O_EXCL|O_NOFOLLOW, 0644);
+
+    if (conf->blocks== hshALL)    strcat(str, "all\n");
+    if (conf->blocks & hshSTART)  strcat(str, "start\n");
+    if (conf->blocks & hshMIDDLE) strcat(str, "middle\n");
+    if (conf->blocks & hshEND)    strcat(str, "end\n");
+
+    EwriteAll(fd, str, strlen(str));
+  }
+  else {
+    off_t      s  = Elseek(fd, 0, SEEK_END);
+    char       buf[s + 1];
+    Elseek(fd, 0, SEEK_SET);
+    
+    conf->blocks = hshINVALID;
+      
+    if (s>0 && read(fd, buf, s+1)==s) {
+      char     *tok = buf;
+      char     *sep = "\n,\t ";
+
+      buf[s]       = '\0';
+      conf->blocks = hshALL;
+
+      do {
+       char    *ptr = strsep(&tok, sep);
+
+       if (*ptr=='#') { sep = "\n"; continue; }
+       sep = "\n,\t ";
+       if (*ptr=='\0') continue;
+
+       if      (strcasecmp(ptr, "all")   ==0) conf->blocks  = hshALL;
+       else {
+         if (conf->blocks==hshINVALID) conf->blocks = 0;
+         
+         else if (strcasecmp(ptr, "start") ==0) conf->blocks |= hshSTART;
+         else if (strcasecmp(ptr, "middle")==0) conf->blocks |= hshMIDDLE;
+         else if (strcasecmp(ptr, "end")   ==0) conf->blocks |= hshEND;
+         else {
+           WRITE_MSG(2, "Invalid block descriptor '");
+           WRITE_STR(2, ptr);
+           WRITE_MSG(2, "'\n");
+           conf->blocks = hshINVALID;
+           tok = 0;
+         }
+       }
+      } while (tok!=0);
+    }
+    else
+      WRITE_MSG(2, "Can not read configuration file for hash-blocks\n");
+  }
+
+  Eclose(fd);
+  return conf->blocks!=hshINVALID;
+}
+
+static bool
+initHashBlockSize(struct HashDirConfiguration *conf, char const *filename)
+{
+  if (conf->blocks==hshALL) return true;
+  
+  int          fd = open(filename, O_RDONLY);
+  if (fd==-1) {
+    char               str[sizeof("0x") + sizeof(size_t)*3+2] = {
+      [0] = '0', [1] = 'x'
+    };
+    size_t             len = utilvserver_fmt_xuint(str+2, conf->blocksize);
+
+    if (global_args->dry_run) return true;     // do not create the file
+
+    fd = Eopen(filename, O_WRONLY|O_CREAT|O_EXCL|O_NOFOLLOW, 0644);
+    EwriteAll(fd, str, len+2);
+  }
+  else {
+    off_t      s  = Elseek(fd, 0, SEEK_END);
+    char       buf[s + 1];
+    Elseek(fd, 0, SEEK_SET);
+
+    conf->blocksize = (size_t)(-1);
+
+    if (s>0 && read(fd, buf, s+1)==s) {
+      char     *errptr;
+      
+      while (s>0 && (buf[s-1]=='\0' || buf[s-1]=='\n'))
+       --s;
+      buf[s] = '\0';
+
+      conf->blocksize = strtol(buf, &errptr, 0);
+      if (errptr==buf || (*errptr!='\0' && *errptr!='\n')) {
+       WRITE_MSG(2, "Failed to parse blocksize '");
+       WRITE_STR(2, buf);
+       WRITE_MSG(2, "'\n");
+       conf->blocksize = (size_t)(-1);
+      }
+    }
+    else
+      WRITE_MSG(2, "Can not read configuration file for hash-blocksize\n");
+  }
+
+  Eclose(fd);
+  return conf->blocksize!=(size_t)(-1);
+}
+
+static bool
+initHashConf(struct HashDirConfiguration *conf, char const *hashdir)
+{
+  size_t               l = strlen(hashdir);
+  char                 tmp[l + MAX(MAX(sizeof("/method"), sizeof("/blocks")),
+                                   sizeof("/blocksize"))];
+
+  memcpy(tmp, hashdir, l);
+
+  return ((strcpy(tmp+l, "/method"),    initHashMethod   (conf, tmp)) &&
+         (strcpy(tmp+l, "/blocks"),    initHashBlocks   (conf, tmp)) &&
+         (strcpy(tmp+l, "/blocksize"), initHashBlockSize(conf, tmp)));
+}
+
+static char *
+searchHashdir(char const *lhs, char const *rhs)
+{
+  size_t       l1  = strlen(lhs);
+  size_t       l2  = rhs ? strlen(rhs) : 0;
+  char *       res = Emalloc(l1 + l2 + 1);
+  struct stat  st;
+
+  strcpy(res, lhs);
+  if (rhs) strcat(res, rhs);
+
+  if (stat(res, &st)==-1 || !S_ISDIR(st.st_mode)) {
+    free(res);
+    res = 0;
+  }
+
+  return res;
+}
+
+static void
+initModeManually(struct Arguments const UNUSED *args, int argc, char *argv[])
+{
+  assert(args->hash_dir!=0);
+  
+  if (argc<2) {
+    WRITE_MSG(2, "No exclude list specified\n");
+    exit(1);
+  }
+
+  if (!initHashConf(&global_info.hash_conf, args->hash_dir)) {
+    WRITE_MSG(2, "failed to initialize hash-configuration\n");
+    exit(1);
+  }
+  
+  global_info.hash_dirs_max_size = initHashList(&global_info.hash_dirs,
+                                               args->hash_dir);
+  MatchList_initManually(&global_info.dst_list, 0, strdup(argv[0]), argv[1]);
+}
+
+static void
+initModeVserver(struct Arguments const UNUSED *args, int argc, char *argv[])
+{
+  char const                           *hashdir   = args->hash_dir;
+  struct MatchVserverInfo              vserver = {
+    .name        = argv[0],
+    .use_pkgmgmt = true
+  };
+
+  if (!MatchVserverInfo_init(&vserver)) {
+    WRITE_MSG(2, "Failed to initialize unification for vserver\n");
+    exit(1);
+  }
+
+  if (argc!=1) {
+    WRITE_MSG(2, "More than one vserver is not supported\n");
+    exit(1);
+  }
+
+  if (!MatchList_initByVserver(&global_info.dst_list, &vserver)) {
+    WRITE_MSG(2, "unification not configured for this vserver\n");
+    exit(1);
+  }
+
+  if (hashdir==0) hashdir = searchHashdir(vserver.appdir.d, "/hash");
+  if (hashdir==0) hashdir = searchHashdir(CONFDIR "/.defaults/apps/vunify/hash", 0);
+
+  if (hashdir==0) {
+    WRITE_MSG(2, "no hash-directory configured for this vserver.\n");
+    exit(1);
+  }
+
+  if (!initHashConf(&global_info.hash_conf, hashdir)) {
+    WRITE_MSG(2, "failed to initialize hash-configuration\n");
+    exit(1);
+  }
+  
+  global_info.hash_dirs_max_size = initHashList(&global_info.hash_dirs, hashdir);
+
+  free(const_cast(char *)(hashdir));
+  MatchVserverInfo_free(&vserver);
+}
+               
diff --git a/src/vhashify.c b/src/vhashify.c
new file mode 100644 (file)
index 0000000..2950f97
--- /dev/null
@@ -0,0 +1,743 @@
+// $Id: vhashify.c,v 1.6 2005/03/24 12:46:59 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vhashify.h"
+#include "util.h"
+
+#include "lib/internal.h"
+#include "lib_internal/matchlist.h"
+#include "lib_internal/unify.h"
+#include "ensc_vector/vector.h"
+
+#include <beecrypt/beecrypt.h>
+
+#include <setjmp.h>
+#include <unistd.h>
+#include <getopt.h>
+#include <string.h>
+#include <assert.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <dirent.h>
+#include <errno.h>
+#include <signal.h>
+#include <limits.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
+
+#define ENSC_WRAPPERS_STDLIB   1
+#define ENSC_WRAPPERS_UNISTD    1
+#define ENSC_WRAPPERS_FCNTL     1
+#define ENSC_WRAPPERS_DIRENT    1
+#define ENSC_WRAPPERS_IO       1
+#include <wrappers.h>
+
+
+#define HASH_BLOCKSIZE         0x10000000u
+#define HASH_MINSIZE           0x10
+#define HASH_MAXBITS           256             // we have to take care about
+                                               // max filename-length...
+
+#if HASH_MINSIZE<=0
+#  error HASH_MINSIZE must be not '0'
+#endif
+
+
+#define CMD_HELP               0x8000
+#define CMD_VERSION            0x8001
+
+#define CMD_DESTINATION                0x1000
+#define CMD_INSECURE           0x1001
+#define CMD_SLEDGE             0x1002
+#define CMD_MANUALLY           0x1003
+#define CMD_REFRESH            0x1004
+
+struct option const
+CMDLINE_OPTIONS[] = {
+  { "help",         no_argument,       0, CMD_HELP },
+  { "version",      no_argument,       0, CMD_VERSION },
+  { "destination",  required_argument, 0, CMD_DESTINATION },
+  { "insecure",     no_argument,               0, CMD_INSECURE },
+  { "sledgehammer", no_argument,       0, CMD_SLEDGE },
+  { "manually",     no_argument,       0, CMD_MANUALLY },
+  { "refresh",      no_argument,        0, CMD_REFRESH },
+  { "dry-run",      no_argument,       0, 'n' },
+  { "verbose",      no_argument,       0, 'v' },
+  { 0,0,0,0 }
+};
+
+  // hash digest grouped by 2 digits + hash-collision counter + 2* '/' + NULL
+typedef char                   HashPath[HASH_MAXBITS/4 + (HASH_MAXBITS/4/2) +
+                                        sizeof(unsigned int)*2 + 3];
+
+struct HashDirConfiguration
+{
+    hashFunction const                         *method;
+    enum { hshALL=0, hshSTART = 1, hshMIDDLE=2,
+          hshEND = 4, hshINVALID = -1 }        blocks;
+    size_t                                     blocksize;
+};
+
+struct WalkdownInfo
+{
+    PathInfo                   state;
+    struct MatchList           dst_list;
+    struct HashDirConfiguration        hash_conf;
+    HashDirCollection          hash_dirs;
+    size_t                     hash_dirs_max_size;
+
+    hashFunctionContext                hash_context;
+};
+
+int                            wrapper_exit_code = 1;
+struct Arguments const         *global_args;
+static struct SkipReason       skip_reason;
+
+struct WalkdownInfo            global_info = {
+  .hash_conf = { .method     = 0,
+                .blocks     = hshALL,
+                .blocksize  = 0x10000 }
+};
+
+#include "vhashify-init.hc"
+
+int Global_getVerbosity() {
+  return global_args->verbosity;
+}
+
+int Global_doRenew() {
+  return true;
+}
+
+int Global_isVserverRunning() {
+    // TODO
+  return global_args->insecure<2;
+}
+
+static void
+showHelp(char const *cmd)
+{
+  WRITE_MSG(1, "Usage:\n  ");
+  WRITE_STR(1, cmd);
+  WRITE_MSG(1,
+           " [-nv] [--refresh] <vserver>\n    or\n  ");
+  WRITE_STR(1, cmd);
+  WRITE_MSG(1,
+           " --manually [-nv] [--] <hashdir> <path> <excludelist>\n\n"
+           "  --manually      ...  hashify generic paths; excludelists must be generated\n"
+           "                       manually\n"
+           "  --refresh       ...  hashify already hashified files also\n"
+           "  -n              ...  do not modify anything; just show what there will be\n"
+           "                       done (in combination with '-v')\n"
+           "  -v              ...  verbose mode\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+
+  exit(0);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "vhashify " VERSION " -- hashifies vservers and/or directories\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2005 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+int
+HashDirInfo_compareDevice(void const *lhs_v, void const *rhs_v)
+{
+  struct HashDirInfo const * const     lhs = lhs_v;
+  dev_t const * const                  rhs = rhs_v;
+
+  assert(lhs!=0 && rhs!=0);
+  return lhs->device - *rhs;
+}
+
+PathInfo const *
+HashDirInfo_findDevice(HashDirCollection const *coll, dev_t dev)
+{
+  struct HashDirInfo const     *res;
+
+  res = Vector_searchSelfOrg_const(coll, &dev,
+                                  HashDirInfo_compareDevice, vecSHIFT_ONCE);
+
+  if (res!=0) return &res->path;
+  else        return 0;
+}
+
+#include "vserver-visitdir.hc"
+
+static bool
+checkFstat(PathInfo const * const basename,
+          struct stat * const st)
+{
+  assert(basename->d[0] != '/');
+
+    // local file does not exist... strange
+    // TODO: message
+  skip_reason.r = rsFSTAT;
+  if (lstat(basename->d, st)==-1) return false;
+
+    // this is a directory and succeeds everytime
+  if (S_ISDIR(st->st_mode))
+    return true;
+
+    // ignore symlinks
+  skip_reason.r = rsSYMLINK;
+  if (S_ISLNK(st->st_mode))       return false;
+
+    // ignore special files
+  skip_reason.r = rsSPECIAL;
+  if (!S_ISREG(st->st_mode) &&
+      !S_ISDIR(st->st_mode))      return false;
+  
+    // ignore small files
+  skip_reason.r = rsTOOSMALL;
+  if (st->st_size < HASH_MINSIZE) return false;
+  
+  switch (Unify_isIUnlinkable(basename->d)) {
+    case unifyUNSUPPORTED      :  skip_reason.r = rsUNSUPPORTED; return false;
+    case unifyBUSY             :
+       // do an implicit refresh on busy files when there are no active links
+      if (st->st_nlink>1 && !global_args->do_refresh) {
+         // TODO: message
+       skip_reason.r = rsUNIFIED;
+       return false;
+      }
+      break;
+    default                    :  break;
+  }
+
+  return true;
+}
+
+static sigjmp_buf              bus_error_restore;
+static volatile sig_atomic_t   bus_error;
+
+static void
+handlerSIGBUS(int UNUSED num)
+{
+  bus_error = 1;
+  siglongjmp(bus_error_restore, 1);
+}
+
+static bool
+convertDigest(HashPath d_path)
+{
+  static char const            HEX_DIGIT[] = "0123456789abcdef";
+  hashFunctionContext * const  h_ctx    = &global_info.hash_context;
+  size_t                       d_size   = h_ctx->algo->digestsize;
+    
+  unsigned char                        digest[d_size];
+  size_t                       out = 0;
+
+  if (hashFunctionContextDigest(h_ctx, digest)==-1)
+    return false;
+  
+  for (size_t in=0;
+       out+1<sizeof(HashPath)-(sizeof(unsigned int)*2 + 2) && in<d_size;
+       ++in) {
+    if ((in+254)%(in<=2 ? 1 : 256) == 0 && in>0)
+      d_path[out++]='/';
+    d_path[out++]  = HEX_DIGIT[digest[in] >>    4];
+    d_path[out++]  = HEX_DIGIT[digest[in] &  0x0f];
+  }
+  d_path[out++] = '\0';
+  
+  return true;
+}
+
+static bool
+addStatHash(hashFunctionContext *h_ctx, struct stat const * const st)
+{
+#define DECL_ATTR(X)   __typeof__(st->st_##X)  X
+#define SET_ATTR(X)    .X = st->st_##X
+  
+  struct __attribute__((__packed__)) {
+    DECL_ATTR(mode);
+    DECL_ATTR(uid);
+    DECL_ATTR(gid);
+    DECL_ATTR(rdev);
+    DECL_ATTR(size);
+    DECL_ATTR(mtime);
+  }            tmp = {
+    SET_ATTR(mode),
+    SET_ATTR(uid),
+    SET_ATTR(gid),
+    SET_ATTR(rdev),
+    SET_ATTR(size),
+    SET_ATTR(mtime)
+  };
+
+  return hashFunctionContextUpdate(h_ctx, (void *)&tmp, sizeof tmp)!=-1;
+}
+
+static bool
+calculateHashFromFD(int fd, HashPath d_path, struct stat const * const st)
+{
+  hashFunctionContext * const  h_ctx    = &global_info.hash_context;
+  void const * volatile                buf      = 0;
+  loff_t volatile              buf_size = 0;
+  bool   volatile              res      = false;
+
+
+  if (hashFunctionContextReset(h_ctx)==-1 ||
+      !addStatHash(h_ctx, st))
+    return false;
+
+  bus_error = 0;
+  if (sigsetjmp(bus_error_restore,1)==0) {
+    loff_t                     offset   = 0;
+    off_t                      size     = st->st_size;
+
+    while (offset < size) {
+      buf_size = size-offset;
+      if (buf_size>HASH_BLOCKSIZE) buf_size = HASH_BLOCKSIZE;
+
+      if ((buf=mmap(0, buf_size, PROT_READ, MAP_SHARED, fd, offset))==0) {
+       perror("mmap(<hash>)");
+       goto out;
+      }
+
+      offset += buf_size;
+      madvise(const_cast(void *)(buf), buf_size, MADV_SEQUENTIAL);     // ignore error...
+
+      if (hashFunctionContextUpdate(h_ctx, buf, buf_size)==-1) goto out;
+
+      munmap(const_cast(void *)(buf), buf_size);
+      buf = 0;
+    }
+
+    res = convertDigest(d_path);
+  }
+
+  out:
+  if (buf!=0) munmap(const_cast(void *)(buf), buf_size);
+  return res;
+}
+
+static bool
+calculateHash(PathInfo const *filename, HashPath d_path, struct stat const * const st)
+{
+  int          fd  = open(filename->d, O_NOFOLLOW|O_NONBLOCK|O_RDONLY|O_NOCTTY);
+  struct stat  fst;
+  bool         res = false;
+
+  do {
+    if (fd==-1) {
+      int      old_errno = errno;
+      WRITE_MSG(2, "Failed to open '");
+      WRITE_STR(2, filename->d);
+      errno = old_errno;
+      perror("'");
+      break;;
+    }
+  
+    if (fstat(fd, &fst)==-1 ||
+       fst.st_dev!=st->st_dev || fst.st_ino!=st->st_ino) {
+      WRITE_MSG(2, "An unexpected event occured while stating '");
+      WRITE_STR(2, filename->d);
+      WRITE_MSG(2, "'.\n");
+      break;
+    }
+
+    if (!calculateHashFromFD(fd, d_path, st)) {
+      WRITE_MSG(2, "Failed to calculate hash for '");
+      WRITE_STR(2, filename->d);
+      WRITE_MSG(2, "'.\n");
+      break;
+    }
+
+    res = true;
+  } while (false);
+  
+  if (fd!=-1) close(fd);
+  return res;
+}
+
+static enum { mkdirFAIL, mkdirSUCCESS, mkdirSKIP }
+mkdirSingle(char const *path, char *end_ptr, int good_err)
+{
+  *end_ptr = '\0';
+  if (mkdir(path, 0700)!=-1 || errno==EEXIST) {
+    *end_ptr = '/';
+    return mkdirSUCCESS;
+  }
+  else if (errno==good_err) {
+    *end_ptr = '/';
+    return mkdirSKIP;
+  }
+  else {
+    int                old_errno = errno;
+    WRITE_MSG(2, "mkdir('");
+    WRITE_STR(2, path);
+    errno = old_errno;
+    perror("')");
+    return mkdirFAIL;
+  }
+}
+
+static char *
+rstrchr(char *str, char c)
+{
+  while (*str!=c) --str;
+  return str;
+}
+
+static bool
+mkdirRecursive(char const *path)
+{
+  if (path[0]!='/')      return false; // only absolute paths
+
+  char                 buf[strlen(path)+1];
+  char *               ptr = buf + sizeof(buf) - 2;
+
+  strcpy(buf, path);
+
+  while (ptr>buf && (ptr = rstrchr(ptr, '/'))!=0) {
+    switch (mkdirSingle(buf, ptr, ENOENT)) {
+      case mkdirSUCCESS                :  break;
+      case mkdirSKIP           :  --ptr; continue;
+      case mkdirFAIL           :  return false;
+    }
+
+    break;     // implied by mkdirSUCCESS
+  }
+
+  assert(ptr!=0);
+  ++ptr;
+
+  while ((ptr=strchr(ptr, '/'))!=0) {
+    switch (mkdirSingle(buf, ptr, 0)) {
+      case mkdirSKIP           :
+      case mkdirFAIL           :  return false;
+      case mkdirSUCCESS                :  ++ptr; continue;
+    }
+  }
+
+  return true;
+}
+
+static bool
+resolveCollisions(char *result, PathInfo const *root, HashPath d_path,
+                 struct stat *st, struct stat *hash_st)
+{
+  strcpy(result, root->d);     // 'root' ends on '/' already (see initHashList())
+  strcat(result, d_path);
+  
+  char                         *ptr = result + strlen(result);
+  unsigned int         idx  = 0;
+  char                 buf[sizeof(int)*2 + 1];
+  size_t               len;
+
+  *ptr                 = '-';
+  ptr[sizeof(int)*2+1] = '\0';
+
+  for (;; ++idx) {
+    len = utilvserver_fmt_xuint(buf, idx);
+    memset(ptr+1, '0', sizeof(int)*2 - len);
+    memcpy(ptr+1 + sizeof(int)*2 - len, buf, len);
+
+    if (lstat(result, hash_st)==-1) {
+      if (global_args->dry_run && errno!=ENOENT) {
+       int             old_errno = errno;
+       WRITE_MSG(2, "lstat('");
+       WRITE_STR(2, buf);
+       errno = old_errno;
+       perror("')");
+       return false;
+      }
+    }
+    else if (Unify_isUnified(st, hash_st)) {
+      skip_reason.r = rsUNIFIED;
+      return false;
+    }
+    else if (!Unify_isUnifyable(st, hash_st))
+      continue;                // continue with next number*****
+    else
+      break;           // ok, we finish here
+
+    if (!global_args->dry_run) {
+      *ptr = '\0';
+      if (!mkdirRecursive(result))
+       return false;
+      *ptr = '-';
+
+      int              fd = open(result, O_NOFOLLOW|O_EXCL|O_CREAT|O_WRONLY, 0200);
+
+      if (fd==-1) {
+       int             old_errno = errno;
+       WRITE_MSG(2, "open('");
+       WRITE_STR(2, buf);
+       errno = old_errno;
+       perror("')");
+       return false;
+      }
+
+      close(fd);
+    }
+
+      // HACK: avoid an additional lstat on the resulting hash-file
+    hash_st->st_size = 0;
+    break;
+  }
+
+  return true;
+}
+
+static char const *
+checkDirEntry(PathInfo const *path, PathInfo const *basename,
+             bool *is_dir,
+             struct stat *st, struct stat *hash_st,
+             char *result_buf)
+{
+    //printf("checkDirEntry(%s, %s, %u)\n", path->d, d_path, is_dir);
+
+  struct WalkdownInfo const * const    info       = &global_info;
+
+  // Check if it is in the exclude/include list of the destination vserver and
+  // abort when it is not matching an allowed entry
+  skip_reason.r      = rsEXCL;
+  if (MatchList_compare(&info->dst_list, path->d)!=stINCLUDE) return 0;
+
+  if (checkFstat(basename, st)) {
+    PathInfo const     *hash_root_path;
+    HashPath           d_path;
+    
+    *is_dir = S_ISDIR(st->st_mode);
+
+    if (!*is_dir &&
+       !((skip_reason.r = rsWRONGDEV,
+          (hash_root_path = HashDirInfo_findDevice(&info->hash_dirs, st->st_dev))!=0) &&
+         (skip_reason.r = rsGENERAL,
+          calculateHash(basename, d_path, st)) &&
+         resolveCollisions(result_buf, hash_root_path, d_path, st, hash_st)))
+      return 0;
+
+    return result_buf;
+  }
+
+  return 0;
+}
+
+static void
+printSkipReason()
+{
+  WRITE_MSG(1, " (");
+  switch (skip_reason.r) {
+    case rsDOTFILE     :  WRITE_MSG(1, "dotfile"); break;
+    case rsEXCL                :  WRITE_MSG(1, "excluded"); break;
+    case rsTOOSMALL    :  WRITE_MSG(1, "too small"); break;
+    case rsUNSUPPORTED :  WRITE_MSG(1, "operation not supported"); break;
+    case rsFSTAT       :  WRITE_MSG(1, "fstat error"); break;
+    case rsSYMLINK     :  WRITE_MSG(1, "symlink"); break;
+    case rsUNIFIED     :  WRITE_MSG(1, "already unified"); break;
+    case rsSPECIAL     :  WRITE_MSG(1, "non regular file"); break;
+    case rsWRONGDEV    :  WRITE_MSG(1, "no matching device"); break;
+    case rsGENERAL     :  WRITE_MSG(1, "general error"); break;
+    default            :  assert(false); abort();
+  }
+  WRITE_MSG(1, ")");
+}
+
+static bool
+doit(char const *src, char const *dst,
+     struct stat const *src_st, struct stat const *dst_st,
+     PathInfo const *path)
+{
+  if (global_args->dry_run || Global_getVerbosity()>=2) {
+    WRITE_MSG(1, "unifying   '");
+    Vwrite(1, path->d, path->l);
+    WRITE_MSG(1, "'");
+    
+    if (Global_getVerbosity()>=4) {
+      WRITE_MSG(1, " (to '");
+      WRITE_STR(1, dst);
+      WRITE_MSG(1, "')");
+    }
+
+    WRITE_MSG(1, "\n");
+  }
+
+    // abort here in dry-run mode
+  if (global_args->dry_run) return true;
+
+  if (dst_st->st_size==0) {
+      // file was not unified yet
+    
+    if (Global_isVserverRunning()) {
+      (void)unlink(dst);
+      if (Unify_copy (src, src_st, dst) &&
+         // the mixed 'dst' and 'src_st' params are intentionally...
+         Unify_unify(dst, src_st, src, false))
+       return true;
+    }
+    else if (Unify_unify(src, src_st, dst, true))
+      return true;
+
+    (void)unlink(dst); // cleanup in error-case
+  }
+    // there exists already a reference-file
+  else if (Unify_unify(dst, dst_st, src, false))
+    return true;
+
+  return false;
+}
+
+static uint64_t
+visitDirEntry(struct dirent const *ent)
+{
+  uint64_t                     res      = 0;
+  char const *                 dirname  = ent->d_name;
+  PathInfo                     path     = global_info.state;
+  PathInfo                     tmp_path = {
+    .d = dirname,
+    .l = strlen(dirname)
+  };
+  char                         path_buf[ENSC_PI_APPSZ(path, tmp_path)];
+  char const                   *match = 0;
+
+  
+  PathInfo_append(&path, &tmp_path, path_buf);
+
+  bool                         is_dotfile    = isDotfile(dirname);
+  bool                         is_dir;
+  struct stat                  src_stat = { .st_mode=0 };
+  struct stat                  hash_stat;
+  char                         tmpbuf[global_info.hash_dirs_max_size +
+                                      sizeof(HashPath) + 2];
+  
+  skip_reason.r = rsDOTFILE;
+
+  if (is_dotfile ||
+      (match=checkDirEntry(&path, &tmp_path,
+                          &is_dir, &src_stat, &hash_stat,
+                          tmpbuf))==0) {
+
+    bool       is_link = !is_dotfile && S_ISLNK(src_stat.st_mode);
+
+    if (Global_getVerbosity()>=1 &&
+       (Global_getVerbosity()>=3 || skip_reason.r!=rsUNIFIED) &&
+       ((!is_dotfile && !is_link) ||
+        (Global_getVerbosity()>=6 && is_dotfile) ||
+        (Global_getVerbosity()>=6 && is_link)) ) {
+      WRITE_MSG(1, "  skipping '");
+      Vwrite(1, path.d, path.l);
+      WRITE_MSG(1, "'");
+      if (Global_getVerbosity()>=2) printSkipReason();
+      WRITE_MSG(1, "\n");
+    }
+
+    return 0;
+  }
+
+  if (is_dir) {
+    res = visitDir(dirname, &src_stat);
+  }
+  else if (doit(dirname, match, &src_stat, &hash_stat, &path))
+    res = 1;
+  else {
+      // TODO: message
+    res = 0;
+  }
+
+  return res;
+    
+}
+
+int main(int argc, char *argv[])
+{
+  struct Arguments     args = {
+    .mode               =  mdVSERVER,
+    .hash_dir           =  0,
+    .verbosity         =  0,
+    .insecure           =  0,
+    .dry_run            =  false,
+    .do_refresh         =  false,
+  };
+
+  Vector_init(&global_info.hash_dirs, sizeof(struct HashDirInfo));
+
+  global_args = &args;
+  while (1) {
+    int                c = getopt_long(argc, argv, "+nv",
+                               CMDLINE_OPTIONS, 0);
+    if (c==-1) break;
+
+    switch (c) {
+      case CMD_HELP            :  showHelp(argv[0]);
+      case CMD_VERSION         :  showVersion();
+      case CMD_DESTINATION     :  args.hash_dir    = optarg; break;
+      case CMD_MANUALLY                :  args.mode        = mdMANUALLY; break;
+      case CMD_INSECURE                :  args.insecure    = 1;    break;
+      case CMD_SLEDGE          :  args.insecure    = 2;    break;
+      case CMD_REFRESH         :  args.do_refresh  = true; break;
+      case 'n'                 :  args.dry_run     = true; break;
+      case 'v'                 :  ++args.verbosity; break;
+      default          :
+       WRITE_MSG(2, "Try '");
+       WRITE_STR(2, argv[0]);
+       WRITE_MSG(2, " --help\" for more information.\n");
+       return EXIT_FAILURE;
+       break;
+    }
+  }
+
+  if (argc==optind) {
+    WRITE_MSG(2, "No directory/vserver given\n");
+    return EXIT_FAILURE;
+  }
+
+  if (args.hash_dir==0 && args.mode==mdMANUALLY) {
+    WRITE_MSG(2, "'--manually' requires '--destination'\n");
+    return EXIT_FAILURE;
+  }
+
+  switch (args.mode) {
+    case mdMANUALLY    :  initModeManually(&args, argc-optind, argv+optind); break;
+    case mdVSERVER     :  initModeVserver (&args, argc-optind, argv+optind); break;
+    default            :  assert(false); return EXIT_FAILURE;
+  };
+
+  if (hashFunctionContextInit(&global_info.hash_context,
+                             global_info.hash_conf.method)==-1) {
+    WRITE_MSG(2, "Failed to initialize hash-context\n");
+    return EXIT_FAILURE;
+  }
+
+  if (Global_getVerbosity()>=1)
+    WRITE_MSG(1, "Starting to traverse directories...\n");
+
+  signal(SIGBUS, handlerSIGBUS);
+  
+  Echdir(global_info.dst_list.root.d);
+  visitDir("/", 0);
+
+#ifndef NDEBUG
+  MatchList_destroy(&global_info.dst_list);
+  freeHashList(&global_info.hash_dirs);
+  hashFunctionContextFree(&global_info.hash_context);
+#endif
+}
diff --git a/src/vhashify.h b/src/vhashify.h
new file mode 100644 (file)
index 0000000..c32f533
--- /dev/null
@@ -0,0 +1,53 @@
+// $Id: vhashify.h,v 1.2 2005/03/18 00:25:37 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_SRC_VHASHIFY_H
+#define H_UTIL_VSERVER_SRC_VHASHIFY_H
+
+#include "ensc_vector/list.h"
+#include "lib_internal/pathinfo.h"
+
+#include <sys/types.h>
+#include <stdbool.h>
+
+struct Arguments {
+    enum {mdMANUALLY, mdVSERVER}       mode; 
+    unsigned int                       verbosity;
+    unsigned int                       insecure;
+    char const *                       hash_dir;
+    bool                               dry_run;
+    bool                               do_refresh;
+};
+
+struct HashDirInfo {
+    PathInfo const             path;
+    dev_t                      device;
+};
+
+struct SkipReason {
+    enum { rsDOTFILE, rsEXCL, rsTOOSMALL, rsUNSUPPORTED,
+          rsFSTAT,   rsSYMLINK, rsUNIFIED, rsWRONGDEV,
+          rsSPECIAL, rsGENERAL }       r;
+};
+
+typedef struct Vector          HashDirCollection;
+
+int                    HashDirInfo_compareDevice(void const *lhs, void const *rhs);
+PathInfo const *       HashDirInfo_findDevice(HashDirCollection const *, dev_t dev);
+
+#endif //  H_UTIL_VSERVER_SRC_VHASHIFY_H
index aeabb08..02f386a 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: vkill.c,v 1.1.2.2 2003/12/30 13:49:17 ensc Exp $    --*- c -*--
+// $Id: vkill.c,v 1.8 2004/08/19 14:30:50 ensc Exp $    --*- c -*--
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 //  
 #ifdef HAVE_CONFIG_H
 #  include <config.h>
 #endif
-#include "compat.h"
 
 #include "vserver.h"
 #include "linuxvirtual.h"
+#include "util.h"
 
 #include <getopt.h>
 #include <signal.h>
 #include <sys/resource.h>
 #include <sys/wait.h>
 
-#define VERSION_COPYRIGHT_DISCLAIMER
+#define ENSC_WRAPPERS_VSERVER  1
+#define ENSC_WRAPPERS_UNISTD   1
+#include <wrappers.h>
 
 #define CMD_HELP       0x8000
 #define CMD_VERSION    0x8001
 
-#define WRITE_MSG(FD,X)         (void)(write(FD,X,sizeof(X)-1))
-#define WRITE_STR(FD,X)         writeStr(FD,X)
+int            wrapper_exit_code = 1;
 
 static struct option const
 CMDLINE_OPTIONS[] = {
-  { "help",     no_argument,  0, CMD_HELP },
-  { "version",  no_argument,  0, CMD_VERSION },
+  { "help",     no_argument,        0, CMD_HELP },
+  { "version",  no_argument,        0, CMD_VERSION },
+  { "xid",      required_argument,  0, 'c' },
   { 0,0,0,0 }
 };
 
 struct Arguments
 {
-    xid_t              ctx;
+    xid_t              xid;
     int                        sig;
 };
 
@@ -65,19 +67,13 @@ static char const * const SIGNALS[] = {
   0,
 };
 
-inline static void UNUSED
-writeStr(int fd, char const *cmd)
-{
-  (void)write(fd, cmd, strlen(cmd));
-}
-
 static void
 showHelp(int fd, char const *cmd, int res)
 {
   WRITE_MSG(fd, "Usage:  ");
   WRITE_STR(fd, cmd);
   WRITE_MSG(fd,
-           " [-c <ctx>] [-s <signal>] [--] <pid>*\n"
+           " [--xid|-c <xid>] [-s <signal>] [--] <pid>*\n"
            "Please report bugs to " PACKAGE_BUGREPORT "\n");
   exit(res);
 }
@@ -115,14 +111,14 @@ str2sig(char const *str)
 
 #if defined(VC_ENABLE_API_LEGACY)
 inline static ALWAYSINLINE int
-kill_wrapper_legacy(xid_t ctx, char const *proc, int sig)
+kill_wrapper_legacy(xid_t UNUSED xid, char const *proc, int UNUSED sig)
 {
-  pid_t                pid = fork();
-  if (pid==-1) {
-    perror("fork()");
-    exit(1);
-  }
-  else if (pid==0) {
+  pid_t                pid;
+
+  signal(SIGCHLD, SIG_DFL);
+  pid = Efork();
+
+  if (pid==0) {
     int                status;
     int                res;
     while ((res=wait4(pid, &status, 0,0))==-1 &&
@@ -132,21 +128,21 @@ kill_wrapper_legacy(xid_t ctx, char const *proc, int sig)
   }
 
   execl(LEGACYDIR "/vkill", "legacy/vkill", proc, (void *)(0));
-  perror("execl()");
+  perror("vkill: execl()");
   exit(1);
 }
 
 static int
-kill_wrapper(xid_t ctx, char const *pid, int sig)
+kill_wrapper(xid_t xid, char const *pid, int sig)
 {
-  //printf("kill_wrapper(%u, %s, %i)\n", ctx, pid, sig);
-  if (vc_ctx_kill(ctx,atoi(pid),sig)==-1) {
+  //printf("kill_wrapper(%u, %s, %i)\n", xid, pid, sig);
+  if (vc_ctx_kill(xid,atoi(pid),sig)==-1) {
     int                err = errno;
     if (vc_get_version(VC_CAT_COMPAT)==-1)
-      return kill_wrapper_legacy(ctx, pid, sig);
+      return kill_wrapper_legacy(xid, pid, sig);
     else {
       errno = err;
-      perror("vc_ctx_kill()");
+      perror("vkill: vc_ctx_kill()");
       return 1;
     }
   }
@@ -155,10 +151,10 @@ kill_wrapper(xid_t ctx, char const *pid, int sig)
 }
 #else // VC_ENABLE_API_LEGACY
 inline static int
-kill_wrapper(xid_t ctx, char const *pid, int sig)
+kill_wrapper(xid_t xid, char const *pid, int sig)
 {
-  if (vc_ctx_kill(ctx,atoi(pid),sig)==-1) {
-    perror("vc_ctx_kill()");
+  if (vc_ctx_kill(xid,atoi(pid),sig)==-1) {
+    perror("vkill: vc_ctx_kill()");
     return 1;
   }
   return 0;
@@ -170,7 +166,7 @@ int main(int argc, char *argv[])
 {
   int                  fail = 0;
   struct Arguments     args = {
-    .ctx = VC_NOCTX,
+    .xid = VC_NOCTX,
     .sig = SIGTERM,
   };
   
@@ -181,8 +177,8 @@ int main(int argc, char *argv[])
     switch (c) {
       case CMD_HELP    :  showHelp(1, argv[0], 0);
       case CMD_VERSION :  showVersion();
-      case 'c'         :  args.ctx = atoi(optarg);    break;
-      case 's'         :  args.sig = str2sig(optarg); break;
+      case 'c'         :  args.xid = Evc_xidopt2xid(optarg,true); break;
+      case 's'         :  args.sig = str2sig(optarg);             break;
       default          :
        WRITE_MSG(2, "Try '");
        WRITE_STR(2, argv[0]);
@@ -197,15 +193,15 @@ int main(int argc, char *argv[])
     return EXIT_FAILURE;
   }
 
-  if (args.ctx==VC_NOCTX && optind==argc) {
+  if (args.xid==VC_NOCTX && optind==argc) {
     WRITE_MSG(2, "No pid specified\n");
     return EXIT_FAILURE;
   }
 
   if (optind==argc)
-    fail += kill_wrapper(args.ctx, "0", args.sig);
+    fail += kill_wrapper(args.xid, "0", args.sig);
   else for (;optind<argc;++optind)
-    fail += kill_wrapper(args.ctx, argv[optind], args.sig);
+    fail += kill_wrapper(args.xid, argv[optind], args.sig);
 
   return fail==0 ? EXIT_SUCCESS : EXIT_FAILURE;
 }
index 44fe511..158e166 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: vlimit.c,v 1.1.2.3 2004/02/20 19:35:50 ensc Exp $
+// $Id: vlimit.c,v 1.20 2005/03/24 12:44:17 ensc Exp $
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 //  
@@ -29,7 +29,8 @@
 #include "compat.h"
 
 #include "vserver.h"
-#include "vserver-internal.h"
+#include "internal.h"
+#include "util.h"
 
 #include <getopt.h>
 #include <string.h>
 #include <assert.h>
 #include <stdbool.h>
 #include <stdio.h>
+#include <stdlib.h>
+#include <libgen.h>
+#include <sys/resource.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <ctype.h>
 
-#define VERSION_COPYRIGHT_DISCLAIMER
+#define ENSC_WRAPPERS_PREFIX   "vlimit: "
+#define ENSC_WRAPPERS_UNISTD   1
+#define ENSC_WRAPPERS_VSERVER  1
+#include <wrappers.h>
 
-inline static void UNUSED
-writeStr(int fd, char const *cmd)
-{
-  (void)write(fd, cmd, strlen(cmd));
-}
+#define CMD_HELP               0x1000
+#define CMD_VERSION            0x1001
+#define CMD_XID                        0x4000
+#define CMD_DIR                        0x8000
+#define CMD_MISSINGOK          0x8001
 
-#define WRITE_MSG(FD,X)         (void)(write(FD,X,sizeof(X)-1))
-#define WRITE_STR(FD,X)         writeStr(FD,X)
+int            wrapper_exit_code = 255;
 
 #define NUMLIM(X) \
 { #X, required_argument, 0, 2048|X }
+#define OPT_RESLIM(RES,V) \
+  { #RES, required_argument, 0, 2048|RLIMIT_##V }
 
 static struct option const
 CMDLINE_OPTIONS[] = {
-  { "help",     no_argument,  0, 'h' },
-  { "version",  no_argument,  0, 'v' },
-  { "all",      no_argument,  0, 'a' },
+  { "help",      no_argument,       0, CMD_HELP },
+  { "version",   no_argument,       0, CMD_VERSION },
+  { "all",       no_argument,       0, 'a' },
+  { "xid",       required_argument, 0, CMD_XID },
+  { "dir",       required_argument, 0, CMD_DIR },
+  { "missingok", no_argument,       0, CMD_MISSINGOK },
   NUMLIM( 0), NUMLIM( 1), NUMLIM( 2), NUMLIM( 3),
   NUMLIM( 4), NUMLIM( 5), NUMLIM( 6), NUMLIM( 7),
   NUMLIM( 8), NUMLIM( 9), NUMLIM(10), NUMLIM(11),
@@ -65,16 +80,57 @@ CMDLINE_OPTIONS[] = {
   NUMLIM(20), NUMLIM(21), NUMLIM(22), NUMLIM(23),
   NUMLIM(24), NUMLIM(25), NUMLIM(26), NUMLIM(27),
   NUMLIM(28), NUMLIM(29), NUMLIM(30), NUMLIM(31),
+  OPT_RESLIM(cpu,     CPU),
+  OPT_RESLIM(fsize,   FSIZE),
+  OPT_RESLIM(data,    DATA),
+  OPT_RESLIM(stack,   STACK),
+  OPT_RESLIM(core,    CORE),
+  OPT_RESLIM(rss,     RSS),
+  OPT_RESLIM(nproc,   NPROC),
+  OPT_RESLIM(nofile,  NOFILE),
+  OPT_RESLIM(memlock, MEMLOCK),
+  OPT_RESLIM(as,      AS),
+  OPT_RESLIM(locks,   LOCKS),
   { 0,0,0,0 }
 };
 
+#define REV_RESLIM(X)  [RLIMIT_##X] = #X
+static char const * const LIMIT_STR[] = {
+  REV_RESLIM(CPU),     REV_RESLIM(FSIZE), REV_RESLIM(DATA),  REV_RESLIM(STACK),
+  REV_RESLIM(CORE),    REV_RESLIM(RSS),   REV_RESLIM(NPROC), REV_RESLIM(NOFILE),
+  REV_RESLIM(MEMLOCK), REV_RESLIM(AS),    REV_RESLIM(LOCKS)
+};
+
 static void
 showHelp(int fd, char const *cmd, int res)
 {
+  VSERVER_DECLARE_CMD(cmd);
+  
   WRITE_MSG(fd, "Usage:  ");
   WRITE_STR(fd, cmd);
   WRITE_MSG(fd,
-           " -c <xid> [-a|--all] [-MSH  --<nr> <value>]*\n"
+           " [--xid|-c <xid>] [-nd] [-a|--all] [[-MSH] --(<resource>|<nr>) <value>]*\n"
+           "               [--dir <pathname> [--missingok]] [--] [<program> <args>*]\n\n"
+           "Options:\n"
+           "    -c|--xid <xid>\n"
+           "                ...  operate on context <xid>\n"
+           "    -a|--all    ...  show all available limits\n"
+           "    -n          ...  do not resolve limit-names\n"
+           "    -d          ...  show limits in decimal\n"
+           "    -M          ...  set Minimum limit\n"
+           "    -S          ...  set Soft limit\n"
+           "    -H          ...  set Hard limit (assumed by default, when neither\n"
+           "                     M nor S was requested)\n"
+           "    --dir <pathname>\n"
+           "                ...  read limits from <pathname>/; allowed filenames are\n"
+           "                     <resource> and <resource>.{min,soft,hard}. When a limit\n"
+           "                     was set by the CLI already, the corresponding file\n"
+           "                     will be ignored\n"
+           "    --missingok ...  do not fail when <pathname> does not exist\n"
+           "    --<resource>|<nr> <value>\n"
+           "                ...  set specified (MSH) limit for <resource> to <value>\n\n"
+           "Valid values for resource are cpu, fsize, data, stack, core, rss, nproc,\n"
+           "nofile, memlock, as and locks.\n\n"
            "Please report bugs to " PACKAGE_BUGREPORT "\n");
   exit(res);
 }
@@ -90,6 +146,16 @@ showVersion()
   exit(0);
 }
 
+static size_t
+fmtHex(char *ptr, vc_limit_t lim)
+{
+  memcpy(ptr, "0x", 2);
+  return utilvserver_fmt_xuint64(ptr+2, lim) + 2;
+}
+
+static bool            do_resolve = true;
+static size_t          (*fmt_func)(char *, vc_limit_t) = fmtHex;
+
 static void *
 appendLimit(char *ptr, bool do_it, vc_limit_t lim)
 {
@@ -97,15 +163,11 @@ appendLimit(char *ptr, bool do_it, vc_limit_t lim)
   ptr += 2;
   if (do_it) {
     if (lim==VC_LIM_INFINITY) {
-      strcpy(ptr, "INF");
+      strcpy(ptr, "inf");
       ptr += 3;
     }
     else {
-      memcpy(ptr, "0x", 2);
-      ptr += 2;
-
-      ptr += utilvserver_uint2str(ptr, 20, (lim>>32),      16);
-      ptr += utilvserver_uint2str(ptr, 20, lim&0xffffffff, 16);
+      ptr += (*fmt_func)(ptr, lim);
       *ptr = ' ';
     }
   }
@@ -125,14 +187,14 @@ showAll(int ctx)
 
   if (vc_get_rlimit_mask(ctx, &mask)==-1) {
     perror("vc_get_rlimit_mask()");
-    exit(1);
+    exit(wrapper_exit_code);
   }
 
   for (i=0; i<32; ++i) {
     uint32_t           bitmask = (1<<i);
     struct vc_rlimit   limit;
-    char               buf[100], *ptr=buf;
-    
+    char               buf[128], *ptr=buf;
+
     if (((mask.min|mask.soft|mask.hard) & bitmask)==0) continue;
     if (vc_get_rlimit(ctx, i, &limit)==-1) {
       perror("vc_get_rlimit()");
@@ -140,20 +202,27 @@ showAll(int ctx)
     }
 
     memset(buf, ' ', sizeof buf);
-    ptr += utilvserver_uint2str(ptr, 100, i, 10);
-    *ptr = ' ';
+    if (do_resolve && i<DIM_OF(LIMIT_STR)) {
+      size_t           l = strlen(LIMIT_STR[i]);
+      memcpy(ptr, LIMIT_STR[i], l);
+      ptr += l;
+    }
+    else {
+      ptr += utilvserver_fmt_uint(ptr, i);
+      *ptr = ' ';
+    }
 
     ptr  = appendLimit(buf+10, mask.min &bitmask, limit.min);
     ptr  = appendLimit(buf+30, mask.soft&bitmask, limit.soft);
     ptr  = appendLimit(buf+50, mask.hard&bitmask, limit.hard);
 
     *ptr++ = '\n';
-    write(1, buf, ptr-buf);
- }
+    Vwrite(1, buf, ptr-buf);
 }
 }
 
 static void
-  setLimits(int ctx, struct vc_rlimit const limits[], uint32_t mask)
+setLimits(int ctx, struct vc_rlimit const limits[], uint32_t mask)
 {
   size_t               i;
   for (i=0; i<32; ++i) {
@@ -164,14 +233,103 @@ static void
   }
 }
 
+static vc_limit_t
+readValue(int fd, char const *filename)
+{
+  char         buf[128];
+  size_t       len = Eread(fd, buf, sizeof(buf)-1);
+  vc_limit_t   res;
+
+  buf[len] = '\0';
+
+  if (!vc_parseLimit(buf, &res)) {
+    WRITE_MSG(2, "Invalid limit in '");
+    WRITE_STR(2, filename);
+    WRITE_STR(2, "'\n");
+    exit(wrapper_exit_code);
+  }
+
+  return res;
+}
+
+static bool
+readFile(char const *file, char *base, char const *suffix,
+        vc_limit_t *limit)
+{
+  int          fd;
+  
+  strcpy(base, suffix);
+  fd = open(file, O_RDONLY);
+  if (fd!=-1) {
+    *limit = readValue(fd, file);
+    Eclose(fd);
+  }
+
+  return fd!=-1;
+}
+        
+static void
+readFromDir(struct vc_rlimit limits[32], uint_least32_t *mask,
+           char const *pathname, bool missing_ok)
+{
+  struct stat          st;
+  size_t               i;
+  size_t               l_pathname = strlen(pathname);
+  char                 buf[l_pathname + sizeof("/memlock.hard") + 32];
+  
+  if (stat(pathname, &st)==-1) {
+    if (errno==ENOENT && missing_ok) return;
+    PERROR_Q("vlimit: fstat", pathname);
+    exit(wrapper_exit_code);
+  }
+
+  memcpy(buf, pathname, l_pathname);
+  if (l_pathname>0 && pathname[l_pathname-1]!='/')
+    buf[l_pathname++] = '/';
+    
+  for (i=0; i<DIM_OF(LIMIT_STR); ++i) {
+    size_t     l_res;
+    char *     ptr   = buf+l_pathname;
+
+    // ignore unimplemented limits
+    if (LIMIT_STR[i]==0) continue;
+    
+    // ignore limits set on cli already
+    if (*mask & (1<<i)) continue;
+
+    l_res = strlen(LIMIT_STR[i]);
+    memcpy(ptr, LIMIT_STR[i], l_res+1);
+    while (*ptr) {
+      *ptr = tolower(*ptr);
+      ++ptr;
+    }
+
+    if (readFile(buf, ptr, "", &limits[i].min)) {
+      limits[i].soft = limits[i].hard = limits[i].min;
+      *mask |= (1<<i);
+    }
+
+    if (readFile(buf, ptr, ".min",  &limits[i].min))
+      *mask |= (1<<i);
+
+    if (readFile(buf, ptr, ".soft", &limits[i].soft))
+      *mask |= (1<<i);
+
+    if (readFile(buf, ptr, ".hard", &limits[i].hard))
+      *mask |= (1<<i);
+  }
+}
+
 int main (int argc, char *argv[])
 {
   // overall used limits
   uint32_t             lim_mask = 0;
   int                  set_mask = 0;
   struct vc_rlimit     limits[32];
-  bool                 show_all = false;
-  xid_t                        ctx      = VC_NOCTX;
+  bool                 show_all   = false;
+  xid_t                        ctx        = VC_NOCTX;
+  char const *         dir        = 0;
+  bool                 missing_ok = false;
 
   {
     size_t             i;
@@ -183,28 +341,39 @@ int main (int argc, char *argv[])
   }
   
   while (1) {
-    int                c = getopt_long(argc, argv, "MSHhvac:", CMDLINE_OPTIONS, 0);
+    int                c = getopt_long(argc, argv, "+MSHndac:", CMDLINE_OPTIONS, 0);
     if (c==-1) break;
 
     if (2048<=c && c<2048+32) {
       int              id  = c-2048;
       vc_limit_t       val;
       
-      if (strcmp(optarg, "inf")==0) val = VC_LIM_INFINITY;
-      else                         val = atoll(optarg);
+      if (!vc_parseLimit(optarg, &val)) {
+       WRITE_MSG(2, "Can not parse limit '");
+       WRITE_STR(2, optarg);
+       WRITE_STR(2, "'\n");
+       exit(wrapper_exit_code);
+      }
 
+      if (set_mask==0)  set_mask=4;
+      
       if (set_mask & 1) limits[id].min  = val;
       if (set_mask & 2) limits[id].soft = val;
-      if (set_mask & 4) limits[id].soft = val;
+      if (set_mask & 4) limits[id].hard = val;
 
       lim_mask |= (1<<id);
       set_mask  = 0;
     }
     else switch (c) {
-      case 'h'         :  showHelp(1, argv[0], 0);
-      case 'v'         :  showVersion();
-      case 'c'         :  ctx      = atoi(optarg); break;
-      case 'a'         :  show_all = true;         break;
+      case CMD_HELP    :  showHelp(1, argv[0], 0);
+      case CMD_VERSION :  showVersion();
+      case 'a'         :  show_all   = true;            break;
+      case 'n'         :  do_resolve = false;           break;
+      case CMD_DIR     :  dir        = optarg;          break;
+      case CMD_MISSINGOK:  missing_ok = true;            break;
+      case CMD_XID     :  /*@fallthrough@*/
+      case 'c'         :  ctx = Evc_xidopt2xid(optarg,true);   break;
+      case 'd'         :  fmt_func   = utilvserver_fmt_uint64; break;
       case 'M'         :
       case 'S'         :
       case 'H'         :
@@ -220,18 +389,22 @@ int main (int argc, char *argv[])
        WRITE_MSG(2, "Try '");
        WRITE_STR(2, argv[0]);
        WRITE_MSG(2, " --help\" for more information.\n");
-       return EXIT_FAILURE;
+       exit(wrapper_exit_code) ;
        break;
     }
   }
 
-  if (ctx==VC_NOCTX) {
-    WRITE_MSG(2, "No context specified; try '--help' for more information\n");
-    return EXIT_FAILURE;
-  }
+  if (ctx==VC_NOCTX)
+    ctx = Evc_get_task_xid(0);
+
+  if (dir)
+    readFromDir(limits, &lim_mask, dir, missing_ok);
 
   setLimits(ctx, limits, lim_mask);
   if (show_all) showAll(ctx);
 
+  if (optind<argc)
+    EexecvpD(argv[optind], argv+optind);
+
   return EXIT_SUCCESS;
 }
diff --git a/src/vnamespace.c b/src/vnamespace.c
new file mode 100644 (file)
index 0000000..459cd0f
--- /dev/null
@@ -0,0 +1,196 @@
+// $Id: vnamespace.c,v 1.5 2004/08/19 14:31:24 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "util.h"
+#include <lib_internal/sys_clone.h>
+
+#include <vserver.h>
+
+#include <getopt.h>
+#include <libgen.h>
+#include <errno.h>
+#include <signal.h>
+#include <sched.h>
+
+#define ENSC_WRAPPERS_PREFIX   "vnamespace: "
+#define ENSC_WRAPPERS_UNISTD   1
+#define ENSC_WRAPPERS_VSERVER  1
+#include <wrappers.h>
+
+#define CMD_HELP               0x1000
+#define CMD_VERSION            0x1001
+
+int            wrapper_exit_code  =  255;
+
+struct option const
+CMDLINE_OPTIONS[] = {
+  { "help",       no_argument,       0, CMD_HELP },
+  { "version",    no_argument,       0, CMD_VERSION },
+  { "new",        no_argument,       0, 'n' },
+  { "enter",      required_argument, 0, 'e' },
+  { "set",        no_argument,       0, 's' },
+  { "cleanup",    no_argument,       0, 'c' },
+  {0,0,0,0}
+};
+
+static void
+showHelp(int fd, char const *cmd, int res)
+{
+  WRITE_MSG(fd, "Usage: ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " <operation> [--] [<program> <args>*]\n"
+           "\n"
+           "<operation> can be one of:\n"
+           "    --new|-n          ...  create new namespace and execute <program> there;\n"
+           "                           <program> is mandatory in this case\n"
+           "    --enter|-e <xid>  ...  enter the namespace of context <xid> and execute\n"
+           "                           <program> there; <program> is mandatory in this\n"
+           "                           case\n"
+           "    --set|-s          ...  make current namespace the namespace of the\n"
+           "                           current context\n"
+           "    --cleanup|-c      ...  remove all mounts from the namespace of the\n"
+           "                           current context\n"
+           "\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+
+  exit(res);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "vnamespace " VERSION " -- manages filesystem-namespace\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2004 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+static void
+newNamespace(char const *cmd)
+{
+  pid_t                pid;
+
+  signal(SIGCHLD, SIG_DFL);
+  
+#ifdef NDEBUG    
+  pid = sys_clone(CLONE_NEWNS|CLONE_VFORK|SIGCHLD, 0);
+#else
+  pid = sys_clone(CLONE_NEWNS|SIGCHLD, 0);
+#endif
+
+  switch (pid) {
+    case -1    :
+      perror("vnamespace: clone()");
+      exit(wrapper_exit_code);
+    case 0     :
+      break;
+    default    :
+      exitLikeProcess(pid, cmd, wrapper_exit_code);
+  }
+}
+
+static void
+enterNamespace(xid_t xid)
+{
+  if (vc_enter_namespace(xid)==-1) {
+    perror("vnamespace: vc_enter_namespace()");
+    exit(255);
+  }
+}
+
+static void
+setNamespace()
+{
+  if (vc_set_namespace()==-1) {
+    perror("vnamespace: vc_set_namespace()");
+    exit(255);
+  }
+}
+
+static void
+cleanupNamespace()
+{
+  if (vc_cleanup_namespace()==-1) {
+    perror("vnamespace: vc_cleanup_namespace()");
+    exit(255);
+  }
+}
+
+int main(int argc, char *argv[])
+{
+  bool         do_new     = false;
+  bool         do_enter   = false;
+  bool         do_set     = false;
+  bool         do_cleanup = false;
+  xid_t                xid        = VC_NOCTX;
+  int          sum        = 0;
+  
+  while (1) {
+    int                c = getopt_long(argc, argv, "+nsce:", CMDLINE_OPTIONS, 0);
+    if (c==-1) break;
+
+    switch (c) {
+      case CMD_HELP    :  showHelp(1, argv[0], 0);
+      case CMD_VERSION :  showVersion();
+      case 'n'         :  do_new     = true; break;
+      case 's'         :  do_set     = true; break;
+      case 'c'         :  do_cleanup = true; break;
+      case 'e'         :
+       do_enter = true;
+       xid      = Evc_xidopt2xid(optarg,true);
+       break;
+
+      default          :
+       WRITE_MSG(2, "Try '");
+       WRITE_STR(2, argv[0]);
+       WRITE_MSG(2, " --help\" for more information.\n");
+       return 255;
+       break;
+    }
+  }
+
+  sum = ((do_new ? 1 : 0) + (do_enter ? 1 : 0) +
+        (do_set ? 1 : 0) + (do_cleanup ? 1 : 0));
+  
+  if (sum==0)
+    WRITE_MSG(2, "No operation was specified; try '--help' for more information\n");
+  else if (sum>1)
+    WRITE_MSG(2, "Can not specify multiple operations; try '--help' for more information\n");
+  else if (optind==argc && (do_new || do_enter))
+    WRITE_MSG(2, "No command specified; try '--help' for more information\n");
+  else {
+    if      (do_new)     newNamespace(argv[optind]);
+    else if (do_set)     setNamespace();
+    else if (do_cleanup) cleanupNamespace();
+    else if (do_enter)   enterNamespace(xid);
+
+    if (optind<argc)
+      EexecvpD(argv[optind], argv+optind);
+
+    return EXIT_SUCCESS;
+  }
+
+  return 255;
+}
diff --git a/src/vps.c b/src/vps.c
new file mode 100644 (file)
index 0000000..4aa7fdf
--- /dev/null
+++ b/src/vps.c
@@ -0,0 +1,271 @@
+// $Id: vps.c,v 1.13 2005/03/24 12:44:17 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "util.h"
+#include "pathconfig.h"
+
+#include <lib/vserver.h>
+#include <lib/fmt.h>
+#include <assert.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <errno.h>
+
+#define ENSC_WRAPPERS_VSERVER  1
+#define ENSC_WRAPPERS_STDLIB   1
+#define ENSC_WRAPPERS_UNISTD   1
+#define ENSC_WRAPPERS_FCNTL    1
+#include <wrappers.h>
+
+#define CTXNR_WIDTH    5
+#define HUNK_SIZE      0x4000
+#define CONTEXT_WIDTH  20
+#define CONTEXT_PLACE  "                    "
+
+int wrapper_exit_code = 254;
+
+struct ContextMapping {
+    xid_t              ctx;
+    char const *       id;
+};
+
+static struct ContextMapping           *mapping    = 0;
+static size_t                          mapping_len = 0;
+
+
+static void
+showHelp(int fd, char const *cmd, int res)
+{
+  WRITE_MSG(fd, "Usage:  ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " <ps-opts>*\n\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+  exit(res);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "vps " VERSION " -- shows processes in vserver-contexts\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2004 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+
+static size_t
+writeContextInfo(xid_t ctx, char const *name)
+{
+  size_t       l1  = name==0 ? 0 : strlen(name);
+  size_t       res = CTXNR_WIDTH + 1;
+  
+  if (ctx==VC_NOCTX) {
+    if (3<CTXNR_WIDTH) Vwrite(1, CONTEXT_PLACE, CTXNR_WIDTH-3);
+    Vwrite(1, "ERR ", 4);
+  }
+  else {
+    char       buf[sizeof(ctx)*3+1];
+    size_t     l = utilvserver_fmt_ulong(buf, ctx);
+
+    if (l<CTXNR_WIDTH) Vwrite(1, CONTEXT_PLACE, CTXNR_WIDTH-l);
+    Vwrite(1, buf, l);
+    Vwrite(1, " ", 1);
+  }
+
+  if (l1!=0) {
+    assert(name!=0);
+    Vwrite(1, name, l1);
+  }
+
+  return res+l1;
+}
+
+static xid_t
+extractCtx(char *pid_str)
+{
+  pid_t                pid;
+  
+  while (*pid_str==' ') ++pid_str;
+  pid = atoi(pid_str);
+
+  return vc_get_task_xid(pid);
+}
+
+static char const *
+resolveCtx(xid_t ctx)
+{
+  char const * res;
+  size_t       i;
+
+  for (i=0; i<mapping_len; ++i)
+    if (mapping[i].ctx==ctx) return mapping[i].id;
+
+  ++mapping_len;
+  mapping = Erealloc(mapping, mapping_len * sizeof(mapping[0]));
+  
+  if (ctx==0)      res = strdup("MAIN");
+  else if (ctx==1) res = strdup("ALL_PROC");
+  else {
+    vcCfgStyle style = vcCFG_AUTO;
+    char       *tmp  = vc_getVserverByCtx(ctx, &style,0);
+    if (tmp) res = vc_getVserverName(tmp, style);
+    else     res = 0;
+    free(tmp);
+  }
+
+  mapping[mapping_len-1].ctx = ctx;
+  mapping[mapping_len-1].id  = res;
+  return res;
+}
+
+static char *
+readOutput(int fd, size_t *total_len)
+{
+  size_t       len  = 2*HUNK_SIZE;
+  char         *buf = Emalloc(len+1);
+  size_t       offset = 0;
+
+  for (;;) {
+    size_t     l;
+
+    while (offset >= len) {
+      len += HUNK_SIZE;
+      buf  = Erealloc(buf, len+1);
+    }
+    
+    l = Eread(fd, buf+offset, len - offset);
+    if (l==0) break;
+
+    offset += l;
+  }
+
+  buf[offset] = '\0';
+
+  if (total_len)
+    *total_len = offset;
+
+  return buf;
+}
+
+static void
+processOutput(char *data, size_t len)
+{
+  size_t       pid_end;
+  char *       eol_pos = strchr(data, '\n');
+  char *       pos;
+
+  if (eol_pos==0) eol_pos  = data + len;
+  else            *eol_pos = '\0';
+  
+  pos = strstr(data, "PID");
+  if (pos==0) {
+    WRITE_MSG(2, "Failed to parse ps-output\n");
+    exit(wrapper_exit_code);
+  }
+
+  pid_end = pos-data + 4;
+
+  Vwrite(1, data, pid_end);
+  Vwrite(1, "CONTEXT" CONTEXT_PLACE, CONTEXT_WIDTH);
+  Vwrite(1, data+pid_end, eol_pos-(data+pid_end));
+  Vwrite(1, "\n", 1);
+
+  len -= eol_pos-data;
+  data = eol_pos+1;
+  
+  while (len > 1) {
+    char const *vserver_name = 0;
+    xid_t      ctx;
+    size_t     l;
+
+    --len;
+    eol_pos = strchr(data, '\n');
+    
+    if (eol_pos==0) eol_pos  = data + len;
+
+    ctx          = extractCtx(data + pid_end - 6);
+    vserver_name = resolveCtx(ctx);
+
+    Vwrite(1, data, pid_end);
+    l = writeContextInfo(ctx, vserver_name);
+    if (l<CONTEXT_WIDTH) Vwrite(1, CONTEXT_PLACE, CONTEXT_WIDTH-l);
+    else                 Vwrite(1, " ", 1);
+    Vwrite(1, data+pid_end, eol_pos-(data+pid_end));
+    Vwrite(1, "\n", 1);
+    
+    len -= eol_pos-data;
+    data = eol_pos+1;
+  }
+}
+
+int main(int argc, char *argv[])
+{
+  int          p[2];
+  pid_t                pid;
+  char *       data;
+  size_t       len;
+  char const * errptr;
+
+  if (argc>1) {
+    if (strcmp(argv[1], "--help")   ==0) showHelp(1, argv[0], 0);
+    if (strcmp(argv[1], "--version")==0) showVersion();
+  }
+
+  signal(SIGCHLD, SIG_DFL);
+
+  if (!switchToWatchXid(&errptr)) {
+    perror(errptr);
+    exit(wrapper_exit_code);
+  }
+
+  if (access("/proc/uptime",R_OK)==-1 && errno==ENOENT)
+    WRITE_MSG(2,
+             "WARNING: can not access /proc/uptime. Usually, this is caused by\n"
+             "         procfs-security. Please read the FAQ for more details\n"
+             "         http://www.linux-vserver.org/index.php?page=Linux-Vserver+FAQ\n");
+
+  Epipe(p);
+  pid = Efork();
+
+  if (pid==0) {
+    int                fd = Eopen("/dev/null", O_RDONLY, 0);
+    Edup2(fd,   0);
+    Edup2(p[1], 1);
+    Eclose(p[0]);
+    Eclose(p[1]);
+    Eclose(fd);
+
+    argv[0] = "ps";
+
+    Eexecv(PS_PROG, argv);
+  }
+
+  Eclose(p[1]);
+  data = readOutput(p[0], &len);
+  Eclose(p[0]);
+  
+  processOutput(data, len);
+  exitLikeProcess(pid, "ps", wrapper_exit_code);
+}
index baeaa74..0384eb6 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: vreboot.c,v 1.1 2003/09/29 22:01:57 ensc Exp $
+// $Id: vreboot.c,v 1.2 2003/09/30 20:16:53 ensc Exp $
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 // based on vreboot.cc by Jacques Gelinas
        Used to send a reboot message to the reboot manager. It opens /dev/reboot
        and write "reboot\n".
 */
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
diff --git a/src/vrsetup.c b/src/vrsetup.c
new file mode 100644 (file)
index 0000000..5408112
--- /dev/null
@@ -0,0 +1,133 @@
+// $Id: vrsetup.c,v 1.4 2004/02/27 04:42:10 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "util.h"
+
+#include <getopt.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+
+#define ENSC_WRAPPERS_FCNTL    1
+#define ENSC_WRAPPERS_IOCTL    1
+#define ENSC_WRAPPERS_UNISTD   1
+#include <wrappers.h>
+
+int wrapper_exit_code = 1;
+
+
+#define VROOT_SET_DEV           0x5600
+#define VROOT_CLR_DEV           0x5601
+#define VROOT_INC_USE           0x56FE
+#define VROOT_DEC_USE           0x56FF
+
+struct option const
+CMDLINE_OPTIONS[] = {
+  { "help",     no_argument,  0, 'h' },
+  { "version",  no_argument,  0, 'v' },
+  { 0,0,0,0 }
+};
+
+static void
+showHelp(int fd, char const *cmd, int res)
+{
+  WRITE_MSG(fd, "Usage:  ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " [-dID] <rootdev>\n"
+           "    or  ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " <rootdev> <real-rootdev>\n\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+  exit(res);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "vrsetup " VERSION " -- set up and control vroot devices\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2004 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+
+int main(int argc, char *argv[])
+{
+  bool         do_delete    = false;
+  bool         do_decrement = false;
+  bool         do_increment = false;
+  bool         do_setup     = false;
+  char const * root_device      = 0;
+  char const * real_root_device = 0;
+  int          fd;
+  
+  while (1) {
+    int                c = getopt_long(argc, argv, "dID", CMDLINE_OPTIONS, 0);
+    if (c==-1) break;
+
+    switch (c) {
+      case 'h'         :  showHelp(1, argv[0], 0);
+      case 'v'         :  showVersion();
+      case 'd'         :  do_delete    = true; break;
+      case 'D'         :  do_decrement = true; break;
+      case 'I'         :  do_increment = true; break;
+      default          :
+       WRITE_MSG(2, "Try '");
+       WRITE_STR(2, argv[0]);
+       WRITE_MSG(2, " --help\" for more information.\n");
+       return EXIT_FAILURE;
+       break;
+    }
+  }
+
+  do_setup = !(do_delete || do_decrement || do_increment);
+
+  if (optind+1>argc) {
+    WRITE_MSG(2, "No vroot-device given\n");
+    return EXIT_FAILURE;
+  }
+  
+  if (do_setup && optind+2>argc) {
+    WRITE_MSG(2, "No real root-device given\n");
+    return EXIT_FAILURE;
+  }
+       
+  root_device = argv[optind];
+  if (do_setup) real_root_device = argv[optind+1];
+
+  fd = EopenD(root_device, O_RDONLY, 0);
+  if      (do_increment) Eioctl(fd, VROOT_INC_USE, 0);
+  else if (do_decrement) Eioctl(fd, VROOT_DEC_USE, 0);
+  else if (do_delete)    Eioctl(fd, VROOT_CLR_DEV, 0);
+  else {
+    int                dfd = EopenD(real_root_device, O_RDONLY, 0);
+    Eioctl(fd, VROOT_SET_DEV, (void*)dfd);
+    Eclose(dfd);
+  }
+
+  Eclose(fd);
+  return EXIT_SUCCESS;
+}
diff --git a/src/vsched.c b/src/vsched.c
new file mode 100644 (file)
index 0000000..6f93a61
--- /dev/null
@@ -0,0 +1,155 @@
+// $Id: vsched.c,v 1.6 2004/12/21 07:19:20 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "util.h"
+#include "vserver.h"
+
+#include <errno.h>
+#include <unistd.h>
+#include <getopt.h>
+#include <libgen.h>
+
+#define ENSC_WRAPPERS_PREFIX   "vsched: "
+#define ENSC_WRAPPERS_VSERVER  1
+#define ENSC_WRAPPERS_UNISTD   1
+#include <wrappers.h>
+
+#define CMD_HELP               0x1000
+#define CMD_VERSION            0x1001
+#define CMD_XID                        0x4000
+#define CMD_FRATE              0x4001
+#define CMD_INTERVAL           0x4002
+#define CMD_TOKENS             0x4003
+#define CMD_TOK_MIN            0x4004
+#define CMD_TOK_MAX            0x4005
+#define CMD_CPU_MASK           0x4006
+#define CMD_PRIO_BIAS          0x4007
+
+int                    wrapper_exit_code = 255;
+
+struct option const
+CMDLINE_OPTIONS[] = {
+  { "help",     no_argument,  0, CMD_HELP },
+  { "version",  no_argument,  0, CMD_VERSION },
+  { "ctx",           required_argument, 0, CMD_XID },
+  { "xid",           required_argument, 0, CMD_XID },
+  { "fill-rate",     required_argument, 0, CMD_FRATE },
+  { "interval",      required_argument, 0, CMD_INTERVAL },
+  { "tokens",        required_argument, 0, CMD_TOKENS },
+  { "tokens_min",    required_argument, 0, CMD_TOK_MIN },
+  { "tokens-min",    required_argument, 0, CMD_TOK_MIN },
+  { "tokens_max",    required_argument, 0, CMD_TOK_MAX },
+  { "tokens-max",    required_argument, 0, CMD_TOK_MAX },
+  { "prio_bias",     required_argument, 0, CMD_PRIO_BIAS },
+  { "prio-bias",     required_argument, 0, CMD_PRIO_BIAS },
+  { "priority_bias", required_argument, 0, CMD_PRIO_BIAS },
+  { "priority-bias", required_argument, 0, CMD_PRIO_BIAS },
+  { "cpu_mask",      required_argument, 0, CMD_CPU_MASK },
+  {0,0,0,0}
+};
+
+static void
+showHelp(int fd, char const *cmd, int res)
+{
+  VSERVER_DECLARE_CMD(cmd);
+
+  WRITE_MSG(fd, "Usage:\n  ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " [--xid <xid>] [--fill-rate <rate>] [--interval <interval>] [--tokens <tokens>] [--tokens-min <tokens>] [--tokens-max <tokens>] [--prio-bias <bias>] [--] [<command> <args>*]\n"
+           "\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+
+  exit(res);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "vsched " VERSION " -- modifies scheduling parameters\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2003,2004 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+#define SETVAL(ATTR,MASK) \
+  sched.ATTR      = atoi(optarg); \
+  sched.set_mask |= MASK;
+
+int main(int argc, char *argv[])
+{
+  xid_t                        xid   = VC_NOCTX;
+  struct vc_set_sched  sched = {
+    .set_mask = 0
+  };
+  
+  while (1) {
+    int                c = getopt_long(argc, argv, "+", CMDLINE_OPTIONS, 0);
+    if (c==-1) break;
+
+    switch (c) {
+      case CMD_HELP    :  showHelp(1, argv[0], 0);
+      case CMD_VERSION :  showVersion();
+      case CMD_XID     :  xid = Evc_xidopt2xid(optarg,true);         break;
+      case CMD_FRATE   :  SETVAL(fill_rate,     VC_VXSM_FILL_RATE);  break;
+      case CMD_INTERVAL        :  SETVAL(interval,      VC_VXSM_INTERVAL);   break;
+      case CMD_TOKENS  :  SETVAL(tokens,        VC_VXSM_TOKENS);     break;
+      case CMD_TOK_MIN :  SETVAL(tokens_min,    VC_VXSM_TOKENS_MIN); break;
+      case CMD_TOK_MAX :  SETVAL(tokens_max,    VC_VXSM_TOKENS_MAX); break;
+      case CMD_PRIO_BIAS:  SETVAL(priority_bias, VC_VXSM_PRIO_BIAS);  break;
+      case CMD_CPU_MASK        :
+       WRITE_MSG(2, "vsched: WARNING: the '--cpu_mask' parameter is deprecated and will not have any effect\n");
+       break;
+      default          :
+       WRITE_MSG(2, "Try '");
+       WRITE_STR(2, argv[0]);
+       WRITE_MSG(2, " --help\" for more information.\n");
+       return EXIT_FAILURE;
+       break;
+    }
+  }
+
+  if (xid==VC_NOCTX && optind==argc) {
+    WRITE_MSG(2, "Without a program, '--xid' must be used; try '--help' for more information\n");
+    exit(wrapper_exit_code);
+  }
+
+  if (sched.set_mask==0 && optind==argc) {
+    WRITE_MSG(2, "Neither an option nor a program was specified; try '--help' for more information\n");
+    exit(wrapper_exit_code);
+  }
+
+  if (xid==VC_NOCTX)
+    xid = Evc_get_task_xid(0);
+
+  if (sched.set_mask!=0 && vc_set_sched(xid, &sched)==-1) {
+    perror("vc_set_sched()");
+    exit(255);
+  }
+
+  if (optind<argc)
+    EexecvpD(argv[optind],argv+optind);
+
+  return EXIT_SUCCESS;
+}
diff --git a/src/vserver-info.c b/src/vserver-info.c
new file mode 100644 (file)
index 0000000..9a7d6e2
--- /dev/null
@@ -0,0 +1,585 @@
+// $Id: vserver-info.c,v 1.23 2005/07/04 22:36:46 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "lib/utils-legacy.h"
+#include "pathconfig.h"
+#include "util.h"
+
+#include "internal.h"
+#include "vserver.h"
+
+#include <stdlib.h>
+#include <getopt.h>
+#include <assert.h>
+#include <stdbool.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <sys/utsname.h>
+#include <dirent.h>
+#include <strings.h>
+
+#define ENSC_WRAPPERS_FCNTL    1
+#define ENSC_WRAPPERS_IO       1
+#define ENSC_WRAPPERS_UNISTD   1
+#define ENSC_WRAPPERS_VSERVER  1
+#include <wrappers.h>
+
+#undef _POSIX_SOURCE
+#include "capability-compat.h"
+
+typedef enum { tgNONE,tgCONTEXT, tgID, tgRUNNING,
+              tgVDIR, tgNAME, tgCFGDIR, tgAPPDIR,
+              tgAPIVER, tgPXID,
+              tgINITPID, tgINITPID_PID,
+              tgXID, tgUTS, tgSYSINFO,
+              tgFEATURE, tgCANONIFY,
+              tgVERIFYCAP, tgXIDTYPE, tgVERIFYPROC,
+}      VserverTag;
+
+static struct {
+    char const * const tag;
+    VserverTag const   val;
+    char const * const descr;
+}  const TAGS[] = {
+  { "CONTEXT", tgCONTEXT, ("the current and/or assigned context; when an optinal argument "
+                          "evaluates to false,only the current context will be printed") },
+  { "ID",      tgID,      "gives out the vserver-id for the context-xid" },
+  { "RUNNING", tgRUNNING, "gives out '1' when vserver is running; else, it fails without output" },
+  { "VDIR",    tgVDIR,    "gives out the root-directory of the vserver" },
+  { "NAME",    tgNAME,    "gives out the name of the vserver" },
+  { "CFGDIR",  tgCFGDIR,  "gives out the configuration directory of the vserver" },
+  { "APPDIR",  tgAPPDIR,  "gives out the name of the toplevel application cfgdir" },
+  { "INITPID",     tgINITPID,     "gives out the initpid of the given context" },
+  { "INITPID_PID", tgINITPID_PID, "gives out the initpid of the given pid" },
+  { "XID",         tgXID,         "gives out the context-id of the given pid" },
+  { "APIVER",      tgAPIVER,      "gives out the version of the kernel API" },
+  { "UTS",         tgUTS,         ("gives out an uts-entry; possible entries are "
+                                  "context, sysname, nodename, release, version, "
+                                  "machine and domainname") },
+  { "SYSINFO",     tgSYSINFO,     "gives out information about the systen" },
+  { "FEATURE",     tgFEATURE,     "returns 0 iff the queried feature is supported" },
+  { "PXID",        tgPXID,        "returns the xid of the parent context" },
+  { "CANONIFY",    tgCANONIFY,    "canonifies the vserver-name and removes dangerous characters" },
+  { "VERIFYCAP",   tgVERIFYCAP,   "test if the kernel supports linux capabilities" },
+  { "VERIFYPROC",  tgVERIFYPROC,  "test if /proc can be read by contexts!=0" },
+  { "XIDTYPE",     tgXIDTYPE,     "returns the type of the given XID" },
+};
+
+int wrapper_exit_code = 1;
+
+static struct option const
+CMDLINE_OPTIONS[] = {
+  { "help",     no_argument,  0, 'h' },
+  { "version",  no_argument,  0, 'v' },
+  { 0,0,0,0 }
+};
+
+
+static void
+showHelp(int fd, char const *cmd, int res)
+{
+  WRITE_MSG(fd, "Usage:  ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " [-ql] <vserver>|<pid>|<context> <tag>\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+  exit(res);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "vserver-info " VERSION " -- returns information about vservers\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2003 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+static void
+showTags()
+{
+  char const *         delim = "";
+  size_t       i;
+
+  WRITE_MSG(1, "Valid tags are: ");
+  for (i=0; i<DIM_OF(TAGS); ++i) {
+    WRITE_STR(1, delim);
+    WRITE_STR(1, TAGS[i].tag);
+
+    delim = ", ";
+  }
+  WRITE_MSG(1, "\n");
+  exit(0);
+}
+
+static VserverTag
+stringToTag(char const *str)
+{
+  size_t       i;
+  for (i=0; i<DIM_OF(TAGS); ++i)
+    if (strcmp(TAGS[i].tag, str)==0) return TAGS[i].val;
+
+  return tgNONE;
+}
+
+static vc_uts_type
+utsText2Tag(char const *str)
+{
+  if      (strcmp(str, "context")   ==0) return vcVHI_CONTEXT;
+  else if (strcmp(str, "sysname")   ==0) return vcVHI_SYSNAME;
+  else if (strcmp(str, "nodename")  ==0) return vcVHI_NODENAME;
+  else if (strcmp(str, "release")   ==0) return vcVHI_RELEASE;
+  else if (strcmp(str, "version")   ==0) return vcVHI_VERSION;
+  else if (strcmp(str, "machine")   ==0) return vcVHI_MACHINE;
+  else if (strcmp(str, "domainname")==0) return vcVHI_DOMAINNAME;
+  else {
+    WRITE_MSG(2, "Unknown UTS tag\n");
+    exit(1);
+  }
+}
+
+static bool
+verifyProc()
+{
+  char const           *errptr;
+  
+  if (!switchToWatchXid(&errptr)) {
+    perror(errptr);
+    return false;
+  }
+
+  if (access("/proc/uptime", R_OK)==-1) {
+    if (errno!=ENOENT)
+      perror("access(\"/proc/uptime\")");
+    
+    return false;
+  }
+
+  return true;
+}
+
+static bool
+verifyCap()
+{
+  struct __user_cap_header_struct header;
+  struct __user_cap_data_struct user;
+  header.version = _LINUX_CAPABILITY_VERSION;
+  header.pid     = 0;
+
+  if (getuid()!=0) {
+    WRITE_MSG(2, "'VERIFYCAP' can be executed as root only\n");
+    return false;
+  }
+
+//  if( prctl( PR_SET_KEEPCAPS, 1,0,0,0 ) < 0 ) {
+//    perror( "prctl:" );
+//    return false;
+//  }
+  
+  if (capget(&header, &user)==-1) {
+    perror("capget()");
+    return false;
+  }
+
+  user.effective   = 0;
+  user.permitted   = 0;
+  user.inheritable = 0;
+
+  if (capset(&header, &user)==-1) {
+    perror("capset()");
+    return false;
+  }
+
+  return chroot("/")==-1;
+}
+
+static char *
+getAPIVer(char *buf)
+{
+  int          v = vc_get_version();
+  size_t       l;
+  
+  if (v==-1) return 0;
+
+  
+  l = utilvserver_fmt_xulong(0, (unsigned int)v);
+  memcpy(buf, "0x00000000", 10);
+  utilvserver_fmt_xulong(buf+2+8-l, (unsigned int)v);
+
+  return buf;
+}
+
+static char *
+getXid(char *buf, char const *pid_str)
+{
+  pid_t                pid = atoi(pid_str);
+  xid_t                xid = vc_get_task_xid(pid);
+
+  if (xid==VC_NOCTX) perror("vc_get_task_xid()");
+  else {
+    utilvserver_fmt_long(buf, xid);
+    return buf;
+  }
+
+  return 0;
+}
+
+static char *
+getPXid(char UNUSED *buf, char const UNUSED *vserver)
+{
+  // TODO: implement me when available
+  return 0;
+}
+
+static char *
+getInitPid_native(char *buf, xid_t xid)
+{
+  struct vc_vx_info            info;
+  
+  if (vc_get_vx_info(xid, &info)==-1) perror("vc_get_vx_info()");
+  else {
+    utilvserver_fmt_long(buf, info.initpid);
+    return buf;
+  }
+
+  return 0;
+}
+
+#if defined(VC_ENABLE_API_COMPAT) || defined(VC_ENABLE_API_V11)
+static int
+selectPid(struct dirent const *ent)
+{
+  return atoi(ent->d_name)!=0;
+}
+
+static bool
+getInitPid_internal(pid_t pid, xid_t xid, pid_t *res)
+{
+  *res = -1;
+  
+  for (;*res==-1;) {
+    size_t                     bufsize = utilvserver_getProcEntryBufsize();
+    char                       buf[bufsize+1];
+    char                       *pos = 0;
+
+    pos = utilvserver_getProcEntry(pid, "\ns_context: ", buf, bufsize);
+    if (pos==0 && errno==EAGAIN) continue;
+
+    if (pos==0 || (xid_t)atoi(pos)!=xid) return false;
+
+    buf[bufsize] = '\0';
+    pos          = strstr(buf, "\ninitpid: ");
+    
+    if (pos!=0) {
+      pos       += sizeof("\ninitpid: ")-1;
+      if (strncmp(pos, "none", 4)==0) *res = -1;
+      else                            *res = atoi(pos);
+    }
+  }
+
+  return true;
+}
+
+static char *
+getInitPid_emulated(char *buf, xid_t xid)
+{
+  struct dirent **namelist;
+  int          n;
+
+  switchToWatchXid(0); // ignore errors silently...
+  n = scandir("/proc", &namelist, selectPid, alphasort);
+  if (n<0) perror("scandir()");
+  else while (n--) {
+    pid_t      pid;
+    if (!getInitPid_internal(atoi(namelist[n]->d_name), xid, &pid)) continue;
+
+    utilvserver_fmt_long(buf, pid);
+    return buf;
+  }
+
+  return 0;
+}
+#endif // VC_ENABLE_API_COMPAT
+
+static char *
+getInitPid(char *buf, xid_t xid)
+{
+  if (vc_isSupported(vcFEATURE_VINFO))
+    return getInitPid_native(buf, xid);
+  else
+    return getInitPid_emulated(buf, xid);
+}
+
+static char *
+getInitPidPid(char *buf, char const *vserver)
+{
+  struct vc_vx_info    info;
+  pid_t                        pid = atoi(vserver);
+  xid_t                xid = vc_get_task_xid(pid);
+
+  if (xid==VC_NOCTX) perror("vc_get_task_xid()");
+  else if (vc_get_vx_info(xid, &info)==-1) perror("vc_get_vx_info()");
+  else {
+    utilvserver_fmt_long(buf, info.initpid);
+    return buf;
+  }
+
+  return 0;
+}
+
+static char *
+getUTS(char *buf, xid_t xid, size_t argc, char * argv[])
+{
+  if (argc>0) {
+    vc_uts_type        type = utsText2Tag(argv[0]);
+    if (vc_get_vhi_name(xid, type, buf, sizeof(buf)-1)==-1)
+      perror("vc_get_vhi_name()");
+    else
+      return buf;
+  }
+  else {
+    bool               is_passed = false;
+    char               tmp[128];
+#define APPEND_UTS(TYPE)                                               \
+    (((vc_get_vhi_name(xid, TYPE, tmp, sizeof(tmp)-1)!=-1) && (strcat(buf, tmp), strcat(buf, " "), is_passed=true)) || \
+     (strcat(buf, "??? ")))
+
+    if (APPEND_UTS(vcVHI_CONTEXT) &&
+       APPEND_UTS(vcVHI_SYSNAME) &&
+       APPEND_UTS(vcVHI_NODENAME) &&
+       APPEND_UTS(vcVHI_RELEASE) &&
+       APPEND_UTS(vcVHI_VERSION) &&
+       APPEND_UTS(vcVHI_MACHINE) &&
+       APPEND_UTS(vcVHI_DOMAINNAME) &&
+       is_passed)
+      return buf;
+
+    perror("vc_get_vhi_name()");
+#undef APPEND_UTS
+  }
+
+  return 0;
+}
+
+static int
+printSysInfo(char *buf)
+{
+  int                  fd = open(PKGLIBDIR "/FEATURES.txt", O_RDONLY);
+  struct utsname       uts;
+
+  if (uname(&uts)==-1)
+    perror("uname()");
+  else {
+    WRITE_MSG(1,
+             "Versions:\n"
+             "                   Kernel: ");
+    WRITE_STR(1, uts.release);
+    WRITE_MSG(1, "\n"
+             "                   VS-API: ");
+
+    memset(buf, 0, 128);
+    if (getAPIVer(buf)) WRITE_STR(1, buf);
+    else                WRITE_MSG(1, "???");
+    
+    WRITE_MSG(1, "\n"
+             "             util-vserver: " PACKAGE_VERSION "; " __DATE__ ", " __TIME__"\n"
+             "\n");
+  }
+
+  if (fd==-1)
+    WRITE_MSG(1, "FEATURES.txt not found\n");
+  else {
+    off_t              l  = Elseek(fd, 0, SEEK_END);
+    Elseek(fd, 0, SEEK_SET);
+    {
+      char             buf[l];
+      EreadAll(fd, buf, l);
+      EwriteAll(1, buf, l);
+    }
+    Eclose(fd);
+  }
+
+  return EXIT_SUCCESS;
+}
+
+static char *
+getContext(char *buf, char const *vserver, bool allow_only_static)
+{
+  xid_t                xid = vc_getVserverCtx(vserver, vcCFG_AUTO,
+                                      allow_only_static, 0);
+  if (xid==VC_NOCTX) return 0;
+  
+  utilvserver_fmt_long(buf, xid);
+  return buf;
+}
+
+static char const *
+getXIDType(xid_t xid, int argc, char *argv[])
+{
+  char const *         tp;
+  
+  switch (vc_getXIDType(xid)) {
+    case vcTYPE_INVALID                :  tp = "invalid"; break;
+    case vcTYPE_MAIN           :  tp = "main";    break;
+    case vcTYPE_WATCH          :  tp = "watch";   break;
+    case vcTYPE_STATIC         :  tp = "static";  break;
+    case vcTYPE_DYNAMIC                :  tp = "dynamic"; break;
+    default                    :  tp = 0;         break;
+  }
+
+  if (argc==0 || tp==0)
+    return tp;
+
+  while (argc>0) {
+    --argc;
+    if (strcasecmp(argv[argc], tp)==0) return tp;
+  }
+
+  return 0;
+}
+
+static int
+testFeature(int argc, char *argv[])
+{
+  return (argc>0 && vc_isSupportedString(argv[0])) ? EXIT_SUCCESS : EXIT_FAILURE;
+}
+
+static bool
+str2bool(char const *str)
+{
+  return atoi(str)!=0 || strchr("yYtT", str[0])!=0 || strcasecmp("true", str)==0;
+}
+
+static int
+execQuery(char const *vserver, VserverTag tag, int argc, char *argv[])
+{
+  char const *         res = 0;
+  char                         buf[sizeof(xid_t)*4 + 1024 + strlen(vserver)];
+
+  memset(buf, 0, sizeof buf);
+  switch (tag) {
+    case tgNAME                :  res = vc_getVserverName(vserver, vcCFG_AUTO); break;
+    case tgVDIR                :
+      res = vc_getVserverVdir(vserver, vcCFG_AUTO, argc>0 && atoi(argv[0]));
+      break;
+    case tgCFGDIR      :  res = vc_getVserverCfgDir(vserver, vcCFG_AUTO);     break;
+    case tgAPPDIR      :
+      res = vc_getVserverAppDir(vserver, vcCFG_AUTO, argc==0 ? "" : argv[0]);
+      break;
+      
+    case tgRUNNING     : {
+      signed long              xid;    // type is a small hack, but should be ok...
+      struct vc_vx_info                info;
+       
+      if (isNumber(vserver, &xid) && xid>=0)
+       res = (vc_get_vx_info(xid, &info)==-1) ? 0 : "1";
+      else
+       res = (vc_getVserverCtx(vserver, vcCFG_AUTO, false, 0)==VC_NOCTX) ? 0 : "1";
+      
+      break;
+    }
+
+    case tgCANONIFY    :
+      strcpy(buf, vserver);
+      if (canonifyVserverName(buf)>0) res = buf;
+      break;
+      
+    case tgCONTEXT     :  res = getContext(buf, vserver,
+                                           argc==0 || str2bool(argv[0])); break;
+    case tgINITPID_PID :  res = getInitPidPid(buf, vserver);  break;
+    case tgAPIVER      :  res = getAPIVer(buf);               break;
+    case tgXID         :  res = getXid(buf, vserver);         break;
+    case tgPXID                :  res = getPXid(buf, vserver);        break;
+    case tgSYSINFO     :  return printSysInfo(buf);           break;
+    case tgFEATURE     :  return testFeature(argc,argv);      break;
+    case tgVERIFYCAP   :  return verifyCap() ? 0 : 1;         break;
+    case tgVERIFYPROC  :  return verifyProc() ? 0 : 1;        break;
+
+
+    default            : {
+      xid_t            xid = *vserver!='\0' ? vc_xidopt2xid(vserver,true,0) : VC_SAMECTX;
+
+      switch (tag) {
+       case tgID       :  res = vc_getVserverByCtx(xid,0,0);  break;
+       case tgINITPID  :  res = getInitPid(buf, xid);         break;
+       case tgUTS      :  res = getUTS(buf, xid, argc, argv); break;
+       case tgXIDTYPE  :  res = getXIDType(xid, argc, argv);  break;
+    
+       default         :  assert(false); abort();  // TODO
+      }
+    }
+  }
+
+  if (res==0) return EXIT_FAILURE;
+  WRITE_STR(1, res);
+  WRITE_MSG(1, "\n");
+  return EXIT_SUCCESS;
+}
+
+int main(int argc, char *argv[])
+{
+  bool         quiet = false;
+  char const * vserver;
+  VserverTag   tag;
+  
+  while (1) {
+    int                c = getopt_long(argc, argv, "ql", CMDLINE_OPTIONS, 0);
+    if (c==-1) break;
+
+    switch (c) {
+      case 'h'         :  showHelp(1, argv[0], 0);
+      case 'v'         :  showVersion();
+      case 'l'         :  showTags();
+      case 'q'         :  quiet = true; break;
+      default          :
+       WRITE_MSG(2, "Try '");
+       WRITE_STR(2, argv[0]);
+       WRITE_MSG(2, " --help\" for more information.\n");
+       exit(1);
+       break;
+    }
+  }
+
+  if (optind+2>argc) {
+    execQuery("-", tgSYSINFO, 0, 0);
+    WRITE_MSG(2, "\nAssumed 'SYSINFO' as no other option given; try '--help' for more information.\n");
+    exit(0);
+  }
+
+  vserver = argv[optind];
+  tag     = stringToTag(argv[optind+1]);
+
+  if (tag==tgNONE) {
+    WRITE_MSG(2, "Unknown tag; use '-l' to get list of valid tags\n");
+    exit(1);
+  }
+
+  if (quiet) {
+    int                fd = Eopen("/dev/null", O_WRONLY, 0644);
+    Edup2(fd, 1);
+    Eclose(fd);
+  }
+
+  return execQuery(vserver, tag, argc-(optind+2), argv+optind+2);
+}
index 86c395c..96033ed 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: vserver-stat.c,v 1.1.4.1 2003/10/14 00:45:04 ensc Exp $
+// $Id: vserver-stat.c,v 1.22 2005/07/03 12:31:25 ensc Exp $
 
 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 // based on vserver-stat.cc by Guillaum Dallaire and Jacques Gelinas
 // along with this program; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
-/*
-       vserver-stat help you to see all the active context currently in the kernel
-       with some useful stat
-
-       Changelog:
-
-       2003-01-08 Jacques Gelinas: Shows vserver description
-       2002-02-28 Jacques Gelinas: Use dynamic system call
-       2002-06-05 Martial Rioux : fix memory output error
-       2002-12-05 Martial Rioux : fix output glitch
-       2001-11-29 added uptime/ctx stat
-       2001-11-20 added vmsize, rss, stime and utime stat
-*/
-
 #ifdef HAVE_CONFIG_H
 #  include <config.h>
 #endif
-#include "compat.h"
 
 #include "vserver.h"
+#include "util.h"
+#include "internal.h"
+
+#include <ensc_vector/vector.h>
 
 #include <stdio.h>
 #include <stdlib.h>
 #include <errno.h>
 #include <syscall.h>
 #include <time.h>
+#include <stdbool.h>
+#include <getopt.h>
+#include <sys/param.h>
+
+#define ENSC_WRAPPERS_DIRENT   1
+#define ENSC_WRAPPERS_VSERVER  1
+#define ENSC_WRAPPERS_FCNTL    1
+#define ENSC_WRAPPERS_UNISTD   1
+#include "wrappers.h"
 
 #define PROC_DIR_NAME "/proc"
 #define CTX_DIR_NAME "/var/run/vservers/"
 #define CTX_NAME_MAX_LEN 50
 
-struct ctx_list
+int    wrapper_exit_code = 1;
+
+#ifndef AT_CLKTCK
+#define AT_CLKTCK       17    /* frequency of times() */
+#endif
+
+static unsigned long   hertz   =0x42;
+static unsigned long   pagesize=0x42;
+
+struct XidData
 {
-       int ctx;
-       int process_count;
-       int VmSize_total;
-       int VmRSS_total;
-       long start_time_oldest;
-       long stime_total, utime_total;
-       char name[CTX_NAME_MAX_LEN];
-       struct ctx_list *next;
-} *my_ctx_list;
+    xid_t              xid;
+    int                        process_count;
+    int                        VmSize_total;
+    int                        VmRSS_total;
+    uint64_t           start_time_oldest;
+    uint64_t           stime_total, utime_total;
+
+    vcCfgStyle         cfgstyle;
+    char const *       name;
+};
 
 struct process_info
 {
-       long VmSize;            // number of pages of virtual memory
-       long VmRSS;             // resident set size from /proc/#/stat
-       long start_time;        // start time of process -- seconds since 1-1-70
-       long stime, utime;      // kernel & user-mode CPU time accumulated by process
-       long cstime, cutime;    // cumulative time of process and reaped children
-       int s_context;
+       long            VmSize;         // number of pages of virtual memory
+       long            VmRSS;          // resident set size from /proc/#/stat
+       uint64_t        start_time;     // start time of process -- milliseconds since 1-1-70
+        uint64_t       stime, utime;   // kernel & user-mode CPU time accumulated by process
+       uint64_t        cstime, cutime; // cumulative time of process and reaped children
+       xid_t           s_context;
 };
 
-char *process_name;
+struct ArgInfo {
+    enum { tpUNSET, tpCTX, tpPID }     type;
+    xid_t              ctx;
+    pid_t              pid;
+    unsigned int       interval;
+    bool               shutdown;
+    bool               omit_init;
+    size_t             argc;
+    char * const *     argv;
+};
+
+#define CMD_HELP               0x1000
+#define CMD_VERSION            0x1001
+
+struct option const
+CMDLINE_OPTIONS[] = {
+  { "help",     no_argument,  0, CMD_HELP },
+  { "version",  no_argument,  0, CMD_VERSION },
+  { "sort",     required_argument, 0, 'O' },
+  {0,0,0,0}
+};
 
-void usage()
+static void
+showHelp(char const *cmd)
 {
-       fprintf(stderr, "%s: from vserver kit version %s\n", process_name, VERSION);
-       fprintf(stderr, "(no argument needed)\n\n");
-       fprintf(stderr, "Show informations about all the active context.\n\n");
-       fprintf(stderr, "       CTX#            Context number\n");
-       fprintf(stderr, "                       #0 = root context\n");
-       fprintf(stderr, "                       #1 = monitoring context\n");
-       fprintf(stderr, "       PROC QTY        Quantity of processes in each context\n");
-       fprintf(stderr, "       VSZ             Number of pages of virtual memory\n");
-       fprintf(stderr, "       RSS             Resident set size\n");
-       fprintf(stderr, "       userTIME        User-mode CPU time accumulated\n");
-       fprintf(stderr, "       sysTIME         Kernel-mode CPU time accumulated\n");
-       fprintf(stderr, "       UPTIME          Uptime/context\n");
-       fprintf(stderr, "       NAME            Virtual server name\n");
-       fprintf(stderr, "\n");
+  WRITE_MSG(1, "Usage:  ");
+  WRITE_STR(1, cmd);
+  WRITE_MSG(1,
+           "\n"
+           "Show informations about all the active context.\n\n"
+           "   CTX#            Context number\n"
+           "                   #0 = root context\n"
+           "                   #1 = monitoring context\n"
+           "   PROC QTY        Quantity of processes in each context\n"
+           "   VSZ             Number of pages of virtual memory\n"
+           "   RSS             Resident set size\n"
+           "   userTIME        User-mode CPU time accumulated\n"
+           "   sysTIME         Kernel-mode CPU time accumulated\n"
+           "   UPTIME          Uptime/context\n"
+           "   NAME            Virtual server name\n"
+           "\n");
+  exit(0);
+}
 
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "vserver-stat " VERSION " -- show virtual context statistics\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2003,2005 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
 }
 
+
 // return uptime (in ms) from /proc/uptime
-long get_uptime()
+static uint64_t
+getUptime()
+{
+  int          fd;
+  char         buffer[64];
+  char *       errptr;
+  size_t       len;
+  uint64_t     secs;
+  uint32_t     msecs=0;
+
+    // open the /proc/uptime file
+  fd  = EopenD("/proc/uptime", O_RDONLY, 0);
+  len = Eread(fd, buffer, sizeof buffer);
+
+  if (len==sizeof(buffer)) {
+    WRITE_MSG(2, "Too much data in /proc/uptime; aborting...\n");
+    exit(1);
+  }
+  Eclose(fd);
+
+  while (len>0 && buffer[len-1]=='\n') --len;
+  buffer[len] = '\0';
+
+  secs = strtol(buffer, &errptr, 10);
+  if (*errptr!='.') errptr = buffer;
+  else {
+    unsigned int       mult;
+    switch (strlen(errptr+1)) {
+      case 0   :  mult = 1000; break;
+      case 1   :  mult = 100;  break;
+      case 2   :  mult = 10;   break;
+      case 3   :  mult = 1;    break;
+      default  :  mult = 0;    break;
+    }
+    msecs = strtol(errptr+1, &errptr, 10) * mult;
+  }
+
+  if ((*errptr!='\0' && *errptr!=' ') || errptr==buffer) {
+    WRITE_MSG(2, "Bad data in /proc/uptime\n");
+    exit(1);
+  }
+
+  return secs*1000 + msecs;
+}
+
+static int
+cmpData(void const *xid_v, void const *map_v)
 {
-       int fd;
-       double up;
-       char buffer[64];
+  xid_t const * const                  xid = xid_v;
+  struct XidData const * const         map = map_v;
+  int  res = *xid - map->xid;
 
-       // open the /proc/uptime file
-       if ((fd = open("/proc/uptime", O_RDONLY, 0)) == -1)
-               return 0;
+  return res;
+}
+
+static void
+registerXid(struct Vector *vec, struct process_info *process)
+{
+  struct XidData       *res;
+
+  res = Vector_search(vec, &process->s_context, cmpData);
+  if (res==0) {
+    res = Vector_insert(vec, &process->s_context, cmpData);
+    res->xid           = process->s_context;
+    res->process_count = 0;
+    res->VmSize_total  = 0;
+    res->VmRSS_total   = 0;
+    res->utime_total   = 0;
+    res->stime_total   = 0;
+    res->start_time_oldest = process->start_time;
+  }
+
+  ++res->process_count;
+  res->VmSize_total += process->VmSize;
+  res->VmRSS_total  += process->VmRSS;
+  res->utime_total  += process->utime + process->cutime;
+  res->stime_total  += process->stime + process->cstime;
+
+  res->start_time_oldest = MIN(res->start_time_oldest, process->start_time);
+}
+
+static inline uint64_t
+toMsec(uint64_t v)
+{
+  return v*1000llu/hertz;
+}
 
-       if (read(fd, buffer, sizeof(buffer)) < 1)
-               return 0;
 
-       close(fd);
+// shamelessly stolen from procps...
+static unsigned long
+find_elf_note(unsigned long findme){
+  unsigned long *ep = (unsigned long *)environ;
+  while(*ep++);
+  while(*ep){
+    if(ep[0]==findme) return ep[1];
+    ep+=2;
+  }
+  return (unsigned long)(-1);
+}
 
-       if (sscanf(buffer, "%lf", &up) < 1)
-       {
-               fprintf(stderr, "%s: bad data in /proc/uptime\n", process_name);
-               return 0;
-       }
+static void initHertz()           __attribute__((__constructor__));
+static void initPageSize() __attribute__((__constructor__));
 
-       return up * 100;
+static void
+initHertz()
+{
+  hertz = find_elf_note(AT_CLKTCK);
+  if (hertz==(unsigned long)(-1))
+    hertz = sysconf(_SC_CLK_TCK);
 }
 
-// insert a new record to the list
-struct ctx_list *insert_ctx(int ctx, struct ctx_list *next)
+static void
+initPageSize()
 {
-       struct ctx_list *new;
-
-       new = (struct ctx_list *)malloc(sizeof(struct ctx_list));
-       new->ctx = ctx;
-       new->process_count = 0;
-       new->VmSize_total = 0;
-       new->VmRSS_total = 0;
-       new->utime_total = 0;
-       new->stime_total = 0;
-       new->start_time_oldest = 0;
-       new->next = next;
-       new->name[0] = '\0';
-
-       return new;
+  pagesize = sysconf(_SC_PAGESIZE);
 }
 
-// find the ctx record with the ctx number
-struct ctx_list *find_ctx(struct ctx_list *list, int ctx)
+// open the process's status file to get the ctx number, and other stat
+struct process_info *
+get_process_info(char *pid)
 {
-       // very simple search engine...
-       while(list != NULL)
-       {
-               // find
-               if (list->ctx == ctx)
-               {
-                       return list;
-               }
-               list = list->next;
-       }
-       return NULL;
+  int                          fd;
+  char                         buffer[1024];
+  char                         *p;
+  size_t                       idx, l=strlen(pid);
+  static struct process_info   process;
+
+#if 1
+  process.s_context = vc_get_task_xid(atoi(pid));
+#else
+#  warning Compiling in debug-code
+  process.s_context = random()%6;
+#endif
+
+  if (process.s_context==VC_NOCTX) {
+    int                err=errno;
+    WRITE_MSG(2, "vc_get_task_xid(");
+    WRITE_STR(2, pid);
+    WRITE_MSG(2, "): ");
+    WRITE_STR(2, strerror(err));
+    WRITE_MSG(2, "\n");
+
+    return 0;
+  }
+  
+  memcpy(buffer,     "/proc/", 6); idx  = 6;
+  memcpy(buffer+idx, pid,      l); idx += l;
+  memcpy(buffer+idx, "/stat",  6);
+       
+    // open the /proc/#/stat file
+  if ((fd = open(buffer, O_RDONLY, 0)) == -1)
+    return NULL;
+    // put the file in a buffer
+  if (read(fd, buffer, sizeof(buffer)) < 1)
+    return NULL;
+
+  close(fd);
+
+  p   = strchr(buffer, ')');           // go after the PID (process_name)
+  for (idx = 0; idx<12 && *p!='\0'; ++p)
+    if ((*p)==' ') ++idx;
+
+  process.utime  = toMsec(strtol(p,   &p, 10));
+  process.stime  = toMsec(strtol(p+1, &p, 10));
+  process.cutime = toMsec(strtol(p+1, &p, 10));
+  process.cstime = toMsec(strtol(p+1, &p, 10));
+
+  for (idx = 0; idx<5 && *p!='\0'; ++p)
+    if ((*p)==' ') ++idx;
+
+  process.start_time = toMsec(strtol(p,   &p, 10));
+  process.VmSize     = strtol(p+1, &p, 10);
+  process.VmRSS      = strtol(p+1, &p, 10);
+
+  //printf("pid=%s, start_time=%llu\n", pid, process.start_time);
+  return &process;
 }
 
-// compute the process info into the list
-void add_ctx(struct ctx_list *list, struct process_info *process)
+static size_t
+fillUintZero(char *buf, unsigned long val, size_t cnt)
 {
-       list->process_count ++;
-       list->VmSize_total += process->VmSize;
-       list->VmRSS_total += process->VmRSS;
-       list->utime_total += process->utime + process->cutime;
-       list->stime_total += process->stime + process->cstime;
-
-       if (list->start_time_oldest == 0) // first entry
-               list->start_time_oldest = process->start_time;
-       else
-               if (list->start_time_oldest > process->start_time)
-                       list->start_time_oldest = process->start_time;
+  size_t       l;
+  
+  l = utilvserver_fmt_ulong(buf, val);
+  if (l<cnt) {
+    memmove(buf+cnt-l, buf, l);
+    memset(buf, '0', cnt-l);
+  }
+  buf[cnt] = '\0';
+
+  return cnt;
 }
 
-// increment the count number in the ctx record using ctx number
-void count_ctx(struct ctx_list *list, struct process_info *process)
+static void
+shortenMem(char *buf, unsigned long val)
 {
-       struct ctx_list *prev = list;
-
-       if (process == NULL) return;
-
-       // search
-       while(list != NULL)
-       {
-               // find
-               if (list->ctx == process->s_context)
-               {
-                       add_ctx(list, process);
-                       return;
-               }
-               // insert between
-               if (list->ctx > process->s_context)
-               {
-                       prev->next = insert_ctx(process->s_context, list);
-                       add_ctx(prev->next, process);
-                       return;
-               }
-               // ++
-               prev = list;
-               list = list->next;
-       }
-       // add at the end
-       prev->next = insert_ctx(process->s_context, NULL);
-       add_ctx(prev->next, process);
+  char const * SUFFIXES[] = { " ", "K", "M", "G", "T", "+" };
+  char         tmp[16];
+  char const * suffix = "+";
+  size_t       i, l;
+  unsigned int mod = 0;
+
+  for (i=0; i<6; ++i) {
+    if (val<1000) {
+      suffix = SUFFIXES[i];
+      break;
+    }
+    mod   = 10*(val & 1023)/1024;
+    val >>= 10;
+  }
+
+  if (val >9999) val=9999;
+  if (val>=1000) mod=0;
+
+  l = utilvserver_fmt_ulong(tmp, val);
+  if (mod!=0) {
+    tmp[l++] = '.';
+    l += utilvserver_fmt_ulong(tmp+l, mod);
+  }
+  i = 7-l-strlen(suffix);
+  
+  memcpy(buf+i,   tmp, l);
+  memcpy(buf+i+l, suffix, strlen(suffix));
 }
 
-// free mem
-void free_ctx(struct ctx_list *list)
+static void
+shortenTime(char *buf, uint64_t t)
 {
-       struct ctx_list *prev;
+  char         tmp[32];
+  char         *ptr = tmp;
+
+  unsigned long        hh, mm, ss, ms;
+
+  ms = t % 1000;
+  t /= 1000;
+
+  ss = t%60;
+  t /= 60;
+  mm = t%60;
+  t /= 60;
+  hh = t%24;
+  t /= 24;
+
+  if (t>999*999) {
+    memcpy(ptr, "INVALID", 7);
+    ptr   += 7;
+  }
+  else if (t>999) {
+    ptr   += utilvserver_fmt_ulong(ptr, t/365);
+    *ptr++ = 'y';
+    ptr   += fillUintZero(ptr, t%365, 2);
+    *ptr++ = 'd';
+    ptr   += fillUintZero(ptr, hh, 2);
+  }    
+  else if (t>0) {
+    ptr   += utilvserver_fmt_ulong(ptr, t);
+    *ptr++ = 'd';
+    ptr   += fillUintZero(ptr, hh, 2);
+    *ptr++ = 'h';
+    ptr   += fillUintZero(ptr, mm, 2);
+  }
+  else if (hh>0) {
+    ptr   += utilvserver_fmt_ulong(ptr, hh);
+    *ptr++ = 'h';
+    ptr   += fillUintZero(ptr, mm, 2);
+    *ptr++ = 'm';
+    ptr   += fillUintZero(ptr, ss, 2);    
+  }
+  else {
+    ptr   += utilvserver_fmt_ulong(ptr, mm);
+    *ptr++ = 'm';
+    ptr   += fillUintZero(ptr, ss, 2);
+    *ptr++ = 's';
+    ptr   += fillUintZero(ptr, ms, 2);
+  }
+
+  *ptr = ' ';
+  memcpy(buf+10-(ptr-tmp), tmp, ptr-tmp);
+}
 
-       for(;list != NULL; list = prev)
-       {
-               prev = list->next;              
-               free(list);
-       }
+static char *
+formatName(char *dst, vcCfgStyle style, char const *name)
+{
+  size_t               len;
+  
+  if (name==0) name = "";
+  len = strlen(name);
+
+  switch (style) {
+    case vcCFG_LEGACY  :
+      len    = MIN(len, 18);
+      *dst++ = '[';
+      memcpy(dst, name, len);
+      dst   += len;
+      *dst++ = ']';
+      break;
+
+    default            :
+      len    = MIN(len, 20);
+      memcpy(dst, name, len);
+      dst   += len;
+      break;
+  }
+
+  return dst;
 }
 
-/*
-       Read the vserver description
-*/
-static void read_description(
-       const char *name,               // Vserver name
-       char descrip[1000])
+static void
+showContexts(struct Vector const *vec)
 {
-       char conf[PATH_MAX];
-       FILE *fin;
-       descrip[0] = '\0';
-       snprintf (conf,sizeof(conf)-1,"/etc/vservers/%s.conf",name);
-       fin = fopen (conf,"r");
-       if (fin != NULL){
-               char line[1000];
-               while (fgets(line,sizeof(line)-1,fin)!=NULL){
-                       if (line[0] == '#'){
-                               char *pt = line+1;
-                               while (isspace(*pt)) pt++;
-                               if (strncmp(pt,"Description:",12)==0){
-                                       int last;
-                                       pt += 12;
-                                       while (isspace(*pt)) pt++;
-                                       strcpy (descrip,pt);
-                                       last = strlen(descrip)-1;
-                                       if (last >=0 && descrip[last] == '\n'){
-                                               descrip[last] = '\0';
-                                       }
-                               }
-                       }
-               }
-               fclose (fin);
-       }
+  uint64_t                     uptime  = getUptime();
+  struct XidData const *       ptr     = Vector_begin_const(vec);
+  struct XidData const * const end_ptr = Vector_end_const(vec);
+  
+
+  WRITE_MSG(1, "CTX   PROC    VSZ    RSS  userTIME   sysTIME    UPTIME NAME\n");
+  for (; ptr<end_ptr; ++ptr) {
+    char       buf[sizeof(xid_t)*3 + 512];
+    char       tmp[sizeof(int)*3 + 2];
+    size_t     l;
+
+    memset(buf, ' ', sizeof(buf));
+    l = utilvserver_fmt_long(buf, ptr->xid);
+    l = utilvserver_fmt_long(tmp, ptr->process_count);
+    memcpy(buf+10-l, tmp, l);
+
+    shortenMem (buf+10, ptr->VmSize_total);
+    shortenMem (buf+17, ptr->VmRSS_total*pagesize);
+    shortenTime(buf+24, ptr->utime_total);
+    shortenTime(buf+34, ptr->stime_total);
+    //printf("%llu, %llu\n", uptime, ptr->start_time_oldest);
+    shortenTime(buf+44, uptime - ptr->start_time_oldest);
+
+    formatName(buf+55, ptr->cfgstyle, ptr->name)[0] = '\0';
+
+    Vwrite(1, buf, strlen(buf));
+    Vwrite(1, "\n", 1);
+  }
 }
 
-// show the ctx_list with name from /var/run/servers/*.ctx
-void show_ctx(struct ctx_list *list)
+static void
+fillName(void *obj_v, void UNUSED * a)
 {
-       // fill the ctx_list using the /var/run/servers/*.ctx file(s)
-        __extension__ int bind_ctx_name(struct ctx_list *list)
-       {
-               // fetch the context number in /var/run/vservers/'filename'
-               int fetch_ctx_number(char *filename)
-               {
-                       int fd;
-                       int ctx;
-                       char buf[25];
-
-                       // open file
-                       if ((fd = open(filename, O_RDONLY, 0)) == -1)
-                               return -1;
-                       // put the file in a small buffer
-                       if (read(fd, buf, sizeof(buf)) < 1)
-                               return -1;
-
-                       close(fd);
-
-                       sscanf(buf, "S_CONTEXT=%d", &ctx);
-                       return ctx;
-               }
-
-               /* begin bind_ctx_name */
-
-               DIR *ctx_dir;
-               struct dirent *dir_entry;
-               char *p;
-               char ctx_name[CTX_NAME_MAX_LEN];
-               struct ctx_list *ctx;
-               int ctx_number;
-
-               // open the /var/run/vservers directory
-               if ((ctx_dir = opendir(CTX_DIR_NAME)) == NULL)
-               {
-                       fprintf(stderr, "%s: in openning %s: %s\n", process_name, CTX_DIR_NAME, strerror(errno));
-                       return -1;
-               }
-       
-               chdir(CTX_DIR_NAME);
-               while ((dir_entry = readdir(ctx_dir)) != NULL)
-               {
-                       strncpy(ctx_name, dir_entry->d_name, sizeof(ctx_name));
-                       p = strstr(ctx_name, ".ctx");
-                       if (p != NULL) // make sure that it is a .ctx file..
-                       {
-                               *p = '\0'; // remove the .ctx in the file name
-                               if ((ctx_number = fetch_ctx_number(dir_entry->d_name)) > 1)
-                               {
-                                       if ((ctx = find_ctx(list, ctx_number)) != NULL)
-                                               strncpy(ctx->name, ctx_name, CTX_NAME_MAX_LEN);
-                               }
-                       }
-                       // else fprintf(stderr, "invalid file %s in %s\n", dir_entry->d_name, CTX_DIR_NAME);
-               }
-               closedir(ctx_dir);      
-               return 0;
-       }
-
-        __extension__ char *convert_time(unsigned t, char *str)
-       {
-               unsigned hh, mm, ss, ms;
-
-               ms = t % 100;
-               t /= 100;
-
-               ss = t%60;
-               t /= 60;
-               mm = t%60;
-               t /= 60;
-               hh = t%60;
-               t /= 24;
-
-               if (t > 0)      // day > 0
-               {
-                               snprintf(str, 25, "%3.ud%02uh%02u", t, (hh%12) ? hh%12 : 12, mm);
-               }
-               else
-               {
-                       if (hh > 0) // hour > 0
-                               snprintf(str, 25, " %2.uh%02um%02u", hh, mm, ss);
-                       else
-                       {
-                               snprintf(str, 25, " %2.um%02u.%02u", mm, ss, ms);
-                       }
-               }
-               return str;
-       }
-
-        __extension__ char *convert_mem(unsigned long total, char *str)
-       {
-               // Byte
-               if (total < 1024)
-               {
-                       snprintf(str, 25, "%luB", total);
-                       return str;
-               }
-
-               total >>= 10; // kByte
-               if (total < 1024)
-               {
-                       snprintf(str, 25, "%lukB", total);
-                       return str;
-               }
-
-               total >>= 10; // MByte
-               if (total < 1024)
-               {
-                       snprintf(str, 25, "%luMB", total);
-                       return str;
-               }
-
-               total >>= 10; // GByte
-               if (total < 1024)
-               {
-                       snprintf(str, 25, "%luGB", total);
-                       return str;
-               }
-               total >>= 10; // TByte
-               snprintf(str, 25, "%luTB", total);
-               return str;
-       }
-
-       /* begin show_ctx */
-       char utime[25], stime[25], ctx_uptime[25];
-       char vmsize[25], vmrss[25];
-       long uptime = get_uptime();
-
-       // now we have all the active context, fetch the name
-       // from /var/run/vservers/*.ctx
-       bind_ctx_name(list);
-
-       printf("CTX  PROC    VSZ    RSS  userTIME   sysTIME    UPTIME NAME     DESCRIPTION\n");
-       while(list != NULL)
-       {
-               char descrip[1000];
-               if (list->ctx == 1)
-                       strncpy(list->name, "monitoring server", CTX_NAME_MAX_LEN);
-
-               read_description (list->name,descrip);
-
-               printf("%-4d %4d %6s %6s %9s %9s %9s %-8s %s\n", list->ctx, list->process_count,
-                       convert_mem(list->VmSize_total, vmsize), convert_mem(list->VmRSS_total, vmrss),
-                       convert_time(list->utime_total, utime), convert_time(list->stime_total, stime), convert_time(uptime - list->start_time_oldest, ctx_uptime)
-                       , list->name,descrip);
-               list = list->next;
-       }
+  struct XidData *     obj = obj_v;
+
+  switch (obj->xid) {
+    case 0             :
+      obj->cfgstyle = vcCFG_NONE;
+      obj->name     = strdup("root server");
+      break;
+
+    case 1             :
+      obj->cfgstyle = vcCFG_NONE;
+      obj->name     = strdup("monitoring server");
+      break;
+
+    default            : {
+      char *           cfgpath;
+
+      if ((cfgpath   = vc_getVserverByCtx(obj->xid, &obj->cfgstyle, 0))==0 ||
+         (obj->name = vc_getVserverName(cfgpath, obj->cfgstyle))==0) {
+       obj->name     = 0;
+       obj->cfgstyle = vcCFG_NONE;
+      }
+
+      free(cfgpath);
+
+      break;
+    }
+  }
 }
 
-// open the process's status file to get the ctx number, and other stat
-struct process_info *get_process_info(char *pid)
+static void UNUSED
+freeXidData(void *obj_v, void UNUSED * a)
 {
-       int fd;
-       char buffer[1024];
-       char *p;
-       static struct process_info process;
-
-       // open the proc/#/status file
-       snprintf(buffer, sizeof(buffer),  "/proc/%s/status", pid);
-       if ((fd = open(buffer, O_RDONLY, 0)) == -1)
-               return NULL;
-       // put the file in a buffer
-       if (read(fd, buffer, sizeof(buffer)) < 1)
-               return NULL;
-
-       close(fd);
-
-       // find the s_context entry
-       if ((p = strstr(buffer, "s_context:")) == NULL)
-               return NULL;
-
-       sscanf(p, "s_context: %d", &process.s_context);
-
-       // open the /proc/#/stat file
-       snprintf(buffer, sizeof(buffer),  "/proc/%s/stat", pid);
-       if ((fd = open(buffer, O_RDONLY, 0)) == -1)
-               return NULL;
-       // put the file in a buffer
-       if (read(fd, buffer, sizeof(buffer)) < 1)
-               return NULL;
-
-       close(fd);
-
-       p = strchr(buffer, ')');                // go after the PID (process_name)
-       sscanf(p + 2,
-               "%*s "
-               "%*s %*s %*s %*s %*s "
-               "%*s %*s %*s %*s %*s %ld %ld "
-               "%ld %ld %*s %*s %*s %*s "
-               "%ld %ld "
-               "%ld ", &process.utime, &process.stime,
-                       &process.cutime, &process.cstime,
-                       &process.start_time,
-                       &process.VmSize, &process.VmRSS);
-
-       return &process;
+  struct XidData *     obj = obj_v;
+
+  free(const_cast(char *)(obj->name));
 }
 
 int main(int argc, char **argv)
 {
-       DIR *proc_dir;
-       struct dirent *dir_entry;
-       pid_t my_pid;
-
-       // for error msg
-       process_name = argv[0];
-
-       if (argc > 1)
-       {
-               usage();
-               return 0;
-       }
-
-       // do not include own stat
-       my_pid = getpid();
-
-       // try to switch in context 1
-       if (vc_new_s_context(1,0, 0) < 0)
-       {
-               fprintf(stderr, "%s: unable to switch in context security #1\n", process_name);
-               return -1;
-       }
-
-       // create the fist...
-       my_ctx_list = insert_ctx(0, NULL);
-       // init with the default name for the context 0
-       strncpy(my_ctx_list->name, "root server", CTX_NAME_MAX_LEN);
-
-       // open the /proc dir
-       if ((proc_dir = opendir(PROC_DIR_NAME)) == NULL)
-       {
-               fprintf(stderr, "%s: %s\n", process_name, strerror(errno));
-               return -1;
-       }
-       
-       chdir(PROC_DIR_NAME);
-       while ((dir_entry = readdir(proc_dir)) != NULL)
-       {
-               // select only process file
-               if (!isdigit(*dir_entry->d_name))
-                       continue;
-
-               if (atoi(dir_entry->d_name) != my_pid)
-                       count_ctx(my_ctx_list, get_process_info(dir_entry->d_name));
-               
-       }
-       closedir(proc_dir);
-
-       // output the ctx_list  
-       show_ctx(my_ctx_list);
-
-       // free the ctx_list
-       free_ctx(my_ctx_list);
-
-       return 0;
+  DIR *                        proc_dir;
+  struct dirent*       dir_entry;
+  pid_t                        my_pid;
+  struct Vector                xid_data;
+  char const *         errptr;
+
+  while (1) {
+    int                c = getopt_long(argc, argv, "+O:", CMDLINE_OPTIONS, 0);
+    if (c==-1) break;
+
+    switch (c) {
+      case CMD_HELP    :  showHelp(argv[0]);
+      case CMD_VERSION :  showVersion();
+      case 'O'         :  break;
+      default          :
+       WRITE_MSG(2, "Try '");
+       WRITE_STR(2, argv[0]);
+       WRITE_MSG(2, " --help\" for more information.\n");
+       return EXIT_FAILURE;
+       break;
+    }
+  }
+    
+  if (optind!=argc) {
+    WRITE_MSG(2, "Unknown parameter, use '--help' for more information\n");
+    return EXIT_FAILURE;
+  }
+
+  if (hertz==0x42)    initHertz();
+  if (pagesize==0x42) initPageSize();
+  
+  my_pid = getpid();
+
+  if (!switchToWatchXid(&errptr)) {
+    perror(errptr);
+    exit(1);
+  }
+
+  if (access("/proc/uptime",R_OK)==-1 && errno==ENOENT)
+    WRITE_MSG(2,
+             "WARNING: can not access /proc/uptime. Usually, this is caused by\n"
+             "         procfs-security. Please read the FAQ for more details\n"
+             "         http://www.linux-vserver.org/index.php?page=Linux-Vserver+FAQ\n");
+
+  Vector_init(&xid_data, sizeof(struct XidData));
+
+  Echdir(PROC_DIR_NAME);
+  proc_dir = Eopendir(".");
+  while ((dir_entry = readdir(proc_dir)) != NULL)
+  {
+      // select only process file
+    if (!isdigit(*dir_entry->d_name))
+      continue;
+
+    if (atoi(dir_entry->d_name) != my_pid) {
+      struct process_info *    info = get_process_info(dir_entry->d_name);
+      if (info)
+       registerXid(&xid_data, info);
+    }
+  }
+  closedir(proc_dir);
+
+  Vector_foreach(&xid_data, fillName, 0);
+
+    // output the ctx_list     
+  showContexts(&xid_data);
+
+#ifndef NDEBUG
+  Vector_foreach(&xid_data, freeXidData, 0);
+  Vector_free(&xid_data);
+#endif
+  
+  return 0;
 }
diff --git a/src/vserver-visitdir.hc b/src/vserver-visitdir.hc
new file mode 100644 (file)
index 0000000..f599f86
--- /dev/null
@@ -0,0 +1,56 @@
+// $Id: vserver-visitdir.hc,v 1.1 2004/02/18 04:42:38 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+static uint64_t
+visitDirEntry(struct dirent const *ent);
+
+static uint64_t
+visitDir(char const *name, struct stat const *expected_stat)
+{
+  int          fd = Eopen(".", O_RDONLY, 0);
+  PathInfo     old_state = global_info.state;
+  PathInfo     rhs_path = {
+    .d = name,
+    .l = strlen(name)
+  };
+  char         new_path[ENSC_PI_APPSZ(global_info.state, rhs_path)];
+  DIR *                dir;
+  uint64_t     res = 0;
+
+  PathInfo_append(&global_info.state, &rhs_path, new_path);
+
+  if (expected_stat!=0)
+    EsafeChdir(name, expected_stat);
+  
+  dir = Eopendir(".");
+
+  for (;;) {
+    struct dirent              *ent = Ereaddir(dir);
+    if (ent==0) break;
+
+    res += visitDirEntry(ent);
+  }
+
+  Eclosedir(dir);
+
+  Efchdir(fd);
+  Eclose(fd);
+
+  global_info.state = old_state;
+  return res;
+}
diff --git a/src/vshelper-sync.c b/src/vshelper-sync.c
new file mode 100644 (file)
index 0000000..921f12d
--- /dev/null
@@ -0,0 +1,111 @@
+// $Id: vshelper-sync.c,v 1.5 2005/05/05 09:21:21 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "util.h"
+
+#include <stdlib.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <signal.h>
+#include <stdio.h>
+#include <assert.h>
+
+static void
+showHelp(int fd, char const *cmd, int res)
+{
+  WRITE_MSG(fd, "Usage:  ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " [--] <pipe> <timeout>\n\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+  exit(res);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "vshelper-sync " VERSION " -- waits for data from a pipe"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2004 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+int main(int argc, char *argv[])
+{
+  int                  fd;
+  int                  idx = 1;
+  struct timeval       timeout;
+
+  if (argc>=2) {
+    if (strcmp(argv[1], "--help")   ==0) showHelp(1, argv[0], 0);
+    if (strcmp(argv[1], "--version")==0) showVersion();
+    if (strcmp(argv[1], "--")       ==0) ++idx;
+  }
+
+  if (argc<idx+2) {
+    WRITE_MSG(2, "Not enough parameters; use '--help' for more information\n");
+    return EXIT_FAILURE;
+  }
+
+  fd = open(argv[idx], O_RDONLY|O_NONBLOCK, 0);
+  if (fd==-1) {
+    perror("vshelper-sync: open()");
+    return EXIT_FAILURE;
+  }
+
+  timeout.tv_sec  = atoi(argv[idx+1]);
+  timeout.tv_usec = 0;
+
+  for (;;) {
+    char       buf[512];
+    ssize_t    len;
+    fd_set     fds;
+
+    FD_ZERO(&fds);
+    FD_SET(fd, &fds);
+
+#ifndef __linux__
+#  error vshelper relies on the Linux select() behavior (timeout holds remaining time)
+#endif
+
+    switch (select(fd+1, &fds, 0,0, &timeout)) {
+      case 0   :  return EXIT_FAILURE; // timeout
+      case -1  :
+       perror("vshelper: select()");
+       return EXIT_FAILURE;
+      default  :  break;
+    }
+
+    assert(FD_ISSET(fd, &fds));
+
+    len = read(fd,buf,sizeof buf);
+    if (len==0) break;
+    if (len==-1) {
+      perror("vshelper-sync: read()");
+      return EXIT_FAILURE;
+    }
+  }
+
+  return EXIT_SUCCESS;
+}  
diff --git a/src/vuname.c b/src/vuname.c
new file mode 100644 (file)
index 0000000..2e79c7f
--- /dev/null
@@ -0,0 +1,294 @@
+// $Id: vuname.c,v 1.7 2005/03/24 12:44:17 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+#include "util.h"
+
+#include <getopt.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <stdio.h>
+#include <libgen.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <ctype.h>
+#include <strings.h>
+
+#define ENSC_WRAPPERS_PREFIX   "vuname: "
+#define ENSC_WRAPPERS_UNISTD   1
+#define ENSC_WRAPPERS_IO       1
+#define ENSC_WRAPPERS_VSERVER  1
+#include <wrappers.h>
+
+#define CMD_HELP               0x1000
+#define CMD_VERSION            0x1001
+#define CMD_DIR                        0x4007
+#define CMD_MISSINGOK          0x4008
+
+int                    wrapper_exit_code = 255;
+
+static vc_uts_type const       UTS_MAPPING[7] = {
+  vcVHI_CONTEXT, vcVHI_SYSNAME, vcVHI_NODENAME,
+  vcVHI_RELEASE, vcVHI_VERSION, vcVHI_MACHINE,
+  vcVHI_DOMAINNAME };
+
+#define DECL(UTS) [vcVHI_ ## UTS] = #UTS
+static char const * const      UTS_STRINGS[] = {
+  DECL(CONTEXT), DECL(SYSNAME), DECL(NODENAME),
+  DECL(RELEASE), DECL(VERSION), DECL(MACHINE),
+  DECL(DOMAINNAME)
+};
+
+struct Tag {
+    bool               is_set;
+    char const *       value;
+};
+
+struct Arguments {
+    struct Tag         tags[DIM_OF(UTS_MAPPING)];
+    xid_t              xid;
+    bool               do_set;
+    char const *       dir;
+    bool               is_missingok;
+};
+
+static struct option const
+CMDLINE_OPTIONS[] = {
+  { "help",        no_argument,       0, CMD_HELP },
+  { "version",     no_argument,       0, CMD_VERSION },
+  { "xid",         required_argument, 0, 'x' },
+  { "set",         no_argument,       0, 's' },
+  { "get",         no_argument,       0, 'g' },
+  { "dir",         required_argument, 0, CMD_DIR },
+  { "missingok",   no_argument,       0, CMD_MISSINGOK },
+  { 0,0,0,0 }
+};
+
+static void
+showHelp(int fd, char const *cmd, int res)
+{
+  VSERVER_DECLARE_CMD(cmd);
+  
+  WRITE_MSG(fd, "Usage:  ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           "  [-g] --xid <xid> <TAG>*\n"
+           "    or  ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           "  -s --xid <xid> -t <TAG>=<VALUE> [--] [<command> <args>*]\n"
+           "    or  ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,            
+           "  --dir <dir> --xid <xid> [--missingok] [--] [<command> <args>*]\n\n"
+           " Options:\n"
+           "   -g           ...  get and print the value\n"
+           "   -s           ...  set the value\n\n"
+           "   --xid <xid>  ...  operate on this context; 'self' means the current one\n"
+           "   -t <TAG>=<VALUE>\n"
+           "                ...  set <TAG> to <VALUE>; this option can be repeated multiple time\n"
+           "   --dir <dir>  ...  read values from files in <dir>. These files must\n"
+           "                     have a valid TAG as their name\n"
+           "   --missingok  ...  do not fail when the <DIR> from '--dir' does not exist.\n"
+           "\n"
+           " Possible values for TAG are:\n"
+           "   context, sysname, nodename, release, version, machine, domainname\n"
+           "\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+  exit(res);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "vuname " VERSION " -- modifies and shows uname entries of vserver contexts\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2004 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+static void
+setFromDir(char const *pathname, bool is_missingok, xid_t xid)
+{
+  struct stat          st;
+  size_t               i;
+  size_t               l_pathname = strlen(pathname);
+  char                 buf[l_pathname + sizeof("/domainname") + 32];
+  
+  if (stat(pathname, &st)==-1) {
+    if (errno==ENOENT && is_missingok) return;
+    PERROR_Q(ENSC_WRAPPERS_PREFIX "fstat", pathname);
+    exit(wrapper_exit_code);
+  }
+
+  memcpy(buf, pathname, l_pathname);
+  if (l_pathname>0 && pathname[l_pathname-1]!='/')
+    buf[l_pathname++] = '/';
+  
+  for (i=0; i<DIM_OF(UTS_STRINGS); ++i) {
+    char *     ptr   = buf+l_pathname;
+    int                fd;
+
+    // ignore unimplemented uts-names
+    if (UTS_STRINGS[i]==0) continue;
+    strcpy(ptr, UTS_STRINGS[i]);
+    for (;*ptr;++ptr) *ptr = tolower(*ptr);
+    fd = open(buf, O_RDONLY);
+    if (fd!=-1) {
+      size_t   l = Elseek(fd, 0, SEEK_END);
+      char     name[l+1];
+      Elseek(fd,0,SEEK_SET);
+      EreadAll(fd, name, l);
+      while (l>0 && name[l-1]=='\n') --l;
+      name[l] = '\0';
+      Eclose(fd);
+
+      if (vc_set_vhi_name(xid, (vc_uts_type)(i), name, l)==-1) {
+       PERROR_U(ENSC_WRAPPERS_PREFIX "vc_set_vhi_name", UTS_STRINGS[i]);
+       exit(wrapper_exit_code);
+      }
+    }
+  }
+}
+
+static size_t
+findUtsIdx(char const *str, size_t len)
+{
+  size_t               i;
+  for (i=0; i<DIM_OF(UTS_STRINGS); ++i)
+    if (UTS_STRINGS[i]!=0 && strncasecmp(UTS_STRINGS[i], str, len)==0)
+      return i;
+
+  WRITE_MSG(2, "Tag '");
+  Vwrite   (2, str, len);
+  WRITE_STR(2, "' not recognized\n");
+  exit(wrapper_exit_code);
+}
+
+static void
+registerValue(char const *str, struct Tag tags[DIM_OF(UTS_MAPPING)])
+{
+  char const * ptr = strchr(str, '=');
+  size_t       idx;
+  
+  if (ptr==0) ptr = str + strlen(str);
+  assert(*ptr=='=' || *ptr=='\0');
+
+  idx = findUtsIdx(str, ptr-str);
+
+  if (*ptr=='=') ++ptr;
+  tags[idx].is_set = true;
+  tags[idx].value  = ptr;
+}
+
+static void
+printUtsValue(xid_t xid, int val)
+{
+  char buf[128];
+  if (vc_get_vhi_name(xid, val, buf, sizeof(buf)-1)==-1)
+    WRITE_MSG(1, "???");
+  else
+    WRITE_STR(1, buf);
+  
+}
+
+int main(int argc, char *argv[])
+{
+  struct Arguments     args = {
+    .tags        = { [0] = {false,0} },
+    .do_set      = false,
+    .dir         = 0,
+    .is_missingok= false,
+    .xid         = VC_NOCTX,
+  };
+  size_t               i;
+
+  assert(DIM_OF(UTS_MAPPING) == DIM_OF(args.tags));
+  
+  while (1) {
+    int                c = getopt_long(argc, argv, "+gst:", CMDLINE_OPTIONS, 0);
+    if (c==-1) break;
+
+    switch (c) {
+      case CMD_HELP    :  showHelp(1, argv[0], 0);
+      case CMD_VERSION :  showVersion();
+      case CMD_DIR     :  args.dir          = optarg; break;
+      case CMD_MISSINGOK:  args.is_missingok = true;   break;
+      case 'g'         :  args.do_set       = false;  break;
+      case 's'         :  args.do_set       = true;   break;
+      case 'x'         :  args.xid = Evc_xidopt2xid(optarg,true); break;
+      case 't'         :  registerValue(optarg, args.tags);       break;
+      default          :
+       WRITE_MSG(2, "Try '");
+       WRITE_STR(2, argv[0]);
+       WRITE_MSG(2, " --help\" for more information.\n");
+       return EXIT_FAILURE;
+       break;
+    }
+  }
+
+  if (args.xid==VC_NOCTX) {
+    WRITE_MSG(2, "No context specified; try '--help' for more information\n");
+    exit(wrapper_exit_code);
+  }
+
+  if (args.dir)
+    setFromDir(args.dir, args.is_missingok, args.xid);
+  else if (args.do_set) {
+    for (i=0; i<DIM_OF(args.tags); ++i) {
+      if (!args.tags[i].is_set) continue;
+      Evc_set_vhi_name(args.xid, i, args.tags[i].value, strlen(args.tags[i].value));
+    }
+  }
+  else if (optind==argc) {
+    char const *       delim = "";
+    for (i=0; i<DIM_OF(UTS_MAPPING); ++i) {
+      WRITE_STR(1, delim);
+      printUtsValue(args.xid, i);
+      delim = " ";
+    }
+    WRITE_MSG(1, "\n");
+
+    return EXIT_SUCCESS;
+  }
+  else {
+    char const *       delim = "";
+    while (optind <argc) {
+      int              idx = findUtsIdx(argv[optind], strlen(argv[optind]));
+      WRITE_STR(1, delim);
+      printUtsValue(args.xid, idx);
+      delim = " ";
+
+      ++optind;
+    }
+    WRITE_MSG(1, "\n");
+    
+    return EXIT_SUCCESS;
+  }
+
+  if (optind<argc)
+    EexecvpD(argv[optind], argv+optind);
+
+  return wrapper_exit_code;
+}
diff --git a/src/vunify-init.hc b/src/vunify-init.hc
new file mode 100644 (file)
index 0000000..da55f3f
--- /dev/null
@@ -0,0 +1,75 @@
+// $Id: vunify-init.hc,v 1.7 2005/03/18 00:24:27 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+#include "pathconfig.h"
+
+static void
+initModeManually(struct Arguments const UNUSED *args, int argc, char *argv[])
+{
+  int          i, count=argc/2;
+  
+  if (argc%2) {
+    WRITE_MSG(2, "Odd number of (path,excludelist) arguments\n");
+    exit(1);
+  }
+
+  if (count<2) {
+    WRITE_MSG(2, "No reference path(s) given\n");
+    exit(1);
+  }
+
+  MatchList_initManually(&global_info.dst_list, 0, strdup(argv[0]), argv[1]);
+
+  --count;
+  global_info.src_lists.v = Emalloc(sizeof(struct MatchList) * count);
+  global_info.src_lists.l = count;
+
+  for (i=0; i<count; ++i)
+    MatchList_initManually(global_info.src_lists.v+i, 0,
+                          strdup(argv[2 + i*2]), argv[3 + i*2]);
+}
+
+
+static void
+initModeVserver(struct Arguments const UNUSED *args, int argc, char *argv[])
+{
+  struct MatchVserverInfo              vserver = {
+    .name        = argv[0],
+    .use_pkgmgmt = true
+  };
+
+  if (!MatchVserverInfo_init(&vserver)) {
+    WRITE_MSG(2, "Failed to initialize unification for this vserver\n");
+    exit(1);
+  }
+  
+  if (argc!=1) {
+    WRITE_MSG(2, "More than one vserver is not supported\n");
+    exit(1);
+  }
+
+  if (!MatchList_initByVserver(&global_info.dst_list, &vserver)) {
+    WRITE_MSG(2, "unification not configured for this vserver\n");
+    exit(1);
+  }
+
+  MatchList_initRefserverList(&global_info.src_lists.v,
+                             &global_info.src_lists.l,
+                             vserver.appdir.d);
+
+  MatchVserverInfo_free(&vserver);
+}
diff --git a/src/vunify.c b/src/vunify.c
new file mode 100644 (file)
index 0000000..3e97409
--- /dev/null
@@ -0,0 +1,422 @@
+// $Id: vunify.c,v 1.15 2005/03/24 12:44:17 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2003,2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vunify.h"
+#include "util.h"
+
+#include "lib_internal/unify.h"
+#include "lib_internal/matchlist.h"
+#include "lib_internal/util-dotfile.h"
+#include "lib_internal/util-safechdir.h"
+#include <lib/vserver.h>
+
+#include <getopt.h>
+#include <dirent.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <stdbool.h>
+#include <errno.h>
+#include <wait.h>
+#include <fcntl.h>
+#include <assert.h>
+
+#define ENSC_WRAPPERS_IO       1
+#define ENSC_WRAPPERS_FCNTL    1
+#define ENSC_WRAPPERS_DIRENT   1
+#define ENSC_WRAPPERS_UNISTD   1
+#define ENSC_WRAPPERS_STDLIB   1
+#include <wrappers.h>
+
+int    wrapper_exit_code = 1;
+
+
+#define CMD_HELP               0x8000
+#define CMD_VERSION            0x8001
+#define CMD_MANUALLY           0x8002
+
+struct option const
+CMDLINE_OPTIONS[] = {
+  { "help",     no_argument,  0, CMD_HELP },
+  { "version",  no_argument,  0, CMD_VERSION },
+  { "manually", no_argument,  0, CMD_MANUALLY },
+  { 0,0,0,0 }
+};
+
+static struct WalkdownInfo             global_info;
+static struct SkipReason               skip_reason;
+static struct Arguments const *                global_args;
+
+int Global_getVerbosity() {
+  return global_args->verbosity;
+}
+
+bool Global_doRenew() {
+  return global_args->do_renew;
+}
+
+static void
+showHelp(int fd, char const *cmd, int res)
+{
+  WRITE_MSG(fd, "Usage:\n  ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " [-Rnv] <vserver>\n    or\n  ");
+  WRITE_STR(fd, cmd);
+  WRITE_MSG(fd,
+           " --manually [-Rnvx] [--] <path> <excludelist> [<path> <excludelist>]+\n\n"
+           "  --manually      ...  unify generic paths; excludelists must be generated\n"
+           "                       manually\n"
+           "  -R              ...  revert operation; deunify files\n"
+           "  -n              ...  do not modify anything; just show what there will be\n"
+           "                       done (in combination with '-v')\n"
+           "  -v              ...  verbose mode\n"
+           "  -x              ...  do not cross filesystems; this is valid in manual\n"
+           "                       mode only and will be ignored for vserver unification\n\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+#if 0      
+           "  -C              ...  use cached excludelists; usually they will be\n"
+           "                       regenerated after package installation to reflect e.g.\n"
+           "                       added/removed configuration files\n\n"
+#endif     
+  exit(res);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "vunify " VERSION " -- unifies vservers and/or directories\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2003,2004 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+// Returns 'false' iff one of the files is not existing, or of the files are different/not unifyable
+static bool
+checkFstat(struct MatchList const * const mlist,
+          PathInfo const * const  basename,
+          PathInfo const * const  path,
+          struct stat const ** const dst_fstat, struct stat * const dst_fstat_buf,
+          struct stat * const src_fstat)
+{
+  assert(basename->d[0] != '/');
+
+  if (*dst_fstat==0) {
+    // local file does not exist... strange
+    // TODO: message
+    skip_reason.r = rsFSTAT;
+    if (lstat(basename->d, dst_fstat_buf)==-1) return false;
+    *dst_fstat = dst_fstat_buf;
+  }
+
+  assert(*dst_fstat!=0);
+
+  
+  PathInfo     src_path = mlist->root;
+  char         src_path_buf[ENSC_PI_APPSZ(src_path, *path)];
+
+  PathInfo_append(&src_path, path, src_path_buf);
+
+    // source file does not exist
+  skip_reason.r = rsNOEXISTS;
+  if (lstat(src_path.d, src_fstat)==-1) return false;
+
+    // these are directories; this succeeds everytime
+  if (S_ISDIR((*dst_fstat)->st_mode) && S_ISDIR(src_fstat->st_mode)) return true;
+
+    // both files are different, so return false
+  skip_reason.r = rsDIFFERENT;
+  if ((!global_args->do_revert && !Unify_isUnifyable(*dst_fstat, src_fstat)) ||
+      ( global_args->do_revert && !Unify_isUnified  (*dst_fstat, src_fstat)))
+    return false;
+
+  // these are the same files
+  return true;
+}
+
+static struct MatchList const *
+checkDirEntry(PathInfo const *path,
+             PathInfo const *d_path, bool *is_dir,
+             struct stat *src_stat, struct stat *dst_stat)
+{
+  struct WalkdownInfo const * const    info     = &global_info;
+  struct MatchList const *             mlist;
+  struct stat const *                  cache_stat;
+
+  // Check if it is in the exclude/include list of the destination vserver and
+  // abort when it is not matching an allowed entry
+  skip_reason.r      = rsEXCL_DST;
+  skip_reason.d.list = &info->dst_list;
+  if (MatchList_compare(&info->dst_list, path->d)!=stINCLUDE) return 0;
+
+  // Now, go through the reference vservers and do the lightweigt list-check
+  // first and compare then the fstat's.
+  for (mlist=info->src_lists.v; mlist<info->src_lists.v+info->src_lists.l; ++mlist) {
+    cache_stat = 0;
+    skip_reason.r      = rsEXCL_SRC;
+    skip_reason.d.list = mlist;
+    if (MatchList_compare(mlist, path->d)==stINCLUDE &&
+       checkFstat(mlist, d_path, path, &cache_stat, dst_stat, src_stat)) {
+
+      // Failed the check or is it a symlink which can not be handled
+      if (cache_stat==0) return 0;
+
+      skip_reason.r = rsSYMLINK;
+      if (S_ISLNK(dst_stat->st_mode)) return 0;
+
+      skip_reason.r = rsSPECIAL;
+      if (!S_ISREG(dst_stat->st_mode) &&
+         !S_ISDIR(dst_stat->st_mode)) return 0;
+      
+      *is_dir = S_ISDIR(dst_stat->st_mode);
+      return mlist;
+    }
+    else if (cache_stat!=0 && !global_args->do_revert &&
+            skip_reason.r == rsDIFFERENT &&
+            Unify_isUnified(cache_stat, src_stat)) {
+      skip_reason.r      = rsUNIFIED;
+      skip_reason.d.list = mlist;
+      return 0;
+    }
+  }
+
+  // No luck...
+  return 0;
+}
+
+static bool
+updateSkipDepth(PathInfo const *path, bool walk_down)
+{
+  struct WalkdownInfo const * const    info   = &global_info;
+  struct MatchList *                   mlist;
+  bool                                 result = false;
+
+  for (mlist=info->src_lists.v; mlist<info->src_lists.v+info->src_lists.l; ++mlist) {
+    // The easy way... this path is being skipped already
+    if (mlist->skip_depth>0) {
+      if (walk_down) ++mlist->skip_depth;
+      else           --mlist->skip_depth;
+      continue;
+    }
+    else if (walk_down) {
+      PathInfo         src_path = mlist->root;
+      char             src_path_buf[ENSC_PI_APPSZ(src_path, *path)];
+      struct stat      src_fstat;
+
+      PathInfo_append(&src_path, path, src_path_buf);
+
+      // when the file/dir exist, we have do go deeper.
+      // else skip it in deeper runs for *this* matchlist
+      if (lstat(src_path.d, &src_fstat)!=-1) result = true;
+      else                                   ++mlist->skip_depth;
+    }
+    else {
+      // TODO: warning
+    }
+  }
+
+  return result;
+}
+
+static bool
+doit(struct MatchList const *mlist,
+     PathInfo const *src_path, struct stat const *src_stat,
+     char const *dst_path,     struct stat const UNUSED *dst_stat)
+{
+  PathInfo     path = mlist->root;
+  char         path_buf[ENSC_PI_APPSZ(path, *src_path)];
+
+  if (global_args->do_dry_run || Global_getVerbosity()>=2) {
+    if (global_args->do_revert) WRITE_MSG(1, "deunifying '");
+    else                        WRITE_MSG(1, "unifying   '");
+
+    Vwrite(1, src_path->d, src_path->l);
+    WRITE_MSG(1, "'");
+
+    if (Global_getVerbosity()>=4) {
+      WRITE_MSG(1, " (from ");
+      if (Global_getVerbosity()==4 && mlist->id.d)
+       Vwrite(1, mlist->id.d, mlist->id.l);
+      else
+       Vwrite(1, mlist->root.d, mlist->root.l);
+      WRITE_MSG(1, ")");
+    }
+    WRITE_MSG(1, "\n");
+  }
+  
+  PathInfo_append(&path, src_path, path_buf);
+  return (global_args->do_dry_run ||
+         (!global_args->do_revert && Unify_unify  (path.d, src_stat, dst_path, false)) ||
+         ( global_args->do_revert && Unify_deUnify(dst_path)));
+}
+
+
+static void
+printSkipReason()
+{
+  WRITE_MSG(1, " (");
+  switch (skip_reason.r) {
+    case rsDOTFILE     :  WRITE_MSG(1, "dotfile"); break;
+    case rsEXCL_DST    :
+    case rsEXCL_SRC    :
+      WRITE_MSG(1, "excluded by ");
+      MatchList_printId(skip_reason.d.list, 1);
+      break;
+    case rsFSTAT       :  WRITE_MSG(1, "fstat error"); break;
+    case rsNOEXISTS    :  WRITE_MSG(1, "does not exist in refserver(s)"); break;
+    case rsSYMLINK     :  WRITE_MSG(1, "symlink"); break;
+    case rsSPECIAL     :  WRITE_MSG(1, "non regular file"); break;
+    case rsUNIFIED     :  WRITE_MSG(1, "already unified"); break;
+    case rsDIFFERENT   :  WRITE_MSG(1, "different"); break;
+    default            :  assert(false); abort();
+  }
+  WRITE_MSG(1, ")");
+}
+
+#include "vserver-visitdir.hc"
+
+static uint64_t
+visitDirEntry(struct dirent const *ent)
+{
+  bool                         is_dir;
+  struct MatchList const *     match;
+  struct stat                  f_stat = { .st_dev = 0 };
+  char const *                 dirname  = ent->d_name;
+  PathInfo                     path     = global_info.state;
+  PathInfo                     d_path = {
+    .d = dirname,
+    .l = strlen(dirname)
+  };
+  char                         path_buf[ENSC_PI_APPSZ(path, d_path)];
+  bool                         is_dotfile;
+  struct stat                  src_stat;
+  uint64_t                     res = 1;
+
+  PathInfo_append(&path, &d_path, path_buf);
+
+  is_dotfile    = isDotfile(dirname);
+  skip_reason.r = rsDOTFILE;
+
+  if (is_dotfile ||
+      (match=checkDirEntry(&path, &d_path, &is_dir, &src_stat, &f_stat))==0) {
+    bool       is_link = is_dotfile ? false : S_ISLNK(f_stat.st_mode);
+    
+    if (Global_getVerbosity()>=1 &&
+       (Global_getVerbosity()>=3 || skip_reason.r!=rsUNIFIED) &&
+       ((!is_dotfile && !is_link) ||
+        (Global_getVerbosity()>=6 && is_dotfile) ||
+        (Global_getVerbosity()>=6 && is_link)) ) {
+      WRITE_MSG(1, "  skipping '");
+      Vwrite(1, path.d, path.l);
+      WRITE_MSG(1, "'");
+      if (Global_getVerbosity()>=2) printSkipReason();
+      WRITE_MSG(1, "\n");
+    }
+    return 0;
+  }
+
+  if (is_dir) {
+    if (updateSkipDepth(&path, true)) {
+      res = visitDir(dirname, &f_stat);
+      updateSkipDepth(&path, false);
+    }
+    else
+      res = 0;
+  }
+  else if (!doit(match, &path, &src_stat, dirname, &f_stat)) {
+      // TODO: message
+  }
+  else
+    res = 0;
+
+  return res;
+}
+
+#include "vunify-init.hc"
+
+int main(int argc, char *argv[])
+{
+  struct Arguments     args = {
+    .mode              =  mdVSERVER,
+    .do_revert         =  false,
+    .do_dry_run                =  false,
+    .verbosity         =  0,
+    .local_fs          =  false,
+    .do_renew          =  true,
+  };
+
+  global_args = &args;
+  while (1) {
+    int                c = getopt_long(argc, argv, "Rnvcx",
+                               CMDLINE_OPTIONS, 0);
+    if (c==-1) break;
+
+    switch (c) {
+      case CMD_HELP            :  showHelp(1, argv[0], 0);
+      case CMD_VERSION         :  showVersion();
+      case CMD_MANUALLY                :  args.mode = mdMANUALLY; break;
+      case 'R'                 :  args.do_revert  = true; break;
+      case 'n'                 :  args.do_dry_run = true; break;
+      case 'x'                 :  args.local_fs   = true; break;
+      //case 'C'                       :  args.do_renew   = false; break;
+      case 'v'                 :  ++args.verbosity; break;
+      default          :
+       WRITE_MSG(2, "Try '");
+       WRITE_STR(2, argv[0]);
+       WRITE_MSG(2, " --help\" for more information.\n");
+       return EXIT_FAILURE;
+       break;
+    }
+  }
+
+  if (argc==optind) {
+    WRITE_MSG(2, "No directory/vserver given\n");
+    return EXIT_FAILURE;
+  }
+
+  switch (args.mode) {
+    case mdMANUALLY    :  initModeManually(&args, argc-optind, argv+optind); break;
+    case mdVSERVER     :  initModeVserver (&args, argc-optind, argv+optind); break;
+    default            :  assert(false); return EXIT_FAILURE;
+  }
+    
+  global_info.state.d = "";
+  global_info.state.l = 0;
+
+
+  if (Global_getVerbosity()>=1) WRITE_MSG(1, "Starting to traverse directories...\n");
+  Echdir(global_info.dst_list.root.d);
+  visitDir("/", 0);
+
+#ifndef NDEBUG
+  {
+    size_t             i;
+    MatchList_destroy(&global_info.dst_list);
+    for (i=0; i<global_info.src_lists.l; ++i)
+      MatchList_destroy(global_info.src_lists.v+i);
+
+    free(global_info.src_lists.v);
+  }
+#endif
+}
diff --git a/src/vunify.h b/src/vunify.h
new file mode 100644 (file)
index 0000000..73096ea
--- /dev/null
@@ -0,0 +1,72 @@
+// $Id: vunify.h,v 1.7 2005/03/18 03:56:06 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_SRC_VUNIFY_H
+#define H_UTIL_VSERVER_SRC_VUNIFY_H
+
+#include "lib_internal/matchlist.h"
+
+#include <sys/stat.h>
+
+struct dirent;
+struct WalkdownInfo
+{
+    PathInfo                           state;
+    struct MatchList                   dst_list;
+    struct {
+       struct MatchList *              v;
+       size_t                          l;
+    }                                  src_lists;
+};
+
+struct SkipReason {
+    enum { rsDOTFILE, rsEXCL_DST, rsEXCL_SRC,
+          rsFSTAT, rsNOEXISTS, rsSYMLINK, rsUNIFIED,
+          rsSPECIAL, rsDIFFERENT }     r;
+
+    union {
+       struct MatchList const *        list;
+    }                                  d;
+};
+
+struct Arguments {
+    enum {mdMANUALLY, mdVSERVER}       mode;
+    bool                               do_revert;
+    bool                               do_dry_run;
+    unsigned int                       verbosity;
+    bool                               local_fs;
+    bool                               do_renew;
+};
+
+static bool    checkFstat(struct MatchList const * const,
+                          PathInfo const * const,
+                          PathInfo const * const,
+                          struct stat const ** const, struct stat * const,
+                          struct stat *) NONNULL((1,2,3,4,5,6));
+
+static struct MatchList const *
+checkDirEntry(PathInfo const *,
+             PathInfo const *,
+             bool *, struct stat *, struct stat *) NONNULL((1,2,3,4,5));
+
+static bool    updateSkipDepth(PathInfo const *, bool) NONNULL((1));
+static bool    doit(struct MatchList const *,
+                    PathInfo const *, struct stat const *,
+                    char const *dst_path, struct stat const *) NONNULL((1,2,3));
+
+#endif //  H_UTIL_VSERVER_SRC_VUNIFY_H
diff --git a/src/vwait.c b/src/vwait.c
new file mode 100644 (file)
index 0000000..031bae4
--- /dev/null
@@ -0,0 +1,218 @@
+// $Id: vwait.c,v 1.1 2005/05/05 09:22:03 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "lib/vserver.h"
+#include "lib/internal.h"
+#include "linuxvirtual.h"
+#include "util.h"
+
+#include <getopt.h>
+#include <signal.h>
+#include <time.h>
+#include <errno.h>
+#include <libgen.h>
+
+#define ENSC_WRAPPERS_PREFIX   "vwait: "
+#define ENSC_WRAPPERS_STDLIB   1
+#define ENSC_WRAPPERS_UNISTD   1
+#define ENSC_WRAPPERS_VSERVER  1
+#include <wrappers.h>
+
+#define CMD_HELP       0x8000
+#define CMD_VERSION    0x8001
+
+#define CMD_TIMEOUT    0x4000
+#define CMD_TERMINATE  0x4001
+#define CMD_STATUS_FD  0x4002
+
+static struct option const
+CMDLINE_OPTIONS[] = {
+  { "help",       no_argument,        0, CMD_HELP },
+  { "version",    no_argument,        0, CMD_VERSION },
+  { "timeout",    required_argument,  0, CMD_TIMEOUT },
+  { "terminate",  no_argument,        0, CMD_TERMINATE },
+  { "status-fd",  required_argument,  0, CMD_STATUS_FD },
+  { 0,0,0,0 }
+};
+
+int                    wrapper_exit_code = 1;
+static sig_atomic_t    aborted = 0;
+
+struct StatusType {
+    enum {stERROR, stFINISHED, stKILLED,
+         stTIMEOUT}                            status;
+    int                                                rc;
+};
+
+struct Arguments
+{
+    xid_t              xid;
+    int                        timeout;
+    int                        status_fd;
+    bool               do_terminate;
+};
+
+static void
+showHelp(char const *cmd)
+{
+  VSERVER_DECLARE_CMD(cmd);
+
+  WRITE_MSG(1, "Usage:  ");
+  WRITE_STR(1, cmd);
+  WRITE_STR(1,
+           " [--timeout <timeout>] [--terminate] [--status-fd <fd>] [--] <xid>\n"
+           "\n"
+           "Please report bugs to " PACKAGE_BUGREPORT "\n");
+  exit(0);
+}
+
+static void
+showVersion()
+{
+  WRITE_MSG(1,
+           "vwait " VERSION " -- waits for a context to finish\n"
+           "This program is part of " PACKAGE_STRING "\n\n"
+           "Copyright (C) 2005 Enrico Scholz\n"
+           VERSION_COPYRIGHT_DISCLAIMER);
+  exit(0);
+}
+
+static void
+handler(int UNUSED num)
+{
+  aborted = 1;
+}
+
+static struct StatusType
+doit(struct Arguments const *args)
+{
+  time_t                       end_time = 0;
+  struct StatusType            res;
+  
+  if (args->timeout>0) {
+    end_time = time(0) + args->timeout;
+    signal(SIGALRM, handler);
+    alarm(args->timeout);
+  }
+
+  for (;;) {
+    res.rc = vc_wait_exit(args->xid);
+    
+    if      (res.rc==-1 && errno!=EAGAIN && errno!=EINTR) {
+      res.rc     = errno;
+      res.status = stERROR;
+      perror(ENSC_WRAPPERS_PREFIX "vc_wait_exit()");
+    }
+    else if (res.rc==-1 && args->timeout>0 && time(0)>=end_time) {
+      if (!args->do_terminate)
+       res.status = stTIMEOUT;
+      else {
+       vc_ctx_kill(args->xid, 1, 9);
+       vc_ctx_kill(args->xid, 0, 9);
+       res.status = stKILLED;
+      }
+    }
+    else if (res.rc==-1)
+      continue;                // signal
+    else
+      res.status = stFINISHED;
+
+    break;
+  }
+
+  alarm(0);
+  return res;
+}
+
+static void
+writeStatus(int fd, char const *str, int const *rc, int exit_code)
+{
+  if (fd==-1) exit(exit_code);
+
+  WRITE_STR(fd, str);
+  if (rc) {
+    char               buf[sizeof(*rc)*3 + 2];
+    size_t             len = utilvserver_fmt_long(buf, *rc);
+    WRITE_MSG(fd, " ");
+    Vwrite   (fd, buf, len);
+  }
+  WRITE_MSG(fd, "\n");
+  
+  exit(exit_code);
+}
+
+int main(int argc, char *argv[])
+{
+  struct StatusType    res;
+  struct Arguments     args = {
+    .xid          = VC_NOCTX,
+    .timeout      = -1,
+    .status_fd    = -1,
+    .do_terminate = false,
+  };
+
+  while (1) {
+    int                c = getopt_long(argc, argv, "c:", CMDLINE_OPTIONS, 0);
+    if (c==-1) break;
+
+    switch (c) {
+      case CMD_HELP            :  showHelp(argv[0]);
+      case CMD_VERSION         :  showVersion();
+      case CMD_TERMINATE       :  args.do_terminate = true;         break;
+      case CMD_TIMEOUT         :  args.timeout      = atoi(optarg); break;
+      case CMD_STATUS_FD       :  args.status_fd    = atoi(optarg); break;
+      default          :
+       WRITE_MSG(2, "Try '");
+       WRITE_STR(2, argv[0]);
+       WRITE_MSG(2, " --help\" for more information.\n");
+       return EXIT_FAILURE;
+       break;
+    }
+  }
+
+  if (optind+1 > argc) {
+    WRITE_MSG(2, ENSC_WRAPPERS_PREFIX "no context specified; try '--help' for more information\n");
+    exit(wrapper_exit_code);
+  }
+
+  if (optind+1 < argc) {
+    WRITE_MSG(2, ENSC_WRAPPERS_PREFIX "can not wait for more than one context; try '--help' for more information\n");
+    exit(wrapper_exit_code);
+  }
+  
+  args.xid = Evc_xidopt2xid(argv[optind], true);
+
+  if (args.xid==VC_NOCTX) {
+    WRITE_MSG(2, ENSC_WRAPPERS_PREFIX "invalid context specified; try '--help' for more information\n");
+    exit(wrapper_exit_code);
+  }
+
+  res = doit(&args);
+
+  switch (res.status) {
+    case stERROR       :  writeStatus(args.status_fd, "ERROR",    &res.rc, 127);
+    case stFINISHED    :  writeStatus(args.status_fd, "FINISHED", &res.rc,   0);
+    case stKILLED      :  writeStatus(args.status_fd, "KILLED",         0,   1);
+    case stTIMEOUT     :  writeStatus(args.status_fd, "TIMEOUT",        0,   2);
+    default            :  writeStatus(args.status_fd, "???",      &res.rc, 126);
+  }
+}
index 338a782..8e86ffb 100644 (file)
@@ -1,4 +1,4 @@
-## $Id: Makefile-files,v 1.1.4.2 2003/10/30 15:16:30 ensc Exp $  -*- makefile -*-
+## $Id: Makefile-files,v 1.8 2004/03/24 01:44:43 ensc Exp $  -*- makefile -*-
 
 ## Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 ##  
 ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 ##  
 
-sysv_XTRAS             =  sysv/rebootmgr.subst \
-                          sysv/v_gated.subst \
-                          sysv/v_httpd.subst \
-                          sysv/v_named.subst \
-                          sysv/v_portmap.subst \
-                          sysv/v_sendmail.subst \
-                          sysv/v_smb.subst \
-                          sysv/v_sshd.subst \
-                          sysv/v_xinetd.subst \
-                          sysv/vservers.subst
-
-sysv_GENSCRPTS         =  sysv/rebootmgr \
-                          sysv/v_gated \
-                          sysv/v_httpd \
-                          sysv/v_named \
-                          sysv/v_portmap \
-                          sysv/v_sendmail \
-                          sysv/v_smb \
-                          sysv/v_sshd \
-                          sysv/v_xinetd \
-                          sysv/vservers
-
-sysv_SCRPTS            =  $(sysv_GENSCRPTS)
-
-sysv_CFG               =  sysv/vservers.conf
+AM_INSTALLCHECK_STD_OPTIONS_EXEMPT +=  \
+                       $(sysv_src_SCRPTS) \
+                       $(sysv_gen_SCRPTS)
 
+sysv_src_SCRPTS =      sysv/rebootmgr \
+                       sysv/vprocunhide \
+                       sysv/vservers-default \
+                       sysv/vservers-legacy
+sysv_gen_SCRPTS =      sysv/v_gated \
+                       sysv/v_httpd \
+                       sysv/v_named \
+                       sysv/v_portmap \
+                       sysv/v_sendmail \
+                       sysv/v_smb \
+                       sysv/v_sshd \
+                       sysv/v_xinetd
+sysv_conf_DTA =                sysv/vservers.conf
+
+sysconf_DATA +=                $(sysv_conf_DTA)
+EXTRA_DIST +=          sysv/v_gated.subst \
+                       sysv/v_httpd.subst \
+                       sysv/v_named.subst \
+                       sysv/v_portmap.subst \
+                       sysv/v_sendmail.subst \
+                       sysv/v_smb.subst \
+                       sysv/v_sshd.subst \
+                       sysv/v_xinetd.subst \
+                       $(sysv_src_SCRPTS) \
+                       $(sysv_conf_DTA)
+
+initrd_SCRIPTS +=      $(sysv_src_SCRPTS) \
+                       $(sysv_gen_SCRPTS)
+
+CLEANFILES +=          $(sysv_gen_SCRPTS)
+
+sysv_SUBSTRULE =       s!/usr/lib/util-vserver!$(pkglibdir)!g; \
+                       s!^USR_SBIN=/usr/sbin$$!USR_SBIN=$(sbindir)!g; \
+                        s!^DEFAULT_VSERVERDIR=/vservers$$!DEFAULT_VSERVERDIR=$(vserverdir)!g
 
 sysv/%:                        sysv/%.subst
                        @mkdir -p $$(dirname '$@')
-                       sed -e 's!/usr/lib/util-vserver!$(pkglibdir)!g; \
-                               s!^USR_SBIN=/usr/sbin$$!USR_SBIN=$(sbindir)!g; \
-                                s!^VROOTDIR=/vservers$$!VROOTDIR=$(vserverdir)!g; \
-                              ' '$<' >'$@.tmp'
-                       if cmp -s '$<' '$@.tmp'; then \
+                       sed -e '$(sysv_SUBSTRULE)' '$<' >'$@.tmp'
+                       @rm -f '$@'
+                       @if cmp -s '$<' '$@.tmp'; then \
                                cp -p '$<' '$@'; \
                        else \
                                mv -f '$@.tmp' '$@'; \
                        fi
-                       -rm -f '$@.tmp'
+                       @rm -f '$@.tmp'
                        @chmod a-w '$@'
diff --git a/sysv/rebootmgr b/sysv/rebootmgr
new file mode 100755 (executable)
index 0000000..8d60dd9
--- /dev/null
@@ -0,0 +1,68 @@
+#!/bin/sh
+# chkconfig: - 98 02
+# description: The rebootmgr service is monitoring all virtual servers \
+#              and restart them as need. Virtual servers are using \
+#              the /sbin/vreboot command to talk with the reboot manager
+# processname: rebootmgr
+# config: /etc/vservers
+
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
+test -e "$UTIL_VSERVER_VARS" || {
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
+    exit 1
+}
+. "$UTIL_VSERVER_VARS"
+
+PIDFILE=/var/run/rebootmgr.pid
+# See how we were called.
+case "$1" in
+  start)
+       echo "Starting the reboot manager"
+       cd $__CONFDIR
+       VSERVERS=
+       for serv in *.conf
+       do
+               test -f "$serv" || continue
+
+               serv=`basename $serv .conf`
+               if [ -d $__DEFAULT_VSERVERDIR/$serv ] ; then
+                       VSERVERS="$VSERVERS $serv"
+               fi
+       done
+       $_REBOOTMGR --pidfile $PIDFILE $VSERVERS &
+       touch /var/lock/subsys/rebootmgr
+       ;;
+  stop)
+       echo "Stopping the reboot manager"
+       kill `cat $PIDFILE`
+       rm -f /var/lock/subsys/rebootmgr
+       rm -f $PIDFILE
+       ;;
+  restart)
+       $0 stop
+       $0 start
+       ;;
+  reload)
+       echo Not implemented
+       ;;
+  status)
+       if [ -f $PIDFILE ] ; then
+               if kill -0 `cat $PIDFILE`
+               then
+                       echo rebootmgr is running
+               else
+                       echo rebootmgr is NOT running
+               fi
+       fi
+       ;;
+  *)
+       echo "Usage: rebootmgr {start|stop|restart|reload|status}"
+       exit 1
+esac
+
+exit 0
+
+
+
+
+
diff --git a/sysv/vprocunhide b/sysv/vprocunhide
new file mode 100755 (executable)
index 0000000..17a2cd4
--- /dev/null
@@ -0,0 +1,73 @@
+#!/bin/bash
+#
+# vprocunhide  sets vserver related attributes for /proc
+#
+# chkconfig: 2345 26 74
+# description: Makes some /proc entries visibly for vservers
+
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
+test -e "$UTIL_VSERVER_VARS" || {
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
+    exit 1
+}
+. "$UTIL_VSERVER_VARS"
+
+$_VSERVER_INFO - FEATURE iattr || exit 0
+
+f=/etc/rc.d/init.d/functions
+if test -e "$f"; then
+    . "$f"
+    lockfile=/var/lock/subsys/vprocunhide
+else
+    success() { echo .; }
+    passed()  { echo .; }
+    failure() { echo ERROR; }
+    lockfile=/var/run/vprocunhide
+fi
+
+
+function start()
+{
+    echo -n $"Fixing /proc entries visibility..."
+    $_VPROCUNHIDE
+    retval=$?
+    case "$retval" in
+       0)      success;;
+       2)      passed; retval=0;;
+       *)      failure;
+    esac
+    echo
+    test "$retval" -ne 0 || touch "$lockfile"
+    return $retval
+}
+
+function stop()
+{
+    rm -f "$lockfile"
+}
+
+function restart()
+{
+    stop
+    start
+}
+
+case "$1" in
+    start|stop|restart)        $1;;
+    reload)            ;;
+    condrestart)
+       test -f $lockfile && restart || :
+       ;;
+    status)
+       test -f $lockfile && {
+           echo $"/proc entries were fixed"
+           exit 0
+       }
+       echo $"/proc entries are not fixed"
+       exit 1
+       ;;
+    *)
+        echo "Usage: $0 {start|stop|reload|restart|condrestart|status}"
+       exit 2
+       ;;
+esac
diff --git a/sysv/vservers-default b/sysv/vservers-default
new file mode 100755 (executable)
index 0000000..3d9b576
--- /dev/null
@@ -0,0 +1,25 @@
+#!/bin/sh
+# chkconfig: - 98 02
+# description: Wrapper to start the default vservers
+
+## The *basename* of the lockfile; this must be the same name like
+## this if the initscript. Else, the vservers will not be stopped at
+## shutdown
+#LOCKFILE=vserver-default
+
+## Number of vservers which shall be started in parallel; since most
+## initmethods are spending much time time in sleeps, it is safe to
+## use a high number here
+#NUMPARALLEL=99
+
+## The vserver-flavor; the 'default' vservers will be started very late
+## which may be inappropriately for early services like nameservers or
+## VPN tunnels. By copying this initscript to a new name and adapting
+## the startup-position (for RH/Fedora the numbers in line 2), other
+## vservers can be selected. Identification of vservers happens by
+## putting the flavor into /etc/vservers/<vserver-id>/apps/init/mark.
+#MARK=default
+
+export MARK NUMPARALLEL LOCKFILE
+exec /usr/lib/util-vserver/vserver-wrapper "$@"
+
diff --git a/sysv/vservers-legacy b/sysv/vservers-legacy
new file mode 100755 (executable)
index 0000000..6e41071
--- /dev/null
@@ -0,0 +1,92 @@
+#!/bin/sh
+# chkconfig: 345 98 02
+# description: The vservers service is used to start and stop all
+#              the virtual servers.
+
+: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
+test -e "$UTIL_VSERVER_VARS" || {
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
+    exit 1
+}
+. "$UTIL_VSERVER_VARS"
+
+# Print the vserver name in priority/alpha order
+sortserver(){
+       (
+       cd $__CONFDIR
+       for serv in *.conf
+       do
+               test -f "$serv" || continue
+
+               PRIORITY=100
+               . $serv
+               test "$ONBOOT" || continue
+               printf "%03d %s\n" $PRIORITY `basename $serv .conf`
+       done
+       ) | sort $* | (while read a b; do echo $b; done)
+}
+
+startservers(){
+       echo "Starting the virtual servers"
+       cd $__CONFDIR
+       for name in `sortserver`
+       do
+               ONBOOT=
+               . $name.conf
+               if [ "$ONBOOT" = "yes" ] ; then
+                       $_VSERVER_LEGACY $name start
+               else
+                       echo virtual server $name not configured for on boot start
+               fi
+       done
+}
+
+BACKGROUND=off
+if [ -f /etc/vservers.conf ] ; then
+       . /etc/vservers.conf
+fi
+
+
+# See how we were called.
+case "$1" in
+  start)
+       if [ "$BACKGROUND" = "yes" ] ; then
+               startservers >/dev/tty8 </dev/tty8 2>/dev/tty8 &
+       else
+               startservers
+       fi
+       touch /var/lock/subsys/vservers-legacy
+       ;;
+  stop)
+       echo "Stopping the virtual servers"
+       cd $__CONFDIR
+       for name in `sortserver -r`
+       do
+               $_VSERVER_LEGACY $name stop
+       done
+       rm -f /var/lock/subsys/vservers-legacy
+       ;;
+  restart)
+       $0 stop
+       $0 start
+       ;;
+  reload)
+       echo Not implemented
+       ;;
+  status)
+       cd $__CONFDIR
+       for serv in *.conf
+       do
+               ONBOOT=no
+               name=`basename $serv .conf`
+               . $serv
+               echo -n ONBOOT=$ONBOOT " "
+               $_VSERVER_LEGACY $name running
+       done
+       ;;
+  *)
+       echo "Usage: vservers {start|stop|restart|reload|status}"
+       exit 1
+esac
+
+exit 0
index 50148c4..dda759f 100644 (file)
@@ -1,4 +1,4 @@
-## $Id: Makefile-files,v 1.1.4.1 2003/11/28 23:10:08 ensc Exp $  -*- makefile -*-
+## $Id: Makefile-files,v 1.9 2004/08/19 14:01:33 ensc Exp $  -*- makefile -*-
 
 ## Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
 ##  
 ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 ##  
 
-test_PRGS              =  tests/escaperoot \
-                          tests/forkbomb \
-                          tests/testipc \
-                          tests/testlimit \
-                          tests/testopenf
-
-tests_escaperoot_SOURCES       =  tests/escaperoot.cc
-tests_forkbomb_SOURCES         =  tests/forkbomb.cc
-tests_testipc_SOURCES          =  tests/testipc.cc
-tests_testlimit_SOURCES                =  tests/testlimit.cc
-tests_testopenf_SOURCES                =  tests/testopenf.cc
+tests_dietprogs =              tests/getctx \
+                               tests/getinitpid \
+                               tests/vserver-info
+
+noinst_PROGRAMS +=             tests/escaperoot \
+                               tests/forkbomb \
+                               tests/testipc \
+                               tests/testlimit \
+                               tests/testopenf \
+                               $(tests_dietprogs)
+
+
+DIETPROGS +=                   $(tests_dietprogs)
+
+tests_escaperoot_SOURCES       =  tests/escaperoot.c
+tests_forkbomb_SOURCES         =  tests/forkbomb.c
+tests_testipc_SOURCES          =  tests/testipc.c
+tests_testlimit_SOURCES                =  tests/testlimit.c
+tests_testopenf_SOURCES                =  tests/testopenf.c
+
+tests_getctx_SOURCES           =  tests/getctx.c
+tests_getctx_LDADD             =  $(VSERVER_LDADDS)
+tests_getctx_LDFLAGS           =  $(VSERVER_LDFLGS)
+
+tests_getinitpid_SOURCES       =  tests/getinitpid.c
+tests_getinitpid_LDADD         =  $(VSERVER_LDADDS)
+tests_getinitpid_LDFLAGS       =  $(VSERVER_LDFLGS)
+
+tests_vserver_info_SOURCES     =  tests/vserver-info.c
+tests_vserver_info_LDADD       =  $(VSERVER_LDADDS)
+tests_vserver_info_LDFLAGS     =  $(VSERVER_LDFLGS)
diff --git a/tests/escaperoot.c b/tests/escaperoot.c
new file mode 100644 (file)
index 0000000..4e71de3
--- /dev/null
@@ -0,0 +1,119 @@
+// $Id: escaperoot.c,v 1.3 2004/01/13 14:56:26 ensc Exp $
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+// based on tests/escaperoot.cc by Jacques Gelinas
+//  
+// 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, 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.
+
+/*
+       This program tries to escape out of a vserver using chroot flaws.
+       Once escaped, it exec a shell.
+
+       None of this works on 2.4.13.
+*/
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <errno.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <wait.h>
+#include <limits.h>
+
+static void print_pwd()
+{
+       char path[PATH_MAX];
+       if (getcwd(path,sizeof(path)-1)!=NULL){
+               printf ("PWD: %s\n",path);
+       }
+}
+/*
+       Just set a chroot in a sub-directory and keep the
+       current directory behind
+*/
+static void test1()
+{
+       printf ("test1\n");
+       print_pwd();
+       mkdir ("dummy_dir",0755);
+       if (chroot ("dummy_dir")==-1){
+               fprintf (stderr,"Can't chroot into dummy_dir (%s)\n",strerror(errno));
+       }else{
+               int i;
+               // Try to chdir into the real root
+               for (i=0; i<1000; i++) chdir("..");
+               print_pwd();
+               if (execl ("/bin/sh","/bin/sh",NULL)==-1){
+                       fprintf (stderr,"execl /bin/sh failed (%s)\n",strerror(errno));
+               }
+       }
+}
+
+/*
+       Same as test1, except we open the current directory and do
+       a fchdir() to it before trying to escape to the real root.
+*/
+static void test2()
+{
+        int            fd;
+  
+       printf ("test2\n");
+       print_pwd();
+       mkdir ("dummy_dir",0755);
+       fd = open (".",O_RDONLY);
+       if (fd == -1){
+               fprintf (stderr,"Can't open current directory (%s)\n",strerror(errno));
+       }else if (chroot ("dummy_dir")==-1){
+               fprintf (stderr,"Can't chroot into dummy_dir (%s)\n",strerror(errno));
+       }else if (fchdir(fd)==-1){
+               fprintf (stderr,"Can't fchdir to the current directory (%s)\n"
+                       ,strerror(errno));
+       }else{
+               int i;
+               // Try to chdir into the real root
+               for (i=0; i<1000; i++) chdir("..");
+               print_pwd();
+               if (execl ("/bin/sh","/bin/sh",NULL)==-1){
+                       fprintf (stderr,"execl /bin/sh failed (%s)\n",strerror(errno));
+               }
+       }
+}
+
+/*
+       Perform the test in a sub-process so it won't affect the current one
+*/
+static void dotest (void (*f)())
+{
+       pid_t pid = fork();
+       if (pid == 0){
+               f();
+               _exit (0);
+       }else if (pid == -1){
+               fprintf (stderr,"Can't fork (%s)\n",strerror(errno));
+       }else{
+               int status;
+               wait (&status);
+       }
+}
+
+int main ()
+{
+       dotest (test1);
+       dotest (test2);
+       printf ("All attempts failed\n");
+       return 0;
+}
+
+
diff --git a/tests/forkbomb.c b/tests/forkbomb.c
new file mode 100644 (file)
index 0000000..e7ba48f
--- /dev/null
@@ -0,0 +1,109 @@
+// $Id: forkbomb.c,v 1.2 2003/12/26 00:48:26 uid68581 Exp $
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+// based on tests/forkbomb.cc by Jacques Gelinas
+//  
+// 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, 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.
+
+#include <stdlib.h>
+#include <errno.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <unistd.h>
+#include <stdio.h>
+
+typedef enum {MODE_SLEEP,MODE_LOOP,MODE_FORK, MODE_FORKSHELL} MODE;
+
+
+static void forkbomb_userfork (MODE mode)
+{
+       pid_t pid = fork();
+       if (pid==-1){
+               fprintf (stderr,"Fork failed (%s)\n",strerror(errno));
+       }else if (pid == 0){
+               if (mode == MODE_SLEEP){
+                       sleep(20);
+               }else if (mode == MODE_LOOP){
+                       int k=0;
+                       while (1) k++;
+               }else if (mode == MODE_FORKSHELL){
+                       system ("/bin/false");
+               }
+               _exit (0);
+       }
+}
+
+
+int main (int argc, char *argv[])
+{
+       if (argc != 4){
+               fprintf (stderr,"formboom N M mode\n"
+                       "where N is the number of process to start\n"
+                       "and M is the number of user to start\n"
+                       "Each user will try to start N process\n"
+                       "\n"
+                       "mode is:\n"
+                       "    sleep: Each process sleeps for 20 seconds and exits\n"
+                       "    loop:  Each process loops forever\n"
+                       "    fork:  Each process exits immediatly and is restarted\n"
+                       "           by the parent\n"
+                       "    forkshell: Each process runs /bin/false in a shell and\n"
+                       "           exits, then the parent start a new one\n"
+                       );
+       }else{
+               MODE    mode;
+               int     i;
+               if (strcmp(argv[3],"sleep")==0){
+                       mode = MODE_SLEEP;
+               }else if (strcmp(argv[3],"loop")==0){
+                       mode = MODE_LOOP;
+               }else if (strcmp(argv[3],"fork")==0){
+                       mode = MODE_FORK;
+               }else if (strcmp(argv[3],"forkshell")==0){
+                       mode = MODE_FORKSHELL;
+               }else{
+                       fprintf (stderr,"Invalid mode\n");
+                       exit (-1);
+               }
+               for (i=0; i<atoi(argv[2]); i++){
+                       if (fork()==0){
+                               if (setuid (i+1)==-1){
+                                       fprintf (stderr,"Can't setuid to uid %d (%s)\n",i+1
+                                               ,strerror(errno));
+                               }else{
+                                       int j;
+                                       for (j=0; j<atoi(argv[1]); j++){
+                                               forkbomb_userfork (mode);
+                                       }
+                                       if (mode == MODE_FORK || mode == MODE_FORKSHELL){
+                                               // Ok, all processes are started, in MODE_FORK
+                                               // we create a new one all the time
+                                               int status;
+                                               while (wait(&status)!=-1) forkbomb_userfork(mode);
+                                       }
+                               }
+                               _exit (0);
+                       }
+               }
+               system ("ps ax | wc -l");
+               printf ("All the process are running now\n");
+               printf ("Exit to end all processes\n");
+               system ("/bin/sh");
+               system ("killall forkbomb");
+       }
+       return 0;
+}
+
diff --git a/tests/getctx.c b/tests/getctx.c
new file mode 100644 (file)
index 0000000..250b752
--- /dev/null
@@ -0,0 +1,45 @@
+// $Id: getctx.c,v 1.9 2004/01/21 19:01:01 ensc Exp $    --*- c++ -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "compat.h"
+#include "vserver.h"
+#include "internal.h"
+#include "src/util.h"
+
+#include <stdlib.h>
+#include <unistd.h>
+
+int main(int argc, char *argv[])
+{
+  char         buf[sizeof(int)*3+2];
+  xid_t                ctx;
+  
+  if (argc==1) ctx = vc_get_task_xid(0);
+  else         ctx = vc_get_task_xid(atoi(argv[1]));
+
+  utilvserver_fmt_int(buf, ctx);
+
+  WRITE_STR(1, buf);
+  WRITE_MSG(1, "\n");
+
+  return 0;
+}
diff --git a/tests/getinitpid.c b/tests/getinitpid.c
new file mode 100644 (file)
index 0000000..8133001
--- /dev/null
@@ -0,0 +1,57 @@
+// $Id: getinitpid.c,v 1.3 2004/01/21 19:06:14 ensc Exp $    --*- c++ -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "compat.h"
+#include "vserver.h"
+#include "internal.h"
+#include "src/util.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+int main(int argc, char *argv[])
+{
+  char                 buf[sizeof(int)*3+2];
+  xid_t                        xid;
+  struct vc_vx_info    info;
+  
+  if (argc==1) xid = vc_get_task_xid(0);
+  else         xid = vc_get_task_xid(atoi(argv[1]));
+
+  if (xid==VC_NOCTX) {
+    perror("vc_get_task_xid()");
+    return EXIT_FAILURE;
+  }
+
+  if (vc_get_vx_info(xid, &info)==-1) {
+    perror("vc_get_vx_info()");
+    return EXIT_FAILURE;
+  }
+
+  utilvserver_fmt_int(buf, info.initpid);
+
+  WRITE_STR(1, buf);
+  WRITE_MSG(1, "\n");
+
+  return 0;
+}
diff --git a/tests/testipc.c b/tests/testipc.c
new file mode 100644 (file)
index 0000000..1d9a28b
--- /dev/null
@@ -0,0 +1,129 @@
+// $Id: testipc.c,v 1.2 2004/01/13 14:56:26 ensc Exp $
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+// based on tests/testipc.cc by Jacques Gelinas
+//  
+// 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, 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.
+
+/*
+       Test to see isolation of the various IPC resources
+       between security context
+*/
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <sys/ipc.h>
+#include <sys/shm.h>
+#include <sys/sem.h>
+
+int main (int argc, char *argv[])
+{
+       int ret = -1;
+       if (argc < 2){
+               fprintf (stderr,
+                       "testipc createshm\n"
+                       );
+       }else if(strcmp(argv[1],"createshm")==0){
+               int id = shmget (1,1024,IPC_CREAT|0666);
+               if (id == -1){
+                       fprintf (stderr,"shmget failed (%s)\n",strerror(errno));
+               }else{
+                       void *pt = shmat (id,NULL,0);
+                       printf ("shmget id %d\n",id);
+                       if (pt == NULL){
+                               fprintf (stderr,"can't shmat to id %d (%s)\n",id,strerror(errno));
+                       }else{
+                               char tmp[100];
+                               int  ok;
+                               strcpy ((char*)pt,"original string");
+
+                               printf ("Letting a sub-program attach to this memory\n");
+                               sprintf (tmp,"./testipc accessshm %d",id);
+                               ok = system (tmp);
+                               printf ("\tSub-program returned %d\n",ok);
+
+                               printf ("\tThe segment now hold :%s:\n",(char*)pt);
+                               shmdt (pt);
+
+                               printf ("A sub-program in another context can't attach\n");
+                               sprintf (tmp,"/usr/sbin/chcontext ./testipc accessshm %d",id);
+                               ok = system (tmp);
+                               printf ("\tSub-program returned %d\n",ok);
+
+                               printf ("Executing a sub-shell\n");
+                               system ("/bin/sh");
+                       }
+                       printf ("Delete the share memory segment\n");
+                       if (shmctl (id,IPC_RMID,NULL)==-1){
+                               fprintf (stderr,"shmctl failed (%s)\n",strerror(errno));
+                       }else{
+                               ret = 0;
+                       }
+               }
+       }else if(strcmp(argv[1],"accessshm")==0){
+               int id = atoi(argv[2]);
+               void *pt = shmat (id,NULL,0);
+               if (pt == (void*)-1){
+                       fprintf (stderr,"can't shmat to id %d (%s)\n",id,strerror(errno));
+               }else{
+                       printf ("\tWriting hello in share memory\n");
+                       strcpy ((char*)pt,"hello");
+                       ret = 0;
+               }
+       }else if(strcmp(argv[1],"createsem")==0){
+               int id = semget (1,1,IPC_CREAT|0666);
+               if (id == -1){
+                       fprintf (stderr,"semget failed (%s)\n",strerror(errno));
+               }else{
+                       char tmp[100];
+                       int  ok;
+                       printf ("semget id %d\n",id);
+
+                       printf ("Letting a sub-program play with this semaphore\n");
+                       sprintf (tmp,"./testipc accesssem %d",id);
+                       ok = system (tmp);
+                       printf ("\tSub-program returned %d\n",ok);
+
+                       printf ("A sub-program in another context can't use the semaphore\n");
+                       sprintf (tmp,"/usr/sbin/chcontext ./testipc accesssem %d",id);
+                       ok = system (tmp);
+                       printf ("\tSub-program returned %d\n",ok);
+
+                       printf ("Executing a sub-shell\n");
+                       system ("/bin/sh");
+
+                       printf ("Delete the semaphore\n");
+                       if (semctl (id,0,IPC_RMID,NULL)==-1){
+                               fprintf (stderr,"semctl failed (%s)\n",strerror(errno));
+                       }else{
+                               ret = 0;
+                       }
+               }
+       }else if(strcmp(argv[1],"accesssem")==0){
+               int id = atoi(argv[2]);
+               struct sembuf ops[]={
+                       {0,0,0}
+               };
+               if (semop (id,ops,1) == -1){
+                       fprintf (stderr,"can't semop with id %d (%s)\n",id,strerror(errno));
+               }else{
+                       ret = 0;
+               }
+       }
+       return ret;
+}
+               
+
diff --git a/tests/testlimit.c b/tests/testlimit.c
new file mode 100644 (file)
index 0000000..53cf205
--- /dev/null
@@ -0,0 +1,53 @@
+// $Id: testlimit.c,v 1.3 2004/01/13 14:56:26 ensc Exp $
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+// based on tests/testlimit.cc by Jacques Gelinas
+//  
+// 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, 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.
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/wait.h>
+#include <string.h>
+#include <errno.h>
+#include <unistd.h>
+
+int main (int argc, char *argv[])
+{
+       if (argc != 3){
+               fprintf (stderr,"testlimit nbprocess malloc_size\n");
+       }else{
+               int nbproc = atoi(argv[1]);
+               int size   = atoi(argv[2]);
+               int i;
+               int status;
+               for (i=0; i<nbproc; i++){
+                       if (fork()==0){
+                               void *pt = malloc(size);
+                               if (pt == NULL){
+                                       fprintf (stderr,"Child %d: can't malloc (%s)\n"
+                                               ,i,strerror(errno));
+                               }else{
+                                       memset (pt,1,size);
+                               }
+                               sleep (100);
+                               _exit (0);
+                       }
+               }
+               while (wait(&status)!=-1);
+       }
+       return 0;
+}
+
diff --git a/tests/testopenf.c b/tests/testopenf.c
new file mode 100644 (file)
index 0000000..37f4168
--- /dev/null
@@ -0,0 +1,55 @@
+// $Id: testopenf.c,v 1.3 2004/01/13 14:56:26 ensc Exp $
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+// based on tests/testopenf.cc by Jacques Gelinas
+//  
+// 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, 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.
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/wait.h>
+#include <string.h>
+#include <errno.h>
+#include <unistd.h>
+
+int main (int argc, char *argv[])
+{
+       if (argc != 3){
+               fprintf (stderr,"testlimit nbprocess nbopen\n");
+       }else{
+               int nbproc = atoi(argv[1]);
+               int nbopen = atoi(argv[2]);
+               int i;
+               int status;
+               for (i=0; i<nbproc; i++){
+                       if (fork()==0){
+                               int j;
+                               for (j=0; j<nbopen; j++){
+                                       FILE *fin = fopen ("/proc/self/status","r");
+                                       if (fin == NULL){
+                                               fprintf (stderr,"Can't open %d (%s)\n",errno,strerror(errno));
+                                               break;
+                                       }
+                               }
+                               printf ("%d open files, sleeping\n",j);
+                               sleep (100);
+                               _exit (0);
+                       }
+               }
+               while (wait(&status)!=-1);
+       }
+       return 0;
+}
+
diff --git a/tests/vserver-info.c b/tests/vserver-info.c
new file mode 100644 (file)
index 0000000..126284d
--- /dev/null
@@ -0,0 +1,74 @@
+// $Id: vserver-info.c,v 1.3 2004/01/17 05:25:04 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver.h"
+
+#include "src/util.h"
+#include <stdlib.h>
+
+static void
+checkArgs(int argc, char *argv[])
+{
+  if (argc==2) {
+    if (strcmp(argv[1], "--help")==0) {
+      WRITE_MSG(1, "Usage: vserver-info <vserver>\n");
+      exit(0);
+    }
+    if (strcmp(argv[1], "--version")==0) {
+      WRITE_MSG(1, "vserver-info " VERSION "\n");
+      exit(0);
+    }
+  }
+  else {
+    WRITE_MSG(2, "No vserver specified; try '--help' for more inforamtion\n");
+    exit(1);
+  }
+}
+
+int
+main(int argc, char *argv[])
+{
+  vcCfgStyle   style = (checkArgs(argc, argv), vc_getVserverCfgStyle(argv[1]));
+  char const * name  = vc_getVserverName(argv[1], style);
+  char const * vdir  = vc_getVserverVdir(argv[1], style, true);
+
+  WRITE_MSG(2, "Style: ");
+  switch (style) {
+    case vcCFG_NONE            :  WRITE_MSG(2, "CFG_NONE");   break;
+    case vcCFG_AUTO            :  WRITE_MSG(2, "CFG_AUTO");   break;
+    case vcCFG_LEGACY          :  WRITE_MSG(2, "CFG_LEGACY"); break;
+    case vcCFG_RECENT_FULL     :  WRITE_MSG(2, "CFG_RECENT_FULL");  break;
+    case vcCFG_RECENT_SHORT    :  WRITE_MSG(2, "CFG_RECENT_SHORT"); break;
+    default                    :  WRITE_MSG(2, "???"); break;
+  }
+
+  WRITE_MSG(2, "\nName:  ");
+  if (name==0) WRITE_MSG(2, "<null>");
+  else         WRITE_STR(2, name);
+
+  WRITE_MSG(2, "\nVdir:  ");
+  if (vdir==0) WRITE_MSG(2, "<null>");
+  else         WRITE_STR(2, vdir);
+
+  WRITE_MSG(2, "\n");
+  return EXIT_SUCCESS;
+}
index dfb7941..881c6ec 100644 (file)
@@ -1,32 +1,96 @@
-%define __chattr       /usr/bin/chattr
+# $Id: util-vserver.spec.in,v 1.49 2005/07/15 19:06:58 ensc Exp $
+
+## This package understands the following switches:
+## --without dietlibc        ...   disable usage of dietlibc
+## --without xalan           ...   do not require/use the xalan xslt processor
+
+%global confdir                %_sysconfdir/vservers
+%global confdefaultdir %confdir/.defaults
+%global pkglibdir      %_libdir/%name
+%global __chattr       /usr/bin/chattr
+%global chkconfig      /sbin/chkconfig
+
+%global _localstatedir %_var
+
+
+%{!?release_func:%global release_func() %1%{?dist}}
 
 Summary:       Linux virtual server utilities
 Name:          util-vserver
-Version:       0.30
-Release:       0
-Epoch:         0
-Copyright:     GPL
+Version:       0.30.208
+Release:       %release_func 0
+License:       GPL
 Group:         System Environment/Base
 URL:           http://savannah.nongnu.org/projects/util-vserver/
 Source0:       http://savannah.nongnu.org/download/util-vserver/stable.pkg/%version/%name-%version.tar.bz2
-Provides:      %name-devel = %epoch:%version-%release
 BuildRoot:     %_tmppath/%name-%version-%release-root
-Provides:      vserver = %epoch:%version-%release
-Conflicts:     vserver < %epoch:%version-%release
-Conflicts:     vserver > %epoch:%version-%release
-BuildRequires: e2fsprogs-devel
-Requires(post):        %__chattr
-
-%package linuxconf
-Summary:       Linuxconf administration modules for vservers
-Group:         Applications/System
-Requires:      %name = %epoch:%version-%release
-Provides:      vserver-admin = %epoch:%version-%release
-Conflicts:     vserver-admin < %epoch:%version-%release
-Conflicts:     vserver-admin > %epoch:%version-%release
+Requires:      init(%name)
+Requires:      %name-core = %version-%release
+Requires:      %name-lib  = %version-%release
+Requires:      diffutils mktemp sed
+Provides:      vserver = %version-%release
+Obsoletes:     vserver < %version
+BuildRequires: mount vconfig gawk iproute iptables
+BuildRequires: gcc-c++ wget which diffutils
+BuildRequires: e2fsprogs-devel beecrypt-devel
+BuildRequires: doxygen tetex-latex
+Requires(post):                %__chattr
+Requires(pre):         %pkglibdir
+Requires(postun):      %pkglibdir
+%{!?_without_dietlibc:BuildRequires:   dietlibc >= 0:0.25}
+%{!?_without_xalan:BuildRequires:      xalan-j}
+
+%package lib
+Summary:               Dynamic libraries for util-vserver
+Group:                 System Environment/Libraries
+
+%package core
+Summary:               The core-utilities for util-vserver
+Group:                 Applications/System
+Requires:              util-linux
+
+%package build
+Summary:               Tools which can be used to build vservers
+Group:                 Applications/System
+Requires:              rpm wget binutils tar e2fsprogs
+Requires:              %name = %version-%release
+Requires(pre):         %confdir
+Requires(postun):      %confdir
+
+%ifarch %ix86
+Requires:              apt
+%endif
+
+%package sysv
+Summary:               SysV-initscripts for vserver
+Group:                 System Environment/Base
+Provides:              init(%name) = sysv
+Requires:              make diffutils
+Requires:              initscripts
+Requires:              %name = %version-%release
+Requires(post):                %chkconfig
+Requires(preun):       %chkconfig
+Requires(pre):         %_initrddir %pkglibdir
+requires(postun):      %_initrddir %pkglibdir
+
+%package legacy
+Summary:               Legacy utilities for util-vserver
+Group:                 Applications/System
+Requires:              %name = %version-%release
+Requires(post):                %chkconfig
+Requires(preun):       %chkconfig
+Requires(pre):         %_initrddir %pkglibdir
+requires(postun):      %_initrddir %pkglibdir
+
+%package devel
+Summary:               Header-files and libraries needed to develop vserver based applications
+Group:                 Development/Libraries
+Requires:              pkgconfig
+Requires:              %name-lib = %version-%release
+
 
 %description
-This package provides the components and a framework to setup virtual
+util-vserver provides the components and a framework to setup virtual
 servers.  A virtual server runs inside a linux server. It is nevertheless
 highly independent. As such, you can run various services with normal
 configuration. The various vservers can't interact with each other and
@@ -35,10 +99,67 @@ can't interact with services in the main server.
 This requires a special kernel supporting the new new_s_context and
 set_ipv4root system call.
 
+%description lib
+util-vserver provides the components and a framework to setup virtual
+servers.  A virtual server runs inside a linux server. It is nevertheless
+highly independent. As such, you can run various services with normal
+configuration. The various vservers can't interact with each other and
+can't interact with services in the main server.
+
+This package contains the shared libraries needed by all other
+'util-vserver' subpackages.
+
+%description core
+util-vserver provides the components and a framework to setup virtual
+servers.  A virtual server runs inside a linux server. It is nevertheless
+highly independent. As such, you can run various services with normal
+configuration. The various vservers can't interact with each other and
+can't interact with services in the main server.
+
+This package contains utilities which are required to communicate with
+the Linux-Vserver enabled kernel.
+
+
+%description build
+util-vserver provides the components and a framework to setup virtual
+servers.  A virtual server runs inside a linux server. It is nevertheless
+highly independent. As such, you can run various services with normal
+configuration. The various vservers can't interact with each other and
+can't interact with services in the main server.
+
+This package contains utilities which assist in building Vservers.
 
-%description linuxconf
-This package provides the components to setup virtual servers with
-linuxconf.
+%description sysv
+util-vserver provides the components and a framework to setup virtual
+servers.  A virtual server runs inside a linux server. It is nevertheless
+highly independent. As such, you can run various services with normal
+configuration. The various vservers can't interact with each other and
+can't interact with services in the main server.
+
+This package contains the SysV initscripts which start and stop
+VServers and related tools.
+
+
+%description legacy
+util-vserver provides the components and a framework to setup virtual
+servers.  A virtual server runs inside a linux server. It is nevertheless
+highly independent. As such, you can run various services with normal
+configuration. The various vservers can't interact with each other and
+can't interact with services in the main server.
+
+This package contains the tools which are needed to work with VServers
+having an old-style configuration.
+
+
+%description devel
+util-vserver provides the components and a framework to setup virtual
+servers.  A virtual server runs inside a linux server. It is nevertheless
+highly independent. As such, you can run various services with normal
+configuration. The various vservers can't interact with each other and
+can't interact with services in the main server.
+
+This package contains header files and libraries which are needed to
+develop VServer related applications.
 
 
 %prep
@@ -46,77 +167,207 @@ linuxconf.
 
 
 %build
-%configure --enable-linuxconf
-%__make %{?_smp_mflags}
+%configure --with-initrddir=%_initrddir --enable-release \
+           %{?_without_dietlibc:--disable-dietlibc}
+
+%__make %{?_smp_mflags} all
+%__make %{?_smp_mflags} doc
 
 
 %install
 rm -rf $RPM_BUILD_ROOT
-%__make DESTDIR=$RPM_BUILD_ROOT install
+%__make DESTDIR="$RPM_BUILD_ROOT" install install-distribution
 
-mkdir -p $RPM_BUILD_ROOT/vservers
-test "%_initrddir" = %_sysconfdir/init.d || {
-       mkdir -p ${RPM_BUILD_ROOT}%_initrddir
-       mv ${RPM_BUILD_ROOT}%_sysconfdir/init.d/* ${RPM_BUILD_ROOT}%_initrddir/
-}
+rm -f $RPM_BUILD_ROOT/%_libdir/*.la
+
+MANIFEST_CONFIG='%config' \
+MANIFEST_CONFIG_NOREPLACE='%config(noreplace)' \
+contrib/make-manifest %name $RPM_BUILD_ROOT contrib/manifest.dat
+
+
+%check || :
+%__make check
 
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
 
-%define v_services     httpd named portmap sendmail smb sshd xinetd
 %post
-/sbin/chkconfig --add vservers
-/sbin/chkconfig --add rebootmgr
+test -d /vservers      || mkdir -m0000 /vservers
+test -d /vservers/.pkg || mkdir -m0755 /vservers/.pkg
+
+f="%confdefaultdir/vdirbase"; test -L "$f" -o -e "$f" || ln -s /vservers                        "$f"
+f="%confdefaultdir/run.rev";  test -L "$f" -o -e "$f" || ln -s %_localstatedir/run/vservers.rev "$f"
+
+%_sbindir/setattr --barrier /vservers || :
+
+
+%post   lib -p /sbin/ldconfig
+%postun lib -p /sbin/ldconfig
+
+
+%post sysv
+%chkconfig --add vservers-default
+%chkconfig --add vprocunhide
+
+
+
+%preun sysv
+test "$1" != 0 || %_initrddir/vprocunhide stop &>/dev/null || :
+
+test "$1" != 0 || %chkconfig --del vprocunhide
+test "$1" != 0 || %chkconfig --del vservers-default
+
+
+%postun sysv
+test "$1" = 0  || %_initrddir/vprocunhide condrestart >/dev/null || :
+
+
+%triggerin build -- fedora-release
+function copy()
+{
+    base=$1
+    shift
+
+    for i; do
+       test -r "$i" || continue
 
+       target=%confdir/.distributions/.common/pubkeys/$base-$(basename "$i")
+       cp -a "$i" "$target"
+    done
+}
+copy fedora /usr/share/doc/fedora-release-*/RPM-GPG-*
+copy fedora /etc/pki/rpm-gpg/RPM-GPG-*
+
+
+%preun build
+test "$1" != 0 || rm -f %confdir/.distributions/.common/pubkeys/fedora-*
+
+
+## Temporary workaround to remove old v_* files; it will conflict
+## somehow with the -legacy package but can be fixed by reinstalling
+## this package.
+## TODO: remove me in the final .spec file
+%define v_services     httpd named portmap sendmail smb sshd xinetd gated
+%triggerun sysv -- util-vserver-sysv < 0.30.198
 for i in %v_services; do
-       /sbin/chkconfig --add v_$i
+       %chkconfig --del v_$i || :
 done
 
-%__chattr +t /vservers || :
 
+%post legacy
+%chkconfig --add rebootmgr
+%chkconfig --add vservers-legacy
 
-%preun
-test "$1" != 0 || for i in %v_services; do
-       /sbin/chkconfig --del v_$i
+for i in %v_services; do
+       %chkconfig --add v_$i
 done
 
-test "$1" != 0 || %{_initrddir}/rebootmgr stop &>/dev/null || :
-test "$1" != 0 || /sbin/chkconfig --del rebootmgr
-test "$1" != 0 || /sbin/chkconfig --del vservers
 
+%preun legacy
+test "$1" != 0 || %_initrddir/rebootmgr   stop &>/dev/null || :
+
+test "$1" != 0 || for i in %v_services; do
+       %chkconfig --del v_$i
+done
+
+test "$1" != 0 || %chkconfig --del rebootmgr
+test "$1" != 0 || %chkconfig --del vservers-legacy
 
-%postun
-test "$1" = 0  || %{_initrddir}/rebootmgr condrestart >/dev/null || :
+%postun legacy
+test "$1" = 0  || %_initrddir/rebootmgr   condrestart >/dev/null || :
 
 
-%files
-%defattr(-,root,root)
+%files -f %name-base.list
+%defattr(-,root,root,-)
 %doc AUTHORS COPYING ChangeLog NEWS README THANKS
-%_sbindir/*
-%_libdir/%name
-%_includedir/vserver.h
-%_libdir/libvserver.a
-%_mandir/man8/*
-%config %_initrddir/*
-%config(noreplace) /etc/vservers.conf
-%attr(0,root,root) %dir /vservers
+%doc doc/*.html doc/*.css
+/sbin/vshelper
+%dir %confdir
+%dir %confdefaultdir
+%dir %confdefaultdir/apps
+%dir %confdefaultdir/files
+%dir %pkglibdir/defaults
+%ghost %confdefaultdir/vdirbase
+%ghost %confdefaultdir/run.rev
 
-%exclude %_sbindir/newvserver
-%exclude %_mandir/man8/newvserver*
+%dir %_localstatedir/run/vservers
+%dir %_localstatedir/run/vservers.rev
+%dir %_localstatedir/run/vshelper
 
 
-%files linuxconf
-%defattr(-,root,root)
-%config(noreplace) /etc/vservers/newvserver.defaults
-%_sbindir/newvserver
-%_mandir/man8/newvserver*
+%files lib -f %name-lib.list
+%files sysv -f %name-sysv.list
 
 
-%changelog
-* Thu Mar 18 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.29.3-0
-- removed '%%doc doc/FAQ.txt' since file does not exist anymore
+%files core -f %name-core.list
+%defattr(-,root,root,-)
+%dir %pkglibdir
+
+
+%files build -f %name-build.list
+%defattr(-,root,root,-)
+%doc contrib/yum*.patch
+%dir %confdir/.distributions
+%dir %confdir/.distributions/*
+%dir %confdir/.distributions/*/apt
+%dir %confdir/.distributions/.common
+%dir %confdir/.distributions/.common/pubkeys
+%dir %confdefaultdir/apps/vunify
+%dir %confdefaultdir/apps/vunify/hash
+
 
-* Fri Sep 26 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.23.4-1
-- initial build.
+%files legacy -f %name-legacy.list
+%defattr(-,root,root,-)
+%dir %pkglibdir/legacy
+
+
+%files devel -f %name-devel.list
+%defattr(-,root,root,-)
+%doc lib/apidoc/latex/refman.pdf
+%doc lib/apidoc/html
+
+
+%changelog
+* Fri Jul 15 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.208-1
+- require the -lib subpackage by -devel
+- copy GPG keys from /etc/pki/rpm-gpg/
+
+* Fri Apr 15 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.206-1
+- added patches to make yum work in chroot environments
+- version 0.30.206
+
+* Thu Mar 24 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.205-0
+- added some %%descriptions
+- copy GPG keys from the system into the confdir
+- buildrequire dietlibc-0.25
+- BuildRequire beecrypt-devel
+- cleanups
+- use %%global instead of %%define
+- removed 'run.rev' as a vserver-local variable and made it a system-wide setting
+
+* Wed Jan 26 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.198-0.3
+- updated BuildRequires:
+- use 'setattr --barrier' instead of 'chattr +t' in the %%post scriptlet
+- moved the v_* initscripts to legacy
+- do not ship the /vservers directory itself; as it is immutable, the
+  extraction will fail else
+
+* Thu Sep  9 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.194-0
+- documented switches for 'rpmbuild'
+
+* Wed May 26 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.29.215-0
+- (re)added the MANIFEST_* variables which were lost some time ago;
+  this will preserve %%config files...
+
+* Mon Mar 15 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.29.202-0
+- use file-list for sysv scripts also
+
+* Sat Mar  6 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.29.198-0
+- added vprocunhide-service support
+- added doxygen support
+- updated Requires:
+
+* Wed Oct  1 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.23.5-0
+- Initial build.
index 2c9b396..79bfa62 100644 (file)
@@ -1,32 +1,96 @@
-%define __chattr       /usr/bin/chattr
+# $Id: util-vserver.spec.in,v 1.49 2005/07/15 19:06:58 ensc Exp $
+
+## This package understands the following switches:
+## --without dietlibc        ...   disable usage of dietlibc
+## --without xalan           ...   do not require/use the xalan xslt processor
+
+%global confdir                %_sysconfdir/vservers
+%global confdefaultdir %confdir/.defaults
+%global pkglibdir      %_libdir/%name
+%global __chattr       /usr/bin/chattr
+%global chkconfig      /sbin/chkconfig
+
+%global _localstatedir %_var
+
+
+%{!?release_func:%global release_func() %1%{?dist}}
 
 Summary:       Linux virtual server utilities
 Name:          @PACKAGE@
 Version:       @VERSION@
-Release:       0
-Epoch:         0
-Copyright:     GPL
+Release:       %release_func 0
+License:       GPL
 Group:         System Environment/Base
 URL:           http://savannah.nongnu.org/projects/util-vserver/
 Source0:       http://savannah.nongnu.org/download/util-vserver/stable.pkg/%version/%name-%version.tar.bz2
-Provides:      %name-devel = %epoch:%version-%release
 BuildRoot:     %_tmppath/%name-%version-%release-root
-Provides:      vserver = %epoch:%version-%release
-Conflicts:     vserver < %epoch:%version-%release
-Conflicts:     vserver > %epoch:%version-%release
-BuildRequires: e2fsprogs-devel
-Requires(post):        %__chattr
-
-%package linuxconf
-Summary:       Linuxconf administration modules for vservers
-Group:         Applications/System
-Requires:      %name = %epoch:%version-%release
-Provides:      vserver-admin = %epoch:%version-%release
-Conflicts:     vserver-admin < %epoch:%version-%release
-Conflicts:     vserver-admin > %epoch:%version-%release
+Requires:      init(%name)
+Requires:      %name-core = %version-%release
+Requires:      %name-lib  = %version-%release
+Requires:      diffutils mktemp sed
+Provides:      vserver = %version-%release
+Obsoletes:     vserver < %version
+BuildRequires: mount vconfig gawk iproute iptables
+BuildRequires: gcc-c++ wget which diffutils
+BuildRequires: e2fsprogs-devel beecrypt-devel
+BuildRequires: doxygen tetex-latex
+Requires(post):                %__chattr
+Requires(pre):         %pkglibdir
+Requires(postun):      %pkglibdir
+%{!?_without_dietlibc:BuildRequires:   dietlibc >= 0:0.25}
+%{!?_without_xalan:BuildRequires:      xalan-j}
+
+%package lib
+Summary:               Dynamic libraries for util-vserver
+Group:                 System Environment/Libraries
+
+%package core
+Summary:               The core-utilities for util-vserver
+Group:                 Applications/System
+Requires:              util-linux
+
+%package build
+Summary:               Tools which can be used to build vservers
+Group:                 Applications/System
+Requires:              rpm wget binutils tar e2fsprogs
+Requires:              %name = %version-%release
+Requires(pre):         %confdir
+Requires(postun):      %confdir
+
+%ifarch %ix86
+Requires:              apt
+%endif
+
+%package sysv
+Summary:               SysV-initscripts for vserver
+Group:                 System Environment/Base
+Provides:              init(%name) = sysv
+Requires:              make diffutils
+Requires:              initscripts
+Requires:              %name = %version-%release
+Requires(post):                %chkconfig
+Requires(preun):       %chkconfig
+Requires(pre):         %_initrddir %pkglibdir
+requires(postun):      %_initrddir %pkglibdir
+
+%package legacy
+Summary:               Legacy utilities for util-vserver
+Group:                 Applications/System
+Requires:              %name = %version-%release
+Requires(post):                %chkconfig
+Requires(preun):       %chkconfig
+Requires(pre):         %_initrddir %pkglibdir
+requires(postun):      %_initrddir %pkglibdir
+
+%package devel
+Summary:               Header-files and libraries needed to develop vserver based applications
+Group:                 Development/Libraries
+Requires:              pkgconfig
+Requires:              %name-lib = %version-%release
+
 
 %description
-This package provides the components and a framework to setup virtual
+util-vserver provides the components and a framework to setup virtual
 servers.  A virtual server runs inside a linux server. It is nevertheless
 highly independent. As such, you can run various services with normal
 configuration. The various vservers can't interact with each other and
@@ -35,10 +99,67 @@ can't interact with services in the main server.
 This requires a special kernel supporting the new new_s_context and
 set_ipv4root system call.
 
+%description lib
+util-vserver provides the components and a framework to setup virtual
+servers.  A virtual server runs inside a linux server. It is nevertheless
+highly independent. As such, you can run various services with normal
+configuration. The various vservers can't interact with each other and
+can't interact with services in the main server.
+
+This package contains the shared libraries needed by all other
+'util-vserver' subpackages.
+
+%description core
+util-vserver provides the components and a framework to setup virtual
+servers.  A virtual server runs inside a linux server. It is nevertheless
+highly independent. As such, you can run various services with normal
+configuration. The various vservers can't interact with each other and
+can't interact with services in the main server.
+
+This package contains utilities which are required to communicate with
+the Linux-Vserver enabled kernel.
+
+
+%description build
+util-vserver provides the components and a framework to setup virtual
+servers.  A virtual server runs inside a linux server. It is nevertheless
+highly independent. As such, you can run various services with normal
+configuration. The various vservers can't interact with each other and
+can't interact with services in the main server.
+
+This package contains utilities which assist in building Vservers.
 
-%description linuxconf
-This package provides the components to setup virtual servers with
-linuxconf.
+%description sysv
+util-vserver provides the components and a framework to setup virtual
+servers.  A virtual server runs inside a linux server. It is nevertheless
+highly independent. As such, you can run various services with normal
+configuration. The various vservers can't interact with each other and
+can't interact with services in the main server.
+
+This package contains the SysV initscripts which start and stop
+VServers and related tools.
+
+
+%description legacy
+util-vserver provides the components and a framework to setup virtual
+servers.  A virtual server runs inside a linux server. It is nevertheless
+highly independent. As such, you can run various services with normal
+configuration. The various vservers can't interact with each other and
+can't interact with services in the main server.
+
+This package contains the tools which are needed to work with VServers
+having an old-style configuration.
+
+
+%description devel
+util-vserver provides the components and a framework to setup virtual
+servers.  A virtual server runs inside a linux server. It is nevertheless
+highly independent. As such, you can run various services with normal
+configuration. The various vservers can't interact with each other and
+can't interact with services in the main server.
+
+This package contains header files and libraries which are needed to
+develop VServer related applications.
 
 
 %prep
@@ -46,77 +167,207 @@ linuxconf.
 
 
 %build
-%configure --enable-linuxconf
-%__make %{?_smp_mflags}
+%configure --with-initrddir=%_initrddir --enable-release \
+           %{?_without_dietlibc:--disable-dietlibc}
+
+%__make %{?_smp_mflags} all
+%__make %{?_smp_mflags} doc
 
 
 %install
 rm -rf $RPM_BUILD_ROOT
-%__make DESTDIR=$RPM_BUILD_ROOT install
+%__make DESTDIR="$RPM_BUILD_ROOT" install install-distribution
 
-mkdir -p $RPM_BUILD_ROOT/vservers
-test "%_initrddir" = %_sysconfdir/init.d || {
-       mkdir -p ${RPM_BUILD_ROOT}%_initrddir
-       mv ${RPM_BUILD_ROOT}%_sysconfdir/init.d/* ${RPM_BUILD_ROOT}%_initrddir/
-}
+rm -f $RPM_BUILD_ROOT/%_libdir/*.la
+
+MANIFEST_CONFIG='%config' \
+MANIFEST_CONFIG_NOREPLACE='%config(noreplace)' \
+contrib/make-manifest %name $RPM_BUILD_ROOT contrib/manifest.dat
+
+
+%check || :
+%__make check
 
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
 
-%define v_services     httpd named portmap sendmail smb sshd xinetd
 %post
-/sbin/chkconfig --add vservers
-/sbin/chkconfig --add rebootmgr
+test -d /vservers      || mkdir -m0000 /vservers
+test -d /vservers/.pkg || mkdir -m0755 /vservers/.pkg
+
+f="%confdefaultdir/vdirbase"; test -L "$f" -o -e "$f" || ln -s /vservers                        "$f"
+f="%confdefaultdir/run.rev";  test -L "$f" -o -e "$f" || ln -s %_localstatedir/run/vservers.rev "$f"
+
+%_sbindir/setattr --barrier /vservers || :
+
+
+%post   lib -p /sbin/ldconfig
+%postun lib -p /sbin/ldconfig
+
+
+%post sysv
+%chkconfig --add vservers-default
+%chkconfig --add vprocunhide
+
+
+
+%preun sysv
+test "$1" != 0 || %_initrddir/vprocunhide stop &>/dev/null || :
+
+test "$1" != 0 || %chkconfig --del vprocunhide
+test "$1" != 0 || %chkconfig --del vservers-default
+
+
+%postun sysv
+test "$1" = 0  || %_initrddir/vprocunhide condrestart >/dev/null || :
+
+
+%triggerin build -- fedora-release
+function copy()
+{
+    base=$1
+    shift
+
+    for i; do
+       test -r "$i" || continue
 
+       target=%confdir/.distributions/.common/pubkeys/$base-$(basename "$i")
+       cp -a "$i" "$target"
+    done
+}
+copy fedora /usr/share/doc/fedora-release-*/RPM-GPG-*
+copy fedora /etc/pki/rpm-gpg/RPM-GPG-*
+
+
+%preun build
+test "$1" != 0 || rm -f %confdir/.distributions/.common/pubkeys/fedora-*
+
+
+## Temporary workaround to remove old v_* files; it will conflict
+## somehow with the -legacy package but can be fixed by reinstalling
+## this package.
+## TODO: remove me in the final .spec file
+%define v_services     httpd named portmap sendmail smb sshd xinetd gated
+%triggerun sysv -- util-vserver-sysv < 0.30.198
 for i in %v_services; do
-       /sbin/chkconfig --add v_$i
+       %chkconfig --del v_$i || :
 done
 
-%__chattr +t /vservers || :
 
+%post legacy
+%chkconfig --add rebootmgr
+%chkconfig --add vservers-legacy
 
-%preun
-test "$1" != 0 || for i in %v_services; do
-       /sbin/chkconfig --del v_$i
+for i in %v_services; do
+       %chkconfig --add v_$i
 done
 
-test "$1" != 0 || %{_initrddir}/rebootmgr stop &>/dev/null || :
-test "$1" != 0 || /sbin/chkconfig --del rebootmgr
-test "$1" != 0 || /sbin/chkconfig --del vservers
 
+%preun legacy
+test "$1" != 0 || %_initrddir/rebootmgr   stop &>/dev/null || :
+
+test "$1" != 0 || for i in %v_services; do
+       %chkconfig --del v_$i
+done
+
+test "$1" != 0 || %chkconfig --del rebootmgr
+test "$1" != 0 || %chkconfig --del vservers-legacy
 
-%postun
-test "$1" = 0  || %{_initrddir}/rebootmgr condrestart >/dev/null || :
+%postun legacy
+test "$1" = 0  || %_initrddir/rebootmgr   condrestart >/dev/null || :
 
 
-%files
-%defattr(-,root,root)
+%files -f %name-base.list
+%defattr(-,root,root,-)
 %doc AUTHORS COPYING ChangeLog NEWS README THANKS
-%_sbindir/*
-%_libdir/%name
-%_includedir/vserver.h
-%_libdir/libvserver.a
-%_mandir/man8/*
-%config %_initrddir/*
-%config(noreplace) /etc/vservers.conf
-%attr(0,root,root) %dir /vservers
+%doc doc/*.html doc/*.css
+/sbin/vshelper
+%dir %confdir
+%dir %confdefaultdir
+%dir %confdefaultdir/apps
+%dir %confdefaultdir/files
+%dir %pkglibdir/defaults
+%ghost %confdefaultdir/vdirbase
+%ghost %confdefaultdir/run.rev
 
-%exclude %_sbindir/newvserver
-%exclude %_mandir/man8/newvserver*
+%dir %_localstatedir/run/vservers
+%dir %_localstatedir/run/vservers.rev
+%dir %_localstatedir/run/vshelper
 
 
-%files linuxconf
-%defattr(-,root,root)
-%config(noreplace) /etc/vservers/newvserver.defaults
-%_sbindir/newvserver
-%_mandir/man8/newvserver*
+%files lib -f %name-lib.list
+%files sysv -f %name-sysv.list
 
 
-%changelog
-* Thu Mar 18 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.29.3-0
-- removed '%%doc doc/FAQ.txt' since file does not exist anymore
+%files core -f %name-core.list
+%defattr(-,root,root,-)
+%dir %pkglibdir
+
+
+%files build -f %name-build.list
+%defattr(-,root,root,-)
+%doc contrib/yum*.patch
+%dir %confdir/.distributions
+%dir %confdir/.distributions/*
+%dir %confdir/.distributions/*/apt
+%dir %confdir/.distributions/.common
+%dir %confdir/.distributions/.common/pubkeys
+%dir %confdefaultdir/apps/vunify
+%dir %confdefaultdir/apps/vunify/hash
+
 
-* Fri Sep 26 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.23.4-1
-- initial build.
+%files legacy -f %name-legacy.list
+%defattr(-,root,root,-)
+%dir %pkglibdir/legacy
+
+
+%files devel -f %name-devel.list
+%defattr(-,root,root,-)
+%doc lib/apidoc/latex/refman.pdf
+%doc lib/apidoc/html
+
+
+%changelog
+* Fri Jul 15 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.208-1
+- require the -lib subpackage by -devel
+- copy GPG keys from /etc/pki/rpm-gpg/
+
+* Fri Apr 15 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.206-1
+- added patches to make yum work in chroot environments
+- version 0.30.206
+
+* Thu Mar 24 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.205-0
+- added some %%descriptions
+- copy GPG keys from the system into the confdir
+- buildrequire dietlibc-0.25
+- BuildRequire beecrypt-devel
+- cleanups
+- use %%global instead of %%define
+- removed 'run.rev' as a vserver-local variable and made it a system-wide setting
+
+* Wed Jan 26 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.198-0.3
+- updated BuildRequires:
+- use 'setattr --barrier' instead of 'chattr +t' in the %%post scriptlet
+- moved the v_* initscripts to legacy
+- do not ship the /vservers directory itself; as it is immutable, the
+  extraction will fail else
+
+* Thu Sep  9 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.194-0
+- documented switches for 'rpmbuild'
+
+* Wed May 26 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.29.215-0
+- (re)added the MANIFEST_* variables which were lost some time ago;
+  this will preserve %%config files...
+
+* Mon Mar 15 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.29.202-0
+- use file-list for sysv scripts also
+
+* Sat Mar  6 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.29.198-0
+- added vprocunhide-service support
+- added doxygen support
+- updated Requires:
+
+* Wed Oct  1 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.23.5-0
+- Initial build.
diff --git a/vserver-start/Makefile-files b/vserver-start/Makefile-files
new file mode 100644 (file)
index 0000000..96ccfb4
--- /dev/null
@@ -0,0 +1,53 @@
+## $Id: Makefile-files,v 1.7 2005/03/18 00:33:20 ensc Exp $    --*- makefile -*--
+
+## Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+##  
+## 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; version 2 of the License.
+##  
+## 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.
+
+
+if ENSC_HAVE_C99_COMPILER
+DIETPROGS +=           vserver-start/vserver.start.bin
+pkglib_PROGRAMS +=     vserver-start/vserver.start.bin
+endif
+
+## HACK: for now...
+AM_INSTALLCHECK_STD_OPTIONS_EXEMPT +=          vserver-start/vserver.start.bin
+
+vserver_start_vserver_start_bin_SOURCES = \
+                                               vserver-start/main.c \
+                                               vserver-start/mount.c \
+                                               vserver-start/mount.h \
+                                               vserver-start/defaulttty.c \
+                                               vserver-start/scriptlets.c \
+                                               vserver-start/undo.c \
+                                               vserver-start/undo.h \
+                                               vserver-start/vshelper.c \
+                                               vserver-start/vshelper.h \
+                                               vserver-start/interface.c \
+                                               vserver-start/interface.h \
+                                               vserver-start/interface-add.c \
+                                               vserver-start/interface-read.c \
+                                               vserver-start/interface-free.hc \
+                                               vserver-start/interface-init.hc \
+                                               vserver-start/interface-remove.c \
+                                               vserver-start/interface-print.c \
+                                               vserver-start/configuration.c \
+                                               vserver-start/configuration-init.c \
+                                               vserver-start/configuration.h \
+                                               vserver-start/vserver-start.h
+
+vserver_start_vserver_start_bin_LDADD =                $(VSERVER_LDADDS) \
+                                               $(LIBINTERNAL) \
+                                               $(LIBENSCVECTOR)
+vserver_start_vserver_start_bin_LDFLAGS =      $(VSERVER_LDFLGS)
diff --git a/vserver-start/configuration-init.c b/vserver-start/configuration-init.c
new file mode 100644 (file)
index 0000000..bf86854
--- /dev/null
@@ -0,0 +1,46 @@
+// $Id: configuration-init.c,v 1.3 2004/10/19 21:11:10 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "configuration.h"
+#include "interface.h"
+void
+Cfg_init(struct Configuration *cfg)
+{
+  struct vc_ctx_caps const     caps = {
+    .bcaps = 0,
+    .bmask = 0,
+    .ccaps = 0,
+    .cmask = 0
+  };
+
+  struct vc_ctx_flags const    flags = {
+    .flagword = 0,
+    .mask     = 0
+  };
+  
+  Vector_init(&cfg->interfaces, sizeof(struct Interface));
+  cfg->vdir      = 0;
+  cfg->xid       = VC_DYNAMIC_XID;
+  cfg->broadcast = 0;
+  cfg->ctx_caps  = caps;
+  cfg->ctx_flags = flags;
+}
diff --git a/vserver-start/configuration.c b/vserver-start/configuration.c
new file mode 100644 (file)
index 0000000..b09c31c
--- /dev/null
@@ -0,0 +1,164 @@
+// $Id: configuration.c,v 1.3 2004/10/19 21:11:10 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "configuration.h"
+#include "interface.h"
+
+#include <lib_internal/util.h>
+#include <lib_internal/filecfg.h>
+#include <ensc_vector/vector.h>
+#include <lib/internal.h>
+
+#include <dirent.h>
+#include <string.h>
+
+static inline bool
+getSingleInterface(struct Interface *res,
+                  struct Interface const *tmpl,
+                  PathInfo const *basedir, char const *d_entry)
+{
+  PathInfo     ent  = { .d = d_entry, .l = strlen(d_entry) };
+  PathInfo     path = *basedir;
+  char         path_buf[ENSC_PI_APPSZ(path, ent)];
+
+  PathInfo_append(&path, &ent, path_buf);
+  if (!utilvserver_isDirectory(path.d, true))
+    return true;       // skip non-directories
+
+  return Iface_read(res, &path, tmpl);
+}
+
+static inline bool
+getInterfaces(struct Configuration *cfg)
+{
+  ENSC_PI_DECLARE(iface_subdir, "interfaces");
+  PathInfo             ifacepath = cfg->cfgdir;
+  char                 path_buf[ENSC_PI_APPSZ(ifacepath, iface_subdir)];
+  struct Interface     iface_default;
+  DIR                  *dir;
+  bool                 rc = true;
+
+  PathInfo_append(&ifacepath, &iface_subdir, path_buf);
+
+  if (!utilvserver_isDirectory(ifacepath.d, true))
+    return true;       // no interface configuration -> ok
+  
+  Iface_init(&iface_default);
+  if (!Iface_read(&iface_default, &ifacepath, 0))
+    return false;
+
+    // iterate through dir-entries...
+  dir = opendir(ifacepath.d);
+  while (dir!=0) {
+    struct dirent      *ent = readdir(dir);
+    struct Interface   iface;
+    
+    if (ent==0)                 break;
+    if (isDotfile(ent->d_name)) continue;      // skip dot-files
+
+    Iface_init(&iface);
+    if (!getSingleInterface(&iface, &iface_default, &ifacepath, ent->d_name))
+      rc = false;
+    else if (iface.addr.ipv4.ip!=0) {  // HACK: non-directory entries would return true also
+      struct Interface *new_iface = Vector_pushback(&cfg->interfaces);
+      *new_iface = iface;
+    }
+  }
+
+  if (dir!=0)
+    closedir(dir);
+
+  return rc;
+}
+
+static bool
+initVdir(char const **vdir, PathInfo const *cfgdir)
+{
+  *vdir = vc_getVserverVdir(cfgdir->d, vcCFG_RECENT_FULL, true);
+  if (*vdir==0) {
+    WRITE_MSG(2, "Can not find root-directory of the vserver\n");
+    return false;
+  }
+
+  return true;
+}
+
+static bool
+setFlag(void *flags_v, char const *str, size_t len)
+{
+  struct vc_ctx_flags  *flags = flags_v;
+  int                  rc = vc_list2cflag(str,len, 0,flags);
+
+  return rc!=-1;
+}
+
+static bool
+setCCap(void *caps_v, char const *str, size_t len)
+{
+  struct vc_ctx_caps   *caps = caps_v;
+  int                  rc = vc_list2ccap(str,len, 0,caps);
+
+  return rc!=-1;
+}
+
+static bool
+setBCap(void *caps_v, char const *str, size_t len)
+{
+  struct vc_ctx_caps   *caps = caps_v;
+  int                  rc = vc_list2bcap(str,len, 0,caps);
+
+  return rc!=-1;
+}
+
+static bool
+readSomething(void *dest, PathInfo const *cfgdir, char const *item,
+             FileCfg_MultiLineHandler handler)
+{
+  char const   *data = FileCfg_readEntryStr(cfgdir, item, true, 0);
+  bool         res   = false;
+
+  if (!data) return true;
+  if (!FileCfg_iterateOverMultiLine(data, handler, dest)) {
+    WRITE_MSG(2, "Failed to parse '");
+    WRITE_STR(2, item);
+    WRITE_MSG(2, "' configuration\n");
+    goto finish;
+  }
+
+  res = true;
+  finish:
+  free(const_cast(char *)(data));
+  return res;
+}
+
+bool
+getConfiguration(struct Configuration *cfg, PathInfo const *cfgdir)
+{
+  cfg->cfgdir = *cfgdir;
+  cfg->nice   = FileCfg_readEntryStr(cfgdir, "nice", false, 0);
+  
+  return (initVdir(&cfg->vdir, cfgdir) &&
+         readSomething(&cfg->ctx_flags, cfgdir, "flags", setFlag) &&
+         readSomething(&cfg->ctx_caps,  cfgdir, "ccapabilities", setCCap) &&
+         readSomething(&cfg->ctx_caps,  cfgdir, "bcapabilities", setBCap) &&
+         getInterfaces(cfg));
+}
diff --git a/vserver-start/configuration.h b/vserver-start/configuration.h
new file mode 100644 (file)
index 0000000..0efcc1a
--- /dev/null
@@ -0,0 +1,48 @@
+// $Id: configuration.h,v 1.3 2004/10/19 21:11:10 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_VSERVER_START_CONFIGURATION_H
+#define H_UTIL_VSERVER_VSERVER_START_CONFIGURATION_H
+
+#include <lib/vserver.h>
+#include <ensc_vector/vector.h>
+#include <lib_internal/pathinfo.h>
+
+#include <stdbool.h>
+
+typedef struct Vector  InterfaceList;
+
+struct Configuration {
+    PathInfo           cfgdir;
+    char const *       vdir;
+    xid_t              xid;
+    uint32_t           broadcast;
+    InterfaceList      interfaces;
+    char const *       nice;
+
+    struct vc_ctx_caps ctx_caps;
+    struct vc_ctx_flags        ctx_flags;
+};
+
+  //extern struct Configuration                cfg;
+
+void           Cfg_init(struct Configuration *);
+bool           getConfiguration(struct Configuration *, PathInfo const *cfgdir);
+
+
+#endif //  H_UTIL_VSERVER_VSERVER_START_CONFIGURATION_H
diff --git a/vserver-start/defaulttty.c b/vserver-start/defaulttty.c
new file mode 100644 (file)
index 0000000..8b71080
--- /dev/null
@@ -0,0 +1,80 @@
+// $Id: defaulttty.c,v 1.2 2005/01/26 15:30:40 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver-start.h"
+#include <pathconfig.h>
+
+#include <lib_internal/string.h>
+
+#include <string.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#define ENSC_WRAPPERS_UNISTD   1
+#define ENSC_WRAPPERS_FCNTL    1
+#include <wrappers.h>
+
+
+inline static bool
+checkTTY(char const /*@null@*/ *p)
+{
+  return p!=0 && access(p, R_OK|W_OK)==0;
+}
+
+void
+setDefaultTTY(PathInfo const *cfgdir, char const *dflt)
+{
+  PathInfo     subpath = ENSC_STRING_FIXED("/apps/init/tty");
+  char         buf[ENSC_PI_APPSZ(*cfgdir, subpath)];
+  char const * new_tty = 0;
+
+  do {
+    PathInfo   ttypath = *cfgdir;
+    
+    PathInfo_append(&ttypath, &subpath, buf);
+    new_tty = String_c_str(&ttypath, buf);
+    if (checkTTY(new_tty)) break;
+
+    new_tty = CONFDIR "/.defaults/apps/init/tty";
+    if (checkTTY(new_tty)) break;
+
+    new_tty = dflt;
+    if (checkTTY(new_tty)) break;
+
+    new_tty = "/dev/null";
+  } while (false);
+
+  int          fd_in  = Eopen(new_tty, O_RDONLY, 0);
+  if (fd_in!=0) {
+    Edup2(fd_in,  0);
+    Eclose(fd_in);
+  }
+  
+  int          fd_out = Eopen(new_tty, O_WRONLY, 0600);
+  if (fd_out!=1) {
+    Edup2(fd_out, 1);
+    Eclose(fd_out);
+  }
+  
+  Edup2(1, 2);
+}
diff --git a/vserver-start/interface-add.c b/vserver-start/interface-add.c
new file mode 100644 (file)
index 0000000..f76b7b0
--- /dev/null
@@ -0,0 +1,133 @@
+// $Id: interface-add.c,v 1.3 2005/03/19 02:07:40 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "interface.h"
+#include "pathconfig.h"
+
+#include <lib_internal/command.h>
+#include <lib_internal/util.h>
+#include <ensc_fmt/fmt.h>
+
+#include <netinet/in.h>
+#include <arpa/inet.h>
+
+unsigned int
+Iface_getIPv4Prefix(struct Interface const *iface)
+{
+  uint32_t     mask = iface->addr.ipv4.mask;
+  unsigned int res  = 0;
+  while (mask!=0) {
+    res += mask & 1;
+    mask >>= 1;
+  }
+
+  return res;
+}
+
+static bool
+invokeIpAddr(struct Interface const *iface)
+{
+  struct Command               cmd;
+  unsigned int                 prefix = Iface_getIPv4Prefix(iface);
+  char *                       tmp = inet_ntoa(*reinterpret_cast(struct in_addr *)(&iface->addr.ipv4.ip));
+  size_t                       l   = strlen(tmp);
+  char                         addr[l + sizeof("/") + sizeof(unsigned int)*3 + 1];
+  char *                       ptr;
+  size_t                       l1 = strlen(iface->dev);
+  size_t                       l2 = iface->name ? strlen(iface->name) : 0;
+  char                         devlabel[l1 + l2 + sizeof(":")];
+  bool                         result = true;
+
+  ptr    = Xmemcpy(addr, tmp, l);
+  *ptr++ = '/';
+  l      = utilvserver_fmt_uint(ptr, prefix);
+  ptr[l] = '\0';
+
+  Command_init(&cmd);
+
+  size_t               idx    = 6;
+  char const *         argv[] = {
+    "/bin/echo",
+    PROG_IP, "addr", "add",
+    addr,
+    "broadcast", 0,
+    0, 0,      // label <name>
+    0, 0,      // dev   <dev>
+    0
+  };
+
+  if (iface->addr.ipv4.bcast!=0)
+    argv[idx++] = inet_ntoa(*reinterpret_cast(struct in_addr *)(&iface->addr.ipv4.bcast));
+  else
+    argv[idx++] = "+";
+  
+  if (iface->name) {
+    ptr    = Xmemcpy(devlabel, iface->dev,  l1);
+    *ptr++ = ':';
+    ptr    = Xmemcpy(ptr,      iface->name, l2);
+    *ptr   = '\0';
+    
+    argv[idx++] = "label";
+    argv[idx++] = devlabel;
+  }
+
+  argv[idx++] = "dev";
+  argv[idx++] = iface->dev;  
+
+  Command_setParams(&cmd, argv);
+  if (!Command_exec(&cmd, true) ||
+      !Command_wait(&cmd, true) ||
+      cmd.rc!=0)
+    result = false;
+
+  Command_free(&cmd);
+  
+  return result;
+}
+
+static bool
+addVLAN(struct Interface const UNUSED *iface)
+{
+  abort();     // TODO: implement me
+}
+
+static bool
+addIndirect(struct Interface const UNUSED *iface)
+{
+  abort();     // TODO: implement me
+}
+
+static bool
+addIP(struct Interface const *iface)
+{
+  return invokeIpAddr(iface);
+    //invokeIpLink(iface);
+}
+
+bool
+Iface_add(struct Interface const *iface)
+{
+  if (iface->nodev)               return true;
+  if (strchr(iface->dev, '.')!=0) return addVLAN(iface);
+  if (!iface->direct)             return addIndirect(iface);
+  return addIP(iface);
+}
diff --git a/vserver-start/interface-free.hc b/vserver-start/interface-free.hc
new file mode 100644 (file)
index 0000000..318fe6d
--- /dev/null
@@ -0,0 +1,25 @@
+// $Id: interface-free.hc,v 1.1 2004/07/03 00:07:42 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+static inline UNUSED void
+Iface_free(struct Interface *iface)
+{
+  free(const_cast(char *)(iface->name));
+  free(const_cast(char *)(iface->scope));
+  free(const_cast(char *)(iface->dev));
+  free(const_cast(char *)(iface->mac));
+}
diff --git a/vserver-start/interface-init.hc b/vserver-start/interface-init.hc
new file mode 100644 (file)
index 0000000..b1bcd99
--- /dev/null
@@ -0,0 +1,31 @@
+// $Id: interface-init.hc,v 1.1 2004/07/03 00:07:42 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+#include <string.h>
+
+static inline UNUSED void
+Iface_init(struct Interface *iface)
+{
+  memset(&iface->addr, 0, sizeof (iface->addr));
+  iface->name      = 0;
+  iface->scope     = 0;
+  iface->dev       = 0;
+  iface->mac       = 0;
+  iface->nodev     = false;
+  iface->direct    = false;
+  iface->up        = true;
+}
diff --git a/vserver-start/interface-print.c b/vserver-start/interface-print.c
new file mode 100644 (file)
index 0000000..30bcd24
--- /dev/null
@@ -0,0 +1,29 @@
+// $Id: interface-print.c,v 1.2 2005/03/19 02:07:40 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "interface.h"
+
+void
+Iface_print(struct Interface const UNUSED *iface, int UNUSED fd)
+{
+  
+}
diff --git a/vserver-start/interface-read.c b/vserver-start/interface-read.c
new file mode 100644 (file)
index 0000000..dc9e10f
--- /dev/null
@@ -0,0 +1,134 @@
+// $Id: interface-read.c,v 1.3 2005/03/24 12:44:17 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "interface.h"
+
+#include <lib_internal/filecfg.h>
+#include <lib_internal/util.h>
+
+#include <netinet/in.h>
+#include <arpa/inet.h>
+
+static inline char *
+readEntryStr(PathInfo const *cfgdir, char const *file, char const *dflt)
+{
+  return FileCfg_readEntryStr(cfgdir, file, false, dflt);
+}
+
+static inline bool
+readEntryFlag(PathInfo const *cfgdir, char const *file, bool dflt)
+{
+  return FileCfg_readEntryFlag(cfgdir, file, dflt);
+}
+
+static int
+assumeNonNull(PathInfo const *cfgdir, char const *file, char const *val)
+{
+  if (val!=0) return 0;
+
+  WRITE_MSG(2, "vserver-start: no value configured for '");
+  Vwrite   (2, cfgdir->d, cfgdir->l);
+  WRITE_MSG(2, "/");
+  WRITE_STR(2, file);
+  WRITE_STR(2, "'\n");
+  return 1;
+}
+
+bool
+Iface_read(struct Interface *res, PathInfo *cfgdir,
+          struct Interface const *dflt)
+{
+  char const * extip;
+  char const * ip;
+  char const * mask;
+  char const * prefix;
+  char const * bcast;
+  bool         rc = false;
+
+    // skip 'disabled' interfaces
+  if (readEntryFlag(cfgdir, "disabled", false)) return true;
+    
+  ip          =  readEntryStr (cfgdir, "ip",       0);
+  mask        =  readEntryStr (cfgdir, "mask",     0);
+  prefix      =  readEntryStr (cfgdir, "prefix",   0);
+  extip       =  readEntryStr (cfgdir, "extip",    0);
+  bcast       =  readEntryStr (cfgdir, "bcast",    0);
+  res->mac    =  readEntryStr (cfgdir, "mac",      0);
+  res->name   =  readEntryStr (cfgdir, "name",     0);
+  res->dev    =  readEntryStr (cfgdir, "dev",      dflt ? dflt->dev   : 0);
+  res->scope  =  readEntryStr (cfgdir, "scope",    dflt ? dflt->scope : 0);
+  res->nodev  =  readEntryFlag(cfgdir, "nodev",    false);
+  res->direct = !readEntryFlag(cfgdir, "indirect", false);
+  res->up     = !readEntryFlag(cfgdir, "down",     false);
+
+  if (dflt && (
+       assumeNonNull(cfgdir, "ip",  ip) +
+       assumeNonNull(cfgdir, "dev", res->dev) +
+       (dflt->addr.ipv4.mask>0) ? 0 : (
+         (mask   ? 0 : assumeNonNull(cfgdir, "prefix", prefix)) +
+         (prefix ? 0 : assumeNonNull(cfgdir, "mask",   mask))
+         )))
+    goto err;
+
+  if (mask && prefix) {
+    WRITE_MSG(2, "vserver-start: both 'prefix' and 'mask' specified in '");
+    Vwrite   (2, cfgdir->d, cfgdir->l);
+    WRITE_MSG(2, "'\n");
+    goto err;
+  }
+
+  if (bcast)
+    res->addr.ipv4.bcast = inet_addr(bcast);
+
+  if (ip)
+    res->addr.ipv4.ip    = inet_addr(ip);
+  
+  if (extip)
+    res->addr.ipv4.extip = inet_addr(extip);
+
+  if (prefix) {
+    int                p = atoi(prefix);
+    if (p==0) {
+      WRITE_MSG(2, "vserver-start: invalid 'prefix' specified in '");
+      Vwrite   (2, cfgdir->d, cfgdir->l);
+      WRITE_MSG(2, "'\n");
+      goto err;
+    }
+      
+    res->addr.ipv4.mask = htonl(-1u << (32-p));
+  }
+  else if (mask)
+    res->addr.ipv4.mask = inet_addr(mask);
+  else if (dflt)
+    res->addr.ipv4.mask = dflt->addr.ipv4.mask;
+
+  rc = true;
+
+  err:
+  free(const_cast(void *)(bcast));
+  free(const_cast(void *)(extip));
+  free(const_cast(void *)(ip));
+  free(const_cast(void *)(mask));
+  free(const_cast(void *)(prefix));
+
+  return rc;
+}
diff --git a/vserver-start/interface-remove.c b/vserver-start/interface-remove.c
new file mode 100644 (file)
index 0000000..b3c63d4
--- /dev/null
@@ -0,0 +1,29 @@
+// $Id: interface-remove.c,v 1.2 2005/03/19 02:07:40 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "interface.h"
+
+bool
+Iface_remove(struct Interface const UNUSED *iface)
+{
+  return true;
+}
diff --git a/vserver-start/interface.c b/vserver-start/interface.c
new file mode 100644 (file)
index 0000000..20e49f4
--- /dev/null
@@ -0,0 +1,54 @@
+// $Id: interface.c,v 1.3 2004/10/19 21:11:10 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "interface.h"
+
+#include "vserver-start.h"
+#include "configuration.h"
+#include "undo.h"
+
+#include <lib_internal/util.h>
+
+static void
+Iface_removeWrapper(void const *iface)
+{
+  (void)Iface_remove(iface);
+}
+
+void
+activateInterfaces(InterfaceList const *interfaces)
+{
+  struct Interface const *     iface;
+
+  for (iface=Vector_begin_const(interfaces);
+       iface!=Vector_end_const(interfaces);
+       ++iface) {
+    if (!Iface_add(iface)) {
+      WRITE_MSG(2, "Failed to add interface ");
+      Iface_print(iface, 2);
+      WRITE_MSG(2, "\n");
+      
+      exit(1);
+    }
+    Undo_addTask(Iface_removeWrapper, iface);
+  }
+}
diff --git a/vserver-start/interface.h b/vserver-start/interface.h
new file mode 100644 (file)
index 0000000..8ed1b70
--- /dev/null
@@ -0,0 +1,63 @@
+// $Id: interface.h,v 1.3 2004/10/19 21:11:10 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_VSERVER_START_INTERFACE_H
+#define H_UTIL_VSERVER_VSERVER_START_INTERFACE_H
+
+#include "configuration.h"
+
+#include <lib_internal/util-cast.h>
+#include <lib_internal/pathinfo.h>
+#include <lib/vserver.h>
+#include <stdbool.h>
+
+struct Interface {
+    union {
+       struct {
+           uint32_t            ip;
+           uint32_t            mask;
+           uint32_t            extip;
+           uint32_t            bcast;
+       }                       ipv4;
+    }                          addr;
+       
+    char const *               name;
+    char const *               scope;
+    char const *               dev;
+    char const *               mac;
+    bool                       nodev;
+    bool                       direct;
+    bool                       up;
+};
+
+void           activateInterfaces(InterfaceList const *interfaces);
+void           deactivateInterfaces(InterfaceList const *interfaces);
+
+static void    Iface_init(struct Interface *);
+static void    Iface_free(struct Interface *);
+bool           Iface_read(struct Interface *, PathInfo *cfgdir,
+                          struct Interface const *dflt);
+bool           Iface_add(struct Interface const *);
+bool           Iface_del(struct Interface const *);
+bool           Iface_remove(struct Interface const *);
+void           Iface_print(struct Interface const *, int fd);
+
+#include "interface-init.hc"
+#include "interface-free.hc"
+
+#endif //  H_UTIL_VSERVER_VSERVER_START_INTERFACE_H
diff --git a/vserver-start/main.c b/vserver-start/main.c
new file mode 100644 (file)
index 0000000..ab7c0fb
--- /dev/null
@@ -0,0 +1,200 @@
+// $Id: main.c,v 1.5 2005/03/19 02:07:40 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver-start.h"
+#include "vshelper.h"
+#include "pathconfig.h"
+#include "interface.h"
+#include "configuration.h"
+#include "mount.h"
+#include "undo.h"
+
+#include "lib_internal/util.h"
+#include "lib_internal/errinfo.h"
+#include "lib_internal/sys_clone.h"
+#include "lib/vserver.h"
+#include "lib/internal.h"
+
+#include <sys/file.h>
+#include <sched.h>
+#include <signal.h>
+#include <unistd.h>
+#include <sys/socket.h>
+
+#define ENSC_WRAPPERS_VSERVER  1
+#define ENSC_WRAPPERS_SOCKET   1
+#define ENSC_WRAPPERS_UNISTD   1
+#define ENSC_WRAPPERS_FCNTL    1
+#define ENSC_WRAPPERS_STDLIB   1
+#include <ensc_wrappers/wrappers.h>
+
+struct Options                 opts;
+struct Configuration           cfg;
+int                            wrapper_exit_code;
+
+static void
+env2Str(char const **var, char const *env, bool req)
+{
+  char const *         tmp = getenv(env);
+  if (req && tmp==0) {
+    WRITE_MSG(2, "vserver.start: required environment variable $");
+    WRITE_STR(2, env);
+    WRITE_STR(2, " not set; aborting...\n");
+    exit(1);
+  }
+
+  *var = tmp;
+  unsetenv(env);
+}
+
+static void
+env2Bool(bool *var, char const *env, bool req)
+{
+  char const * tmp;
+  env2Str(&tmp, env, req);
+  *var = !(tmp==0 || atoi(tmp)==0);
+}
+
+static void
+initGlobals()
+{
+  env2Str (&opts.VSERVER_DIR,       "VSERVER_DIR",       true);
+  env2Str (&opts.VSERVER_NAME,      "VSERVER_NAME",      true);
+  env2Bool(&opts.OPTION_DEBUG,      "OPTION_DEBUG",      false);
+  env2Bool(&opts.OPTION_DEFAULTTTY, "OPTION_DEFAULTTTY", false);  
+}
+
+static void
+initLock()
+{
+  size_t                       l   = strlen(opts.VSERVER_DIR);
+  char                                 tmp[sizeof(LOCKDIR "/vserver..startup") + l];
+  char *                       ptr = tmp;
+  struct ErrorInformation      err = { .app = 0 };
+  int                          fd;
+
+  ptr  = Xmemcpy(ptr, LOCKDIR "/vserver.", sizeof(LOCKDIR "/vserver.")-1);
+  ((char *)(Xmemcpy(ptr, opts.VSERVER_DIR, l)))[0] = '\0';
+  ptr += canonifyVserverName(ptr);
+  ptr  = Xmemcpy(ptr, ".startup",  sizeof(".startup"));
+  *ptr = '\0';
+
+  if (!lockfile(&fd, tmp, LOCK_EX, 30, &err)) {
+    WRITE_MSG(2, "vserver.start: failed to lock '");
+    WRITE_STR(2, tmp);
+    WRITE_MSG(2, "': ");
+    ErrInfo_writeErrno(&err);
+    exit(1);
+  }
+}
+
+static void
+checkConstraints()
+{
+  xid_t                        xid;
+  bool                 is_running;
+  struct vc_vx_info    info;
+
+  xid = vc_getVserverCtx(opts.VSERVER_DIR, vcCFG_RECENT_FULL,
+                        true, &is_running);
+
+  if (xid!=VC_NOCTX && vc_get_vx_info(xid, &info)!=-1) {
+    WRITE_MSG(2, "vserver.start: vserver '");
+    WRITE_STR(2, opts.VSERVER_NAME);
+    WRITE_MSG(2, "' already running; aborting...\n");
+    exit(1);
+  }
+
+  Vshelper_doSanityCheck();
+}
+
+static void
+setCFlag(xid_t xid, uint_least64_t value)
+{
+  struct vc_ctx_flags  flags = {
+    .flagword = value,
+    .mask     = value
+  };
+
+  Evc_set_cflags(xid, &flags);
+}
+
+int main(int UNUSED argc, char UNUSED *argv[])
+{
+  Cfg_init(&cfg);
+  
+  initGlobals();
+  initLock();
+  checkConstraints();
+
+  int          sync_fd[2];
+  char         c;
+  xid_t                xid;
+  char         buf[sizeof(xid)*3 + 2];
+  PathInfo     cfgdir = { .d = opts.VSERVER_DIR, .l = strlen(opts.VSERVER_DIR) };
+
+  Esocketpair(AF_UNIX, SOCK_STREAM, 0, sync_fd);
+  Efcntl(sync_fd[0], F_SETFD, FD_CLOEXEC);
+  Efcntl(sync_fd[1], F_SETFD, FD_CLOEXEC);
+  
+  getConfiguration(&cfg, &cfgdir);
+  pid_t                pid    = sys_clone(CLONE_NEWNS|SIGCHLD, 0);
+  FatalErrnoError(pid==-1, "sys_clone()");
+  
+  switch (pid) {
+    case 0     :
+      Undo_init();
+      execScriptlets(&cfgdir, opts.VSERVER_NAME, "prepre-start");
+      activateInterfaces(&cfg.interfaces);
+      
+      xid = Evc_ctx_create(cfg.xid);
+      setCFlag(xid, VC_VXF_INFO_NAMESPACE);
+      
+      mountVserver(&cfg);
+       //      prepareInit(&cfg, &cfgdir);
+
+      Esend(sync_fd[0], &xid, sizeof xid, MSG_NOSIGNAL);
+       // 'pre-start.parent' will be executed now in the parent-context
+      Erecv(sync_fd[0], &c, 1, 0);
+      execScriptlets(&cfgdir, opts.VSERVER_NAME, "pre-start");
+
+      if (cfg.nice)
+       Enice(atoi(cfg.nice));
+      if (opts.OPTION_DEFAULTTTY)
+       setDefaultTTY(&cfgdir, 0);
+
+      
+
+      Undo_detach();
+      break;
+
+    default    :
+      Erecv(sync_fd[1], &xid, sizeof xid, 0);
+      utilvserver_fmt_uint(buf, xid);
+      Esetenv("CHILD_XID", buf, 1);
+      
+      execScriptlets(&cfgdir, opts.VSERVER_NAME, "pre-start.parent");
+      Esend(sync_fd[1], ".", 1, MSG_NOSIGNAL);
+      
+      break;
+  }
+}
diff --git a/vserver-start/mount.c b/vserver-start/mount.c
new file mode 100644 (file)
index 0000000..6f80f48
--- /dev/null
@@ -0,0 +1,184 @@
+// $Id: mount.c,v 1.2 2004/08/25 00:11:50 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "mount.h"
+#include "configuration.h"
+#include "undo.h"
+
+#include <pathconfig.h>
+
+#include <lib/internal.h>
+#include <lib_internal/command.h>
+
+#include <unistd.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <wait.h>
+#include <string.h>
+
+#define ENSC_WRAPPERS_UNISTD   1
+#define ENSC_WRAPPERS_FCNTL    1
+#include <ensc_wrappers/wrappers.h>
+
+static char const *
+findMtab(char const *vserver_mtab)
+{
+  char const *tmp;
+  
+  if (utilvserver_isFile(vserver_mtab, true)) return vserver_mtab;
+
+  tmp=CONFDIR "/.defaults/init/mtab";
+  if (utilvserver_isFile(tmp, true)) return tmp;
+
+  tmp=PKGLIBDEFAULTDIR "/mtab";
+  if (utilvserver_isFile(tmp, true)) return tmp;
+
+  return 0;
+}
+
+static void
+initMtab(struct Configuration const *cfg)
+{
+  ENSC_PI_DECLARE(mtab_subpath,  "apps/init/mtab");
+  PathInfo             mtab_path  = cfg->cfgdir;
+  char                 mtab_buf[ENSC_PI_APPSZ(mtab_path, mtab_subpath)];
+
+  PathInfo_append(&mtab_path,  &mtab_subpath,  mtab_buf);
+  char const *         mtab = findMtab(mtab_path.d);
+  pid_t                        pid;
+  int                  p[2];
+
+  Epipe(p);
+  pid = Efork();
+  if (pid==0) {
+    Undo_detach();
+    Eclose(p[1]);
+    
+    Echdir(cfg->vdir);
+    Echroot(".");
+
+    int                fd = Eopen("/etc/mtab", O_WRONLY|O_CREAT, 0644);
+    for (;;) {
+      char     buf[4096];
+      ssize_t  len = TEMP_FAILURE_RETRY(read(p[0], buf, sizeof buf));
+      if (len==0) break;
+      if (len==-1) {
+       perror("vserver-start: initMtab/read():");
+       _exit(1);
+      }
+
+      Ewrite(fd, buf, len);
+    }
+    Eclose(fd);
+    Eclose(p[0]);
+    _exit(0);
+  }
+  else {
+    Eclose(p[0]);
+
+    if (mtab!=0) {
+      int              fd = Eopen(mtab, O_RDONLY, 0644);
+
+      for (;;) {
+       char    buf[4096];
+       ssize_t len = TEMP_FAILURE_RETRY(read(fd, buf, sizeof buf));
+       if (len==0) break;
+      if (len==-1) {
+       perror("vserver-start: initMtab/read():");
+       _exit(1);
+      }
+
+       Ewrite(p[1], buf, len);
+      }
+
+      Eclose(fd);
+    }
+
+    Eclose(p[1]);
+
+    int                status;
+    TEMP_FAILURE_RETRY(wait4(pid, &status, 0,0));
+
+    if (!WIFEXITED(status) || WEXITSTATUS(status)!=0) {
+      exit(1);
+    }
+  }
+}
+
+static void
+mountVserverInternal(struct Configuration const *cfg,
+                    PathInfo const *path, bool use_chbind)
+{
+  if (!utilvserver_isFile(path->d,true)) return;
+
+  pid_t                pid = Efork();
+  if (pid==0) {
+    Undo_detach();
+
+    Echdir(cfg->vdir);
+
+    if (use_chbind) {
+       // TODO
+    }
+
+    struct Command     cmd;
+    char const *       argv[] = {
+      PROG_SECURE_MOUNT,
+      "-a",
+      "--chroot",
+      "--fstab", path->d,
+      0
+    };
+
+    Command_init(&cmd);
+    Command_setParams(&cmd, argv);
+    Command_exec(&cmd, false);
+  }
+  else {
+    int                status;
+    TEMP_FAILURE_RETRY(wait4(pid, &status, 0,0));
+
+    if (!WIFEXITED(status) || WEXITSTATUS(status)!=0)
+      exit(1);
+  }
+}
+
+void
+mountVserver(struct Configuration const *cfg)
+{
+  ENSC_PI_DECLARE(fstab_subpath,  "fstab");
+  ENSC_PI_DECLARE(fstabl_subpath, "fstab.local");
+
+  PathInfo     fstab_path  = cfg->cfgdir;
+  char         fstab_buf[ENSC_PI_APPSZ(fstab_path, fstab_subpath)];
+
+  PathInfo     fstabl_path = cfg->cfgdir;
+  char         fstabl_buf[ENSC_PI_APPSZ(fstabl_path, fstabl_subpath)];
+
+  
+  PathInfo_append(&fstab_path,  &fstab_subpath,  fstab_buf);
+  PathInfo_append(&fstabl_path, &fstabl_subpath, fstabl_buf);
+  initMtab(cfg);
+
+  mountVserverInternal(cfg, &fstab_path,  true);
+  mountVserverInternal(cfg, &fstabl_path, false);
+}
diff --git a/vserver-start/mount.h b/vserver-start/mount.h
new file mode 100644 (file)
index 0000000..2668512
--- /dev/null
@@ -0,0 +1,27 @@
+// $Id: mount.h,v 1.1 2004/08/19 15:02:57 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_VSERVER_START_MOUNT_H
+#define H_UTIL_VSERVER_VSERVER_START_MOUNT_H
+
+#include <lib_internal/pathinfo.h>
+
+struct Configuration;
+void           mountVserver(struct Configuration const *cfg);
+
+#endif //  H_UTIL_VSERVER_VSERVER_START_MOUNT_H
diff --git a/vserver-start/scriptlets.c b/vserver-start/scriptlets.c
new file mode 100644 (file)
index 0000000..9c0df65
--- /dev/null
@@ -0,0 +1,171 @@
+// $Id: scriptlets.c,v 1.3 2004/10/19 21:11:10 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver-start.h"
+
+#include <pathconfig.h>
+#include <lib_internal/command.h>
+#include <lib_internal/util.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/param.h>
+#include <unistd.h>
+#include <dirent.h>
+
+#define HAS_SUFFIX(STR, LEN, SUF) \
+  (LEN>sizeof(SUF) && strcmp(STR+LEN-sizeof(SUF), SUF)==0)
+
+static bool
+visitFile(char const *fname, char const *vname, char const *style)
+{
+  struct stat          st;
+  struct Command       cmd;
+
+  if (stat(fname, &st)==-1 ||
+      !S_ISREG(st.st_mode))
+    return false;
+
+  if ((st.st_mode & 0111)==0) {
+    WRITE_MSG(2,
+             "!!!LEGACY ALERT!!!\n"
+             "The special handling of non-executable scriptlets which allows to\n"
+             "override environment variables is not supported anymore. This change\n"
+             "was needed as 'vserver ... start' is done by a native C program now.\n"
+             "If you need the old functionality please fill a bugreport so that\n"
+             "workarounds can be found/implemented.\n"
+             "The file triggering this message was\n"
+             "    '");
+    WRITE_STR(2, fname);
+    WRITE_MSG(2, "'\n");
+
+    return false;
+  }
+
+  char const *par[] = { fname, style, vname, 0 };
+  Command_setParams(&cmd, par);
+
+  if (!Command_exec(&cmd, true) ||
+      !Command_wait(&cmd, true)) {
+    WRITE_MSG(2, "vserver-start: exec('");
+    WRITE_STR(2, fname);
+    WRITE_MSG(2, "'): ");
+    WRITE_STR(2, strerror(cmd.err));
+    WRITE_MSG(2, "; aborting...\n");
+
+    exit(1);
+  }
+
+  if (cmd.rc!=0) {
+    WRITE_MSG(2, "vserver-start: scriptlet '");
+    WRITE_STR(2, fname);
+    WRITE_MSG(2, "' failed; aborting...\n");
+    
+    exit (1);
+  }
+
+  Command_free(&cmd);
+
+  return true;
+}
+
+static bool
+visitDirentry(PathInfo const *basepath, char const *d_name,
+             char const *vname,
+             char const *style)
+{
+  size_t               l = strlen(d_name);
+  char                 path[basepath->l + l + 1];
+  char *               ptr;
+
+  if (isDotfile(d_name) ||
+      HAS_SUFFIX(d_name, l, ".rpmnew") ||
+      HAS_SUFFIX(d_name, l, ".rpmsave") ||
+      HAS_SUFFIX(d_name, l, ".rpmorig") ||
+      HAS_SUFFIX(d_name, l, ".cfsaved"))
+    return false;
+
+  ptr  = Xmemcpy(path, basepath->d, basepath->l);
+  ptr  = Xmemcpy(ptr,  d_name,      l);
+  *ptr = '\0';
+  
+  return visitFile(path, vname, style);
+}
+
+static bool
+visitPath(PathInfo const *basepath,
+         char const *vname,
+         PathInfo const *style)
+{
+  char         tmp[basepath->l + style->l + sizeof(".d/")];
+  PathInfo     path = { .d = tmp };
+  char *       ptr;
+  DIR *                dir;
+  bool         did_something = false;
+
+  ptr  = Xmemcpy(tmp, basepath->d, basepath->l);
+  ptr  = Xmemcpy(ptr, style->d,    style->l);
+  *ptr = '\0';
+  path.l = ptr-tmp;
+
+  did_something = visitFile(path.d, vname, style->d) || did_something;
+
+  ptr = Xmemcpy(ptr, ".d/", sizeof(".d/"));
+  path.l = ptr-tmp;
+  
+  dir = opendir(tmp);
+  while (dir) {
+    struct dirent *ent =  readdir(dir);
+    if (ent==0) break;
+
+    did_something = visitDirentry(&path, ent->d_name, vname, style->d) || did_something;
+  }
+  if (dir!=0) closedir(dir);
+
+  return did_something;
+}
+
+void
+execScriptlets(PathInfo const *cfgdir, char const *vname, char const *style)
+{
+  char         path_buf[MAX(cfgdir->l, sizeof(CONFDIR "/.defaults")) +
+                        sizeof("/scripts/")];
+  PathInfo     basepath = { .d = path_buf };
+  PathInfo     styledir = {
+    .d = style,
+    .l = strlen(style)
+  };
+  char *       ptr;
+  bool         doit = true;
+
+  ptr        = Xmemcpy(path_buf, cfgdir->d, cfgdir->l);
+  ptr        = Xmemcpy(ptr,      "/scripts/", sizeof("/scripts/"));
+  basepath.l = ptr-path_buf-1;
+  doit       = !visitPath(&basepath, vname, &styledir);
+
+  if (doit) {
+    ptr = Xmemcpy(path_buf, CONFDIR "/.defaults/scripts/",
+                 sizeof(CONFDIR "/.defaults/scripts/"));
+    basepath.l = ptr-path_buf-1;
+    doit = !visitPath(&basepath, vname, &styledir);
+  }
+}
diff --git a/vserver-start/undo.c b/vserver-start/undo.c
new file mode 100644 (file)
index 0000000..25b4d9e
--- /dev/null
@@ -0,0 +1,92 @@
+// $Id: undo.c,v 1.1 2004/08/19 15:02:57 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "undo.h"
+
+#include <lib_internal/util.h>
+#include <ensc_vector/vector.h>
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <assert.h>
+
+struct FuncData
+{
+    ExitFunction               fn;
+    void const *               args;
+};
+
+struct Undo
+{
+    pid_t              pid_;
+    struct Vector      funcs;
+};
+
+
+static struct Undo     undo_data = {
+  .pid_ = -1
+};
+
+static void
+atexitHandler()
+{
+  struct FuncData const *      ptr;
+
+  if (undo_data.pid_ != getpid())
+    return;    // skip 'exit()' from forked processes
+
+  for (ptr=Vector_end(&undo_data.funcs);
+       ptr!=Vector_begin(&undo_data.funcs);
+       --ptr)
+    (ptr[-1].fn)(ptr[-1].args);
+}
+
+void
+Undo_init()
+{
+  if (undo_data.pid_!=-1) {
+    WRITE_MSG(2, "Undo already initialized; internal error...\n");
+    _exit(1);
+  }
+
+  undo_data.pid_ = getpid();
+  Vector_init(&undo_data.funcs, sizeof(struct FuncData));
+  
+  atexit(&atexitHandler);
+}
+
+void
+Undo_addTask(ExitFunction fn, void const *args)
+{
+  struct FuncData      *tmp = Vector_pushback(&undo_data.funcs);
+  assert(tmp!=0); // Vector_pushback never returns a null-pointer
+
+  tmp->fn   = fn;
+  tmp->args = args;
+}
+
+void
+Undo_detach()
+{
+  Vector_free(&undo_data.funcs);
+  undo_data.pid_ = -1;
+}
diff --git a/vserver-start/undo.h b/vserver-start/undo.h
new file mode 100644 (file)
index 0000000..06ed88c
--- /dev/null
@@ -0,0 +1,28 @@
+// $Id: undo.h,v 1.1 2004/08/19 15:02:57 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_VSERVER_START_UNDO_H
+#define H_UTIL_VSERVER_VSERVER_START_UNDO_H
+
+typedef void   (*ExitFunction)(void const *);
+
+void           Undo_init();
+void           Undo_addTask(ExitFunction fn, void const *args);
+void           Undo_detach();
+
+#endif //  H_UTIL_VSERVER_VSERVER_START_UNDO_H
diff --git a/vserver-start/vserver-start.h b/vserver-start/vserver-start.h
new file mode 100644 (file)
index 0000000..52a5fe7
--- /dev/null
@@ -0,0 +1,38 @@
+// $Id: vserver-start.h,v 1.2 2004/10/19 21:11:10 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_VSERVER_START_VSERVER_START_H
+#define H_UTIL_VSERVER_VSERVER_START_VSERVER_START_H
+
+#include <lib_internal/pathinfo.h>
+#include <stdbool.h>
+
+struct Options {
+    char const *               VSERVER_DIR;
+    char const *               VSERVER_NAME;
+    bool                       OPTION_DEBUG;
+    bool                       OPTION_DEFAULTTTY;
+    bool                       OPTION_SECURE;
+};
+
+extern struct Options          opts;
+
+void   execScriptlets(PathInfo const *cfgdir, char const *name, char const *style);
+void   setDefaultTTY(PathInfo const *cfgdir, char const *dflt);
+
+#endif //  H_UTIL_VSERVER_VSERVER_START_VSERVER_START_H
diff --git a/vserver-start/vshelper.c b/vserver-start/vshelper.c
new file mode 100644 (file)
index 0000000..4193379
--- /dev/null
@@ -0,0 +1,47 @@
+// $Id: vshelper.c,v 1.2 2004/08/19 16:06:37 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "vserver-start.h"
+#include "pathconfig.h"
+
+#include <lib_internal/util.h>
+#include <lib_internal/command.h>
+
+void
+Vshelper_doSanityCheck()
+{
+  struct Command       cmd;
+  char const *         argv[] = {
+    "/bin/bash", "-c",
+    ". " PATH_UTILVSERVER_VARS ";. " PATH_FUNCTIONS "; vshelper.doSanityCheck",
+    0
+  };
+
+  Command_init(&cmd);
+  Command_setParams(&cmd, argv);
+  if (!Command_exec(&cmd, true) ||
+      !Command_wait(&cmd, true))
+    WRITE_MSG(2, "vserver-start: failed to do the vshelper-sanitycheck\n");
+
+  if (cmd.rc!=0)
+    exit(0);
+}
diff --git a/vserver-start/vshelper.h b/vserver-start/vshelper.h
new file mode 100644 (file)
index 0000000..2f2a21e
--- /dev/null
@@ -0,0 +1,25 @@
+// $Id: vshelper.h,v 1.1 2004/07/03 00:07:42 ensc Exp $    --*- c -*--
+
+// Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// 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; version 2 of the License.
+//  
+// 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.
+
+
+#ifndef H_UTIL_VSERVER_VSERVER_START_VSHELPER_H
+#define H_UTIL_VSERVER_VSERVER_START_VSHELPER_H
+
+void           Vshelper_doSanityCheck();
+
+
+#endif //  H_UTIL_VSERVER_VSERVER_START_VSHELPER_H